citeclaw 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1723) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +152 -0
  3. package/app.js +318 -0
  4. package/config.dev.yaml +124 -0
  5. package/config.prod.yaml +123 -0
  6. package/config.yaml +0 -0
  7. package/lib/Citation.js +101 -0
  8. package/lib/CitoidError.js +61 -0
  9. package/lib/CitoidRequest.js +150 -0
  10. package/lib/CitoidResponse.js +44 -0
  11. package/lib/CitoidService.js +1118 -0
  12. package/lib/Exporter.js +1052 -0
  13. package/lib/OutgoingRequestThrottle.js +96 -0
  14. package/lib/Scraper.js +617 -0
  15. package/lib/Translator.js +76 -0
  16. package/lib/ZoteroService.js +220 -0
  17. package/lib/api-util.js +125 -0
  18. package/lib/external-apis/CrossRefService.js +122 -0
  19. package/lib/external-apis/OpenAlexService.js +245 -0
  20. package/lib/external-apis/PubMedService.js +82 -0
  21. package/lib/external-apis/SemanticScholarService.js +221 -0
  22. package/lib/external-apis/WaybackMachine.js +92 -0
  23. package/lib/hostIsAllowed.js +128 -0
  24. package/lib/swagger-ui.js +104 -0
  25. package/lib/translators/README.md +12 -0
  26. package/lib/translators/bePress.js +319 -0
  27. package/lib/translators/coins.js +360 -0
  28. package/lib/translators/crossRef.js +485 -0
  29. package/lib/translators/dublinCore.js +215 -0
  30. package/lib/translators/general.js +157 -0
  31. package/lib/translators/openGraph.js +177 -0
  32. package/lib/translators/util/index.js +209 -0
  33. package/lib/unshorten.js +109 -0
  34. package/lib/util.js +410 -0
  35. package/lib/zotero/cachedTypes.js +232 -0
  36. package/lib/zotero/typeSchemaData.js +366 -0
  37. package/package.json +121 -0
  38. package/routes/citoid.js +101 -0
  39. package/routes/info.js +81 -0
  40. package/routes/root.js +51 -0
  41. package/scripts/botcite.js +5021 -0
  42. package/scripts/citeclaw.js +10 -0
  43. package/server.js +12 -0
  44. package/spec.yaml +156 -0
  45. package/targets.yaml +2 -0
  46. package/vendor/translators-official/ABC News Australia.js +224 -0
  47. package/vendor/translators-official/ACLS Humanities EBook.js +165 -0
  48. package/vendor/translators-official/ACLWeb.js +600 -0
  49. package/vendor/translators-official/ACM Digital Library.js +708 -0
  50. package/vendor/translators-official/ACM Queue.js +391 -0
  51. package/vendor/translators-official/ACS Publications.js +633 -0
  52. package/vendor/translators-official/ADS Bibcode.js +664 -0
  53. package/vendor/translators-official/AEA Web.js +450 -0
  54. package/vendor/translators-official/AGRIS.js +311 -0
  55. package/vendor/translators-official/AIP.js +295 -0
  56. package/vendor/translators-official/AMS Journals.js +136 -0
  57. package/vendor/translators-official/AMS MathSciNet (Legacy).js +313 -0
  58. package/vendor/translators-official/AMS MathSciNet.js +288 -0
  59. package/vendor/translators-official/APA PsycNET.js +915 -0
  60. package/vendor/translators-official/APN.ru.js +132 -0
  61. package/vendor/translators-official/APS-Physics.js +204 -0
  62. package/vendor/translators-official/APS.js +542 -0
  63. package/vendor/translators-official/ARTFL Encyclopedie.js +283 -0
  64. package/vendor/translators-official/ARTnews.js +155 -0
  65. package/vendor/translators-official/ARTstor.js +619 -0
  66. package/vendor/translators-official/ASCE.js +199 -0
  67. package/vendor/translators-official/ASCO Meeting Library.js +153 -0
  68. package/vendor/translators-official/ASTIS.js +337 -0
  69. package/vendor/translators-official/ATS International Journal.js +290 -0
  70. package/vendor/translators-official/Access Engineering.js +384 -0
  71. package/vendor/translators-official/Access Medicine.js +343 -0
  72. package/vendor/translators-official/Access Science.js +391 -0
  73. package/vendor/translators-official/Adam Matthew Digital.js +405 -0
  74. package/vendor/translators-official/Agencia del ISBN.js +77 -0
  75. package/vendor/translators-official/Ahval News.js +309 -0
  76. package/vendor/translators-official/Air University Journals.js +236 -0
  77. package/vendor/translators-official/Airiti.js +423 -0
  78. package/vendor/translators-official/Alexander Street Press.js +198 -0
  79. package/vendor/translators-official/AllAfrica.js +291 -0
  80. package/vendor/translators-official/Alsharekh.js +242 -0
  81. package/vendor/translators-official/AlterNet.js +134 -0
  82. package/vendor/translators-official/Aluka.js +261 -0
  83. package/vendor/translators-official/Amazon.js +1043 -0
  84. package/vendor/translators-official/American Archive of Public Broadcasting.js +592 -0
  85. package/vendor/translators-official/American Institute of Aeronautics and Astronautics.js +210 -0
  86. package/vendor/translators-official/American Prospect.js +114 -0
  87. package/vendor/translators-official/Anarchist Library.js +382 -0
  88. package/vendor/translators-official/Ancestry.com US Federal Census.js +164 -0
  89. package/vendor/translators-official/Annual Reviews.js +329 -0
  90. package/vendor/translators-official/Antikvarium.hu.js +280 -0
  91. package/vendor/translators-official/AquaDocs.js +390 -0
  92. package/vendor/translators-official/Archeion.js +249 -0
  93. package/vendor/translators-official/Archiv fuer Sozialgeschichte.js +157 -0
  94. package/vendor/translators-official/Archive Ouverte en Sciences de l'Information et de la Communication (AOSIC).js +179 -0
  95. package/vendor/translators-official/Archives Canada.js +142 -0
  96. package/vendor/translators-official/Ariana News.js +203 -0
  97. package/vendor/translators-official/Art Institute of Chicago.js +279 -0
  98. package/vendor/translators-official/Artefacts Canada.js +192 -0
  99. package/vendor/translators-official/Artforum.js +438 -0
  100. package/vendor/translators-official/Atlanta Journal-Constitution.js +311 -0
  101. package/vendor/translators-official/Atypon Journals.js +1204 -0
  102. package/vendor/translators-official/AustLII and NZLII.js +604 -0
  103. package/vendor/translators-official/Australian Dictionary of Biography.js +196 -0
  104. package/vendor/translators-official/BAILII.js +176 -0
  105. package/vendor/translators-official/BBC Genome.js +254 -0
  106. package/vendor/translators-official/BBC.js +430 -0
  107. package/vendor/translators-official/BIBSYS.js +112 -0
  108. package/vendor/translators-official/BOCC.js +217 -0
  109. package/vendor/translators-official/BOE.js +229 -0
  110. package/vendor/translators-official/BOFiP-Impots.js +132 -0
  111. package/vendor/translators-official/Baidu Scholar.js +276 -0
  112. package/vendor/translators-official/Bangkok Post.js +216 -0
  113. package/vendor/translators-official/Baruch Foundation.js +175 -0
  114. package/vendor/translators-official/Beobachter.js +175 -0
  115. package/vendor/translators-official/Bezneng Gajit.js +92 -0
  116. package/vendor/translators-official/BibLaTeX.js +888 -0
  117. package/vendor/translators-official/BibTeX.js +4236 -0
  118. package/vendor/translators-official/Biblio.com.js +216 -0
  119. package/vendor/translators-official/Bibliontology RDF.js +1166 -0
  120. package/vendor/translators-official/Biblioteca Nacional de Maestros.js +213 -0
  121. package/vendor/translators-official/Bibliotheque et Archives Nationale du Quebec (Pistard).js +147 -0
  122. package/vendor/translators-official/Bibliotheque et Archives Nationales du Quebec.js +266 -0
  123. package/vendor/translators-official/Bibliotheque nationale de France.js +872 -0
  124. package/vendor/translators-official/BioMed Central.js +585 -0
  125. package/vendor/translators-official/BioOne.js +233 -0
  126. package/vendor/translators-official/Bioconductor.js +343 -0
  127. package/vendor/translators-official/Blaetter.js +192 -0
  128. package/vendor/translators-official/Blogger.js +244 -0
  129. package/vendor/translators-official/Bloomberg.js +205 -0
  130. package/vendor/translators-official/Bloomsbury Food Library.js +296 -0
  131. package/vendor/translators-official/Bluesky.js +195 -0
  132. package/vendor/translators-official/BnF ISBN.js +129 -0
  133. package/vendor/translators-official/Bookmarks.js +282 -0
  134. package/vendor/translators-official/Bookshop.org.js +223 -0
  135. package/vendor/translators-official/Boston Review.js +332 -0
  136. package/vendor/translators-official/Bosworth Toller's Anglo-Saxon Dictionary Online.js +496 -0
  137. package/vendor/translators-official/Bracero History Archive.js +200 -0
  138. package/vendor/translators-official/Brill.js +434 -0
  139. package/vendor/translators-official/Brukerhandboken.js +153 -0
  140. package/vendor/translators-official/Bryn Mawr Classical Review.js +303 -0
  141. package/vendor/translators-official/Bundesgesetzblatt.js +231 -0
  142. package/vendor/translators-official/Business Standard.js +151 -0
  143. package/vendor/translators-official/CABI - CAB Abstracts.js +317 -0
  144. package/vendor/translators-official/CAOD.js +260 -0
  145. package/vendor/translators-official/CBC.js +439 -0
  146. package/vendor/translators-official/CCfr (BnF).js +162 -0
  147. package/vendor/translators-official/CERN Document Server.js +277 -0
  148. package/vendor/translators-official/CEUR Workshop Proceedings.js +145 -0
  149. package/vendor/translators-official/CFF References.js +170 -0
  150. package/vendor/translators-official/CFF.js +113 -0
  151. package/vendor/translators-official/CIA World Factbook.js +128 -0
  152. package/vendor/translators-official/CLACSO.js +226 -0
  153. package/vendor/translators-official/CLASE.js +135 -0
  154. package/vendor/translators-official/CNKI.js +731 -0
  155. package/vendor/translators-official/COBISS.js +1945 -0
  156. package/vendor/translators-official/COinS.js +336 -0
  157. package/vendor/translators-official/CQ Press.js +418 -0
  158. package/vendor/translators-official/CROSBI.js +227 -0
  159. package/vendor/translators-official/CSIRO Publishing.js +139 -0
  160. package/vendor/translators-official/CSL JSON.js +203 -0
  161. package/vendor/translators-official/CSV.js +294 -0
  162. package/vendor/translators-official/Cairn.info.js +368 -0
  163. package/vendor/translators-official/CalMatters.js +228 -0
  164. package/vendor/translators-official/Calisphere.js +355 -0
  165. package/vendor/translators-official/Camara Brasileira do Livro ISBN.js +842 -0
  166. package/vendor/translators-official/Cambridge Core.js +580 -0
  167. package/vendor/translators-official/Cambridge Engage Preprints.js +276 -0
  168. package/vendor/translators-official/CanLII.js +284 -0
  169. package/vendor/translators-official/Canada.com.js +171 -0
  170. package/vendor/translators-official/Canadian Letters and Images.js +148 -0
  171. package/vendor/translators-official/Canadiana.ca.js +196 -0
  172. package/vendor/translators-official/Cascadilla Proceedings Project.js +390 -0
  173. package/vendor/translators-official/Cell Press.js +516 -0
  174. package/vendor/translators-official/Central and Eastern European Online Library Journals.js +313 -0
  175. package/vendor/translators-official/Champlain Society - Collection.js +220 -0
  176. package/vendor/translators-official/ChatGPT.js +185 -0
  177. package/vendor/translators-official/Chicago Journal of Theoretical Computer Science.js +203 -0
  178. package/vendor/translators-official/Christian Science Monitor.js +148 -0
  179. package/vendor/translators-official/Chronicling America.js +131 -0
  180. package/vendor/translators-official/CiNii Research.js +168 -0
  181. package/vendor/translators-official/Citavi 5 XML.js +516 -0
  182. package/vendor/translators-official/CiteSeer.js +196 -0
  183. package/vendor/translators-official/Citizen Lab.js +347 -0
  184. package/vendor/translators-official/Civilization.ca.js +146 -0
  185. package/vendor/translators-official/Climate Change and Human Health Literature Portal.js +283 -0
  186. package/vendor/translators-official/Clinical Key.js +367 -0
  187. package/vendor/translators-official/Code4Lib Journal.js +143 -0
  188. package/vendor/translators-official/Colorado State Legislature.js +215 -0
  189. package/vendor/translators-official/Columbia University Press.js +238 -0
  190. package/vendor/translators-official/Common-Place.js +218 -0
  191. package/vendor/translators-official/Computer History Museum Archive.js +1319 -0
  192. package/vendor/translators-official/Copernicus.js +461 -0
  193. package/vendor/translators-official/Cornell LII.js +252 -0
  194. package/vendor/translators-official/Cornell University Press.js +235 -0
  195. package/vendor/translators-official/CourtListener.js +265 -0
  196. package/vendor/translators-official/Crossref REST.js +1757 -0
  197. package/vendor/translators-official/Crossref Unixref XML.js +965 -0
  198. package/vendor/translators-official/Current Affairs.js +160 -0
  199. package/vendor/translators-official/DABI.js +476 -0
  200. package/vendor/translators-official/DAI-Zenon.js +392 -0
  201. package/vendor/translators-official/DART-Europe.js +176 -0
  202. package/vendor/translators-official/DBLP Computer Science Bibliography.js +462 -0
  203. package/vendor/translators-official/DBpia.js +233 -0
  204. package/vendor/translators-official/DEPATISnet.js +373 -0
  205. package/vendor/translators-official/DOAJ.js +243 -0
  206. package/vendor/translators-official/DOI Content Negotiation.js +352 -0
  207. package/vendor/translators-official/DOI.js +322 -0
  208. package/vendor/translators-official/DPLA.js +425 -0
  209. package/vendor/translators-official/DSpace Intermediate Metadata.js +208 -0
  210. package/vendor/translators-official/Dagens Nyheter.js +369 -0
  211. package/vendor/translators-official/Dagstuhl Research Online Publication Server.js +276 -0
  212. package/vendor/translators-official/Dar Almandumah.js +253 -0
  213. package/vendor/translators-official/Data.gov.js +225 -0
  214. package/vendor/translators-official/Databrary.js +184 -0
  215. package/vendor/translators-official/Datacite JSON.js +1182 -0
  216. package/vendor/translators-official/Dataverse.js +418 -0
  217. package/vendor/translators-official/Daum News.js +139 -0
  218. package/vendor/translators-official/De Gruyter Brill.js +460 -0
  219. package/vendor/translators-official/Defense Technical Information Center.js +146 -0
  220. package/vendor/translators-official/Delpher.js +413 -0
  221. package/vendor/translators-official/Demographic Research.js +164 -0
  222. package/vendor/translators-official/Denik CZ.js +273 -0
  223. package/vendor/translators-official/Der Freitag.js +236 -0
  224. package/vendor/translators-official/Der Spiegel.js +479 -0
  225. package/vendor/translators-official/Desiring God.js +216 -0
  226. package/vendor/translators-official/Deutsche Fotothek.js +364 -0
  227. package/vendor/translators-official/Deutsche Nationalbibliothek.js +594 -0
  228. package/vendor/translators-official/Dialnet.js +258 -0
  229. package/vendor/translators-official/Die Zeit.js +378 -0
  230. package/vendor/translators-official/DigiZeitschriften.js +269 -0
  231. package/vendor/translators-official/Digital Humanities Quarterly.js +207 -0
  232. package/vendor/translators-official/Digital Spy.js +215 -0
  233. package/vendor/translators-official/Dimensions.js +233 -0
  234. package/vendor/translators-official/Douban.js +316 -0
  235. package/vendor/translators-official/Dreier Neuerscheinungsdienst.js +209 -0
  236. package/vendor/translators-official/DrugBank.ca.js +209 -0
  237. package/vendor/translators-official/Dryad Digital Repository.js +323 -0
  238. package/vendor/translators-official/Duke University Press Books.js +250 -0
  239. package/vendor/translators-official/E-periodica Switzerland.js +347 -0
  240. package/vendor/translators-official/EBSCO Discovery Layer.js +159 -0
  241. package/vendor/translators-official/EBSCOhost.js +592 -0
  242. package/vendor/translators-official/EIDR.js +184 -0
  243. package/vendor/translators-official/EPA National Library Catalog.js +245 -0
  244. package/vendor/translators-official/ERIC.js +986 -0
  245. package/vendor/translators-official/ESpacenet.js +465 -0
  246. package/vendor/translators-official/EUR-Lex.js +418 -0
  247. package/vendor/translators-official/Eastview.js +336 -0
  248. package/vendor/translators-official/Edinburgh University Press Journals.js +178 -0
  249. package/vendor/translators-official/Education Week.js +197 -0
  250. package/vendor/translators-official/El Comercio (Peru).js +347 -0
  251. package/vendor/translators-official/El Pais.js +262 -0
  252. package/vendor/translators-official/Electronic Colloquium on Computational Complexity.js +230 -0
  253. package/vendor/translators-official/Elicit.js +120 -0
  254. package/vendor/translators-official/Elsevier Health Journals.js +531 -0
  255. package/vendor/translators-official/Elsevier Pure.js +420 -0
  256. package/vendor/translators-official/Embedded Metadata.js +1978 -0
  257. package/vendor/translators-official/Emerald Insight.js +626 -0
  258. package/vendor/translators-official/Encyclopedia of Chicago.js +162 -0
  259. package/vendor/translators-official/Encyclopedia of Korean Culture.js +221 -0
  260. package/vendor/translators-official/Endnote XML.js +1407 -0
  261. package/vendor/translators-official/Engineering Village.js +139 -0
  262. package/vendor/translators-official/Envidat.js +331 -0
  263. package/vendor/translators-official/Epicurious.js +144 -0
  264. package/vendor/translators-official/Erudit.js +272 -0
  265. package/vendor/translators-official/Euclid.js +220 -0
  266. package/vendor/translators-official/EurasiaNet.js +109 -0
  267. package/vendor/translators-official/EurogamerUSgamer.js +380 -0
  268. package/vendor/translators-official/Europe PMC.js +448 -0
  269. package/vendor/translators-official/Evernote.js +104 -0
  270. package/vendor/translators-official/F1000 Research.js +655 -0
  271. package/vendor/translators-official/FAO Knowledge Repository.js +598 -0
  272. package/vendor/translators-official/FAOLEX Database.js +811 -0
  273. package/vendor/translators-official/FAZ.NET.js +231 -0
  274. package/vendor/translators-official/Fachportal Padagogik.js +839 -0
  275. package/vendor/translators-official/Factiva.js +302 -0
  276. package/vendor/translators-official/Failed Architecture.js +114 -0
  277. package/vendor/translators-official/Fairfax Australia.js +200 -0
  278. package/vendor/translators-official/Fatcat.js +425 -0
  279. package/vendor/translators-official/Figshare.js +191 -0
  280. package/vendor/translators-official/Financial Times.js +187 -0
  281. package/vendor/translators-official/Finna.js +357 -0
  282. package/vendor/translators-official/Flickr.js +318 -0
  283. package/vendor/translators-official/Foreign Affairs.js +485 -0
  284. package/vendor/translators-official/Foreign Policy.js +146 -0
  285. package/vendor/translators-official/FreeCite.js +95 -0
  286. package/vendor/translators-official/FreePatentsOnline.js +265 -0
  287. package/vendor/translators-official/Frieze.js +243 -0
  288. package/vendor/translators-official/Frontiers.js +667 -0
  289. package/vendor/translators-official/GMS German Medical Science.js +319 -0
  290. package/vendor/translators-official/GPO Access e-CFR.js +134 -0
  291. package/vendor/translators-official/Gale Databases.js +324 -0
  292. package/vendor/translators-official/GaleGDC.js +189 -0
  293. package/vendor/translators-official/Galegroup.js +327 -0
  294. package/vendor/translators-official/Gallica.js +194 -0
  295. package/vendor/translators-official/Game Studies.js +155 -0
  296. package/vendor/translators-official/GameSpot.js +199 -0
  297. package/vendor/translators-official/GameStar GamePro.js +198 -0
  298. package/vendor/translators-official/Gasyrlar Awazy.js +156 -0
  299. package/vendor/translators-official/Gemeinsamer Bibliotheksverbund ISBN.js +23 -0
  300. package/vendor/translators-official/Gene Ontology.js +128 -0
  301. package/vendor/translators-official/GitHub.js +501 -0
  302. package/vendor/translators-official/Globes.js +243 -0
  303. package/vendor/translators-official/Gmail.js +64 -0
  304. package/vendor/translators-official/Goodreads.js +219 -0
  305. package/vendor/translators-official/Google Books.js +552 -0
  306. package/vendor/translators-official/Google Gemini.js +116 -0
  307. package/vendor/translators-official/Google Patents.js +959 -0
  308. package/vendor/translators-official/Google Play.js +186 -0
  309. package/vendor/translators-official/Google Presentation.js +104 -0
  310. package/vendor/translators-official/Google Research.js +221 -0
  311. package/vendor/translators-official/Google Scholar.js +1361 -0
  312. package/vendor/translators-official/Gulag Many Days, Many Lives.js +179 -0
  313. package/vendor/translators-official/HAL.js +536 -0
  314. package/vendor/translators-official/HCSP.js +312 -0
  315. package/vendor/translators-official/HUDOC.js +650 -0
  316. package/vendor/translators-official/Haaretz.js +562 -0
  317. package/vendor/translators-official/Habr.js +232 -0
  318. package/vendor/translators-official/Handelszeitung.js +273 -0
  319. package/vendor/translators-official/Hanrei Watch.js +123 -0
  320. package/vendor/translators-official/Harper's Magazine.js +365 -0
  321. package/vendor/translators-official/Harvard Business Review.js +326 -0
  322. package/vendor/translators-official/Harvard Caselaw Access Project.js +244 -0
  323. package/vendor/translators-official/Harvard University Press Books.js +286 -0
  324. package/vendor/translators-official/HathiTrust.js +311 -0
  325. package/vendor/translators-official/HeinOnline.js +280 -0
  326. package/vendor/translators-official/Heise.js +200 -0
  327. package/vendor/translators-official/Herder.js +236 -0
  328. package/vendor/translators-official/HighBeam.js +198 -0
  329. package/vendor/translators-official/HighWire 2.0.js +1355 -0
  330. package/vendor/translators-official/HighWire.js +209 -0
  331. package/vendor/translators-official/Hindawi Publishers.js +177 -0
  332. package/vendor/translators-official/Hispanic-American Periodical Index.js +236 -0
  333. package/vendor/translators-official/Homeland Security Digital Library.js +426 -0
  334. package/vendor/translators-official/Hrvatska enciklopedija.js +118 -0
  335. package/vendor/translators-official/Huff Post.js +223 -0
  336. package/vendor/translators-official/Human Rights Watch.js +450 -0
  337. package/vendor/translators-official/IBISWorld.js +171 -0
  338. package/vendor/translators-official/IDEA ALM.js +536 -0
  339. package/vendor/translators-official/IEEE Computer Society.js +429 -0
  340. package/vendor/translators-official/IEEE Xplore.js +1000 -0
  341. package/vendor/translators-official/IETF.js +451 -0
  342. package/vendor/translators-official/IGN.js +136 -0
  343. package/vendor/translators-official/IMDb.js +566 -0
  344. package/vendor/translators-official/INSPIRE.js +247 -0
  345. package/vendor/translators-official/IPCC.js +757 -0
  346. package/vendor/translators-official/ISTC.js +181 -0
  347. package/vendor/translators-official/Idref.js +179 -0
  348. package/vendor/translators-official/In These Times.js +196 -0
  349. package/vendor/translators-official/Ined.js +558 -0
  350. package/vendor/translators-official/InfoTrac.js +279 -0
  351. package/vendor/translators-official/Informationssystem Medienpaedagogik.js +305 -0
  352. package/vendor/translators-official/IngentaConnect.js +312 -0
  353. package/vendor/translators-official/Inside Higher Ed.js +167 -0
  354. package/vendor/translators-official/Insignia OPAC.js +114 -0
  355. package/vendor/translators-official/Institute of Contemporary Art.js +180 -0
  356. package/vendor/translators-official/Institute of Physics.js +340 -0
  357. package/vendor/translators-official/Integrum.js +173 -0
  358. package/vendor/translators-official/Intellixir.js +264 -0
  359. package/vendor/translators-official/Inter-Research Science Center.js +185 -0
  360. package/vendor/translators-official/International Nuclear Information System.js +285 -0
  361. package/vendor/translators-official/Internet Archive Scholar.js +106 -0
  362. package/vendor/translators-official/Internet Archive Wayback Machine.js +152 -0
  363. package/vendor/translators-official/Internet Archive.js +552 -0
  364. package/vendor/translators-official/InvenioRDM.js +1250 -0
  365. package/vendor/translators-official/Isidore.js +235 -0
  366. package/vendor/translators-official/J-Stage.js +272 -0
  367. package/vendor/translators-official/JETS.js +122 -0
  368. package/vendor/translators-official/JISC Historical Texts.js +273 -0
  369. package/vendor/translators-official/JRC Publications Repository.js +569 -0
  370. package/vendor/translators-official/JSTOR.js +821 -0
  371. package/vendor/translators-official/Jahrbuch.js +213 -0
  372. package/vendor/translators-official/Japan Times Online.js +138 -0
  373. package/vendor/translators-official/Journal of Electronic Publishing.js +147 -0
  374. package/vendor/translators-official/Journal of Extension.js +288 -0
  375. package/vendor/translators-official/Journal of Machine Learning Research.js +441 -0
  376. package/vendor/translators-official/Journal of Religion and Society.js +174 -0
  377. package/vendor/translators-official/JurPC.js +274 -0
  378. package/vendor/translators-official/Juricaf.js +141 -0
  379. package/vendor/translators-official/Juris.js +728 -0
  380. package/vendor/translators-official/K10plus ISBN.js +386 -0
  381. package/vendor/translators-official/KStudy.js +632 -0
  382. package/vendor/translators-official/Kanopy.js +358 -0
  383. package/vendor/translators-official/Khaama Press.js +249 -0
  384. package/vendor/translators-official/KiM.js +259 -0
  385. package/vendor/translators-official/KitapYurdu.com.js +376 -0
  386. package/vendor/translators-official/Kommersant.js +174 -0
  387. package/vendor/translators-official/Korean National Library.js +621 -0
  388. package/vendor/translators-official/L'Annee Philologique.js +267 -0
  389. package/vendor/translators-official/LA Times.js +239 -0
  390. package/vendor/translators-official/LIBRIS ISBN.js +103 -0
  391. package/vendor/translators-official/LIVIVO.js +260 -0
  392. package/vendor/translators-official/LWN.net.js +350 -0
  393. package/vendor/translators-official/La Croix.js +237 -0
  394. package/vendor/translators-official/La Nacion (Argentina).js +231 -0
  395. package/vendor/translators-official/La Presse.js +218 -0
  396. package/vendor/translators-official/La Republica (Peru).js +174 -0
  397. package/vendor/translators-official/Lagen.nu.js +214 -0
  398. package/vendor/translators-official/Landesbibliographie Baden-Wurttemberg.js +324 -0
  399. package/vendor/translators-official/Lapham's Quarterly.js +1062 -0
  400. package/vendor/translators-official/Le Devoir.js +167 -0
  401. package/vendor/translators-official/Le Figaro.js +225 -0
  402. package/vendor/translators-official/Le Maitron.js +484 -0
  403. package/vendor/translators-official/Le Monde.js +245 -0
  404. package/vendor/translators-official/Le monde diplomatique.js +200 -0
  405. package/vendor/translators-official/Legifrance.js +641 -0
  406. package/vendor/translators-official/Legislative Insight.js +406 -0
  407. package/vendor/translators-official/Lexis+.js +264 -0
  408. package/vendor/translators-official/LexisNexis.js +505 -0
  409. package/vendor/translators-official/Libraries Tasmania.js +778 -0
  410. package/vendor/translators-official/Library Catalog (Aleph).js +385 -0
  411. package/vendor/translators-official/Library Catalog (Amicus).js +254 -0
  412. package/vendor/translators-official/Library Catalog (Aquabrowser).js +253 -0
  413. package/vendor/translators-official/Library Catalog (BiblioCommons).js +249 -0
  414. package/vendor/translators-official/Library Catalog (Blacklight).js +341 -0
  415. package/vendor/translators-official/Library Catalog (Capita Prism).js +162 -0
  416. package/vendor/translators-official/Library Catalog (DRA).js +203 -0
  417. package/vendor/translators-official/Library Catalog (Dynix).js +315 -0
  418. package/vendor/translators-official/Library Catalog (EBSCO Locate).js +442 -0
  419. package/vendor/translators-official/Library Catalog (Encore).js +211 -0
  420. package/vendor/translators-official/Library Catalog (InnoPAC).js +305 -0
  421. package/vendor/translators-official/Library Catalog (Koha).js +225 -0
  422. package/vendor/translators-official/Library Catalog (Mango).js +285 -0
  423. package/vendor/translators-official/Library Catalog (OPALS).js +200 -0
  424. package/vendor/translators-official/Library Catalog (PICA).js +2120 -0
  425. package/vendor/translators-official/Library Catalog (PICA2).js +331 -0
  426. package/vendor/translators-official/Library Catalog (Pika).js +488 -0
  427. package/vendor/translators-official/Library Catalog (Polaris).js +183 -0
  428. package/vendor/translators-official/Library Catalog (Quolto).js +320 -0
  429. package/vendor/translators-official/Library Catalog (RERO ILS).js +754 -0
  430. package/vendor/translators-official/Library Catalog (SIRSI eLibrary).js +407 -0
  431. package/vendor/translators-official/Library Catalog (SIRSI).js +452 -0
  432. package/vendor/translators-official/Library Catalog (SLIMS).js +146 -0
  433. package/vendor/translators-official/Library Catalog (TIND ILS).js +773 -0
  434. package/vendor/translators-official/Library Catalog (TLCYouSeeMore).js +132 -0
  435. package/vendor/translators-official/Library Catalog (TinREAD).js +277 -0
  436. package/vendor/translators-official/Library Catalog (VTLS).js +125 -0
  437. package/vendor/translators-official/Library Catalog (Visual Library 2021).js +765 -0
  438. package/vendor/translators-official/Library Catalog (Voyager 7).js +199 -0
  439. package/vendor/translators-official/Library Catalog (Voyager).js +212 -0
  440. package/vendor/translators-official/Library Genesis.js +337 -0
  441. package/vendor/translators-official/Library Hub Discover.js +359 -0
  442. package/vendor/translators-official/Library of Congress Digital Collections.js +869 -0
  443. package/vendor/translators-official/Library of Congress ISBN.js +86 -0
  444. package/vendor/translators-official/LingBuzz.js +359 -0
  445. package/vendor/translators-official/Lippincott Williams and Wilkins.js +341 -0
  446. package/vendor/translators-official/Literary Hub.js +950 -0
  447. package/vendor/translators-official/Litres.js +236 -0
  448. package/vendor/translators-official/LiveJournal.js +219 -0
  449. package/vendor/translators-official/London Review of Books.js +291 -0
  450. package/vendor/translators-official/LookUs.js +260 -0
  451. package/vendor/translators-official/Lulu.js +264 -0
  452. package/vendor/translators-official/MAB2.js +373 -0
  453. package/vendor/translators-official/MARC.js +1080 -0
  454. package/vendor/translators-official/MARCXML.js +489 -0
  455. package/vendor/translators-official/MCV.js +258 -0
  456. package/vendor/translators-official/MDPI Journals.js +356 -0
  457. package/vendor/translators-official/MEDLINEnbib.js +1561 -0
  458. package/vendor/translators-official/METS.js +384 -0
  459. package/vendor/translators-official/MIDAS Journals.js +343 -0
  460. package/vendor/translators-official/MIT Press Books.js +637 -0
  461. package/vendor/translators-official/MODS.js +2545 -0
  462. package/vendor/translators-official/MPG PuRe.js +541 -0
  463. package/vendor/translators-official/Mailman.js +136 -0
  464. package/vendor/translators-official/Mainichi Daily News.js +189 -0
  465. package/vendor/translators-official/Mastodon.js +198 -0
  466. package/vendor/translators-official/Matbugat.ru.js +110 -0
  467. package/vendor/translators-official/Max Planck Institute for the History of Science Virtual Laboratory Library.js +136 -0
  468. package/vendor/translators-official/Medium.js +208 -0
  469. package/vendor/translators-official/MetaLib.js +126 -0
  470. package/vendor/translators-official/Microbiology Society Journals.js +343 -0
  471. package/vendor/translators-official/Microsoft Academic.js +424 -0
  472. package/vendor/translators-official/Mikromarc.js +207 -0
  473. package/vendor/translators-official/Milli Kutuphane.js +244 -0
  474. package/vendor/translators-official/Musee du Louvre.js +265 -0
  475. package/vendor/translators-official/NASA ADS.js +889 -0
  476. package/vendor/translators-official/NASA NTRS.js +610 -0
  477. package/vendor/translators-official/NCBI Nucleotide.js +227 -0
  478. package/vendor/translators-official/NPR.js +341 -0
  479. package/vendor/translators-official/NRC Research Press.js +181 -0
  480. package/vendor/translators-official/NRC.nl.js +226 -0
  481. package/vendor/translators-official/NTSB Accident Reports.js +226 -0
  482. package/vendor/translators-official/NYPL Menus.js +275 -0
  483. package/vendor/translators-official/NYPL Research Catalog.js +458 -0
  484. package/vendor/translators-official/NYTimes.com.js +947 -0
  485. package/vendor/translators-official/NZZ.ch.js +272 -0
  486. package/vendor/translators-official/Nagoya University OPAC.js +336 -0
  487. package/vendor/translators-official/National Academies Press.js +243 -0
  488. package/vendor/translators-official/National Agriculture Library.js +524 -0
  489. package/vendor/translators-official/National Archives UK Case Law.js +509 -0
  490. package/vendor/translators-official/National Archives of Australia.js +522 -0
  491. package/vendor/translators-official/National Archives of South Africa.js +122 -0
  492. package/vendor/translators-official/National Bureau of Economic Research.js +363 -0
  493. package/vendor/translators-official/National Diet Library Catalogue.js +333 -0
  494. package/vendor/translators-official/National Gallery of Art - USA.js +149 -0
  495. package/vendor/translators-official/National Gallery of Australia.js +252 -0
  496. package/vendor/translators-official/National Library of Australia (new catalog).js +223 -0
  497. package/vendor/translators-official/National Library of Belarus.js +171 -0
  498. package/vendor/translators-official/National Library of Norway.js +310 -0
  499. package/vendor/translators-official/National Library of Poland ISBN.js +140 -0
  500. package/vendor/translators-official/National Post.js +186 -0
  501. package/vendor/translators-official/National Technical Reports Library.js +276 -0
  502. package/vendor/translators-official/National Transportation Library ROSA P.js +562 -0
  503. package/vendor/translators-official/Nature Publishing Group.js +3394 -0
  504. package/vendor/translators-official/Neural Information Processing Systems.js +385 -0
  505. package/vendor/translators-official/New Left Review.js +245 -0
  506. package/vendor/translators-official/New Zealand Herald.js +282 -0
  507. package/vendor/translators-official/Newlines Magazine.js +190 -0
  508. package/vendor/translators-official/News Corp Australia.js +251 -0
  509. package/vendor/translators-official/NewsBank.js +202 -0
  510. package/vendor/translators-official/NewsnetTamedia.js +509 -0
  511. package/vendor/translators-official/Noor Digital Library.js +267 -0
  512. package/vendor/translators-official/Note HTML.js +206 -0
  513. package/vendor/translators-official/Note Markdown.js +1638 -0
  514. package/vendor/translators-official/Notre Dame Philosophical Reviews.js +201 -0
  515. package/vendor/translators-official/OAPEN.js +331 -0
  516. package/vendor/translators-official/OCLC WorldCat FirstSearch.js +213 -0
  517. package/vendor/translators-official/OECD.js +216 -0
  518. package/vendor/translators-official/ORCID.js +104 -0
  519. package/vendor/translators-official/OSF Preprints.js +1287 -0
  520. package/vendor/translators-official/OSTI Energy Citations.js +202 -0
  521. package/vendor/translators-official/OVID Tagged.js +1226 -0
  522. package/vendor/translators-official/OZON.ru.js +465 -0
  523. package/vendor/translators-official/OhioLINK.js +43 -0
  524. package/vendor/translators-official/Old Bailey Online.js +315 -0
  525. package/vendor/translators-official/Open Conf.js +172 -0
  526. package/vendor/translators-official/Open Knowledge Repository.js +811 -0
  527. package/vendor/translators-official/Open WorldCat.js +1394 -0
  528. package/vendor/translators-official/OpenAlex JSON.js +740 -0
  529. package/vendor/translators-official/OpenAlex.js +444 -0
  530. package/vendor/translators-official/OpenEdition Books.js +155 -0
  531. package/vendor/translators-official/OpenEdition Journals.js +432 -0
  532. package/vendor/translators-official/Optical Society of America.js +562 -0
  533. package/vendor/translators-official/Optimization Online.js +418 -0
  534. package/vendor/translators-official/Ovid OCE.js +353 -0
  535. package/vendor/translators-official/Ovid.js +302 -0
  536. package/vendor/translators-official/Oxford Dictionaries Premium.js +194 -0
  537. package/vendor/translators-official/Oxford English Dictionary.js +122 -0
  538. package/vendor/translators-official/Oxford Music and Art Online.js +120 -0
  539. package/vendor/translators-official/Oxford Reference.js +202 -0
  540. package/vendor/translators-official/Oxford University Press.js +277 -0
  541. package/vendor/translators-official/PC Gamer.js +302 -0
  542. package/vendor/translators-official/PC Games.js +128 -0
  543. package/vendor/translators-official/PEI Archival Information Network.js +242 -0
  544. package/vendor/translators-official/PEP Web.js +165 -0
  545. package/vendor/translators-official/PKP Catalog Systems.js +1455 -0
  546. package/vendor/translators-official/PLoS Journals.js +284 -0
  547. package/vendor/translators-official/PRC History Review.js +298 -0
  548. package/vendor/translators-official/Pajhwok Afghan News.js +198 -0
  549. package/vendor/translators-official/Papers Past.js +509 -0
  550. package/vendor/translators-official/Paris Review.js +227 -0
  551. package/vendor/translators-official/Pastebin.js +199 -0
  552. package/vendor/translators-official/Patents - USPTO.js +210 -0
  553. package/vendor/translators-official/Peeters.js +587 -0
  554. package/vendor/translators-official/Perceiving Systems.js +350 -0
  555. package/vendor/translators-official/Perlego.js +416 -0
  556. package/vendor/translators-official/PhilPapers.js +233 -0
  557. package/vendor/translators-official/Philosopher's Imprint.js +169 -0
  558. package/vendor/translators-official/Pleade.js +329 -0
  559. package/vendor/translators-official/Polygon.js +270 -0
  560. package/vendor/translators-official/Potsdamer Neueste Nachrichten.js +188 -0
  561. package/vendor/translators-official/Premium Times.js +144 -0
  562. package/vendor/translators-official/Preprints.org.js +305 -0
  563. package/vendor/translators-official/Prime 9ja Online.js +402 -0
  564. package/vendor/translators-official/Primo 2018.js +126 -0
  565. package/vendor/translators-official/Primo Normalized XML.js +1075 -0
  566. package/vendor/translators-official/Primo.js +322 -0
  567. package/vendor/translators-official/ProMED.js +66 -0
  568. package/vendor/translators-official/ProQuest Ebook Central.js +226 -0
  569. package/vendor/translators-official/ProQuest PolicyFile.js +115 -0
  570. package/vendor/translators-official/ProQuest.js +2210 -0
  571. package/vendor/translators-official/Probing the Past.js +151 -0
  572. package/vendor/translators-official/Project Gutenberg.js +191 -0
  573. package/vendor/translators-official/Project MUSE.js +451 -0
  574. package/vendor/translators-official/Protein Data Bank.js +445 -0
  575. package/vendor/translators-official/PubFactory Journals.js +712 -0
  576. package/vendor/translators-official/PubMed Central.js +563 -0
  577. package/vendor/translators-official/PubMed XML.js +1240 -0
  578. package/vendor/translators-official/PubMed.js +1317 -0
  579. package/vendor/translators-official/PubPub.js +530 -0
  580. package/vendor/translators-official/Public Record Office Victoria.js +252 -0
  581. package/vendor/translators-official/Publications Office of the European Union.js +540 -0
  582. package/vendor/translators-official/Publications du Quebec.js +225 -0
  583. package/vendor/translators-official/PyPI.js +288 -0
  584. package/vendor/translators-official/Qatar Digital Library.js +802 -0
  585. package/vendor/translators-official/Queensland State Archives.js +303 -0
  586. package/vendor/translators-official/R-Packages.js +410 -0
  587. package/vendor/translators-official/RAND.js +283 -0
  588. package/vendor/translators-official/RDF.js +1782 -0
  589. package/vendor/translators-official/REDALYC.js +196 -0
  590. package/vendor/translators-official/RIS.js +7292 -0
  591. package/vendor/translators-official/RSC Publishing.js +250 -0
  592. package/vendor/translators-official/Radio Free Europe Radio Liberty.js +706 -0
  593. package/vendor/translators-official/RePEc - Econpapers.js +725 -0
  594. package/vendor/translators-official/RePEc - IDEAS.js +337 -0
  595. package/vendor/translators-official/Rechtspraak.nl.js +295 -0
  596. package/vendor/translators-official/RefWorks Tagged.js +1185 -0
  597. package/vendor/translators-official/ReferBibIX.js +463 -0
  598. package/vendor/translators-official/Regeringskansliet.js +89 -0
  599. package/vendor/translators-official/Research Square.js +335 -0
  600. package/vendor/translators-official/ResearchGate.js +394 -0
  601. package/vendor/translators-official/Retsinformation.js +348 -0
  602. package/vendor/translators-official/Reuters.js +255 -0
  603. package/vendor/translators-official/Rock, Paper, Shotgun.js +304 -0
  604. package/vendor/translators-official/Roll Call.js +173 -0
  605. package/vendor/translators-official/Russian State Library.js +1517 -0
  606. package/vendor/translators-official/SAE Papers.js +241 -0
  607. package/vendor/translators-official/SAGE Journals.js +429 -0
  608. package/vendor/translators-official/SAGE Knowledge.js +505 -0
  609. package/vendor/translators-official/SAILDART.js +364 -0
  610. package/vendor/translators-official/SALT Research Archives.js +196 -0
  611. package/vendor/translators-official/SFU IPinCH.js +946 -0
  612. package/vendor/translators-official/SIPRI.js +256 -0
  613. package/vendor/translators-official/SIRS Knowledge Source.js +546 -0
  614. package/vendor/translators-official/SLUB Dresden.js +300 -0
  615. package/vendor/translators-official/SORA.js +340 -0
  616. package/vendor/translators-official/SSOAR.js +399 -0
  617. package/vendor/translators-official/SSRN.js +235 -0
  618. package/vendor/translators-official/SVT Nyheter.js +381 -0
  619. package/vendor/translators-official/Sacramento Bee.js +274 -0
  620. package/vendor/translators-official/Safari Books Online.js +391 -0
  621. package/vendor/translators-official/Scholars Portal Journals.js +220 -0
  622. package/vendor/translators-official/Scholia.js +189 -0
  623. package/vendor/translators-official/Schweizer Radio und Fernsehen SRF.js +152 -0
  624. package/vendor/translators-official/SciELO.js +440 -0
  625. package/vendor/translators-official/ScienceDirect.js +1306 -0
  626. package/vendor/translators-official/Scopus.js +418 -0
  627. package/vendor/translators-official/Semantic Scholar.js +513 -0
  628. package/vendor/translators-official/Silverchair.js +886 -0
  629. package/vendor/translators-official/Slate.js +228 -0
  630. package/vendor/translators-official/SlideShare.js +112 -0
  631. package/vendor/translators-official/Springer Link.js +696 -0
  632. package/vendor/translators-official/Stack Exchange.js +134 -0
  633. package/vendor/translators-official/Standard Ebooks.js +198 -0
  634. package/vendor/translators-official/Stanford Encyclopedia of Philosophy.js +285 -0
  635. package/vendor/translators-official/Stanford University Press.js +343 -0
  636. package/vendor/translators-official/State Records Office of Western Australia.js +439 -0
  637. package/vendor/translators-official/Stitcher.js +141 -0
  638. package/vendor/translators-official/Store norske leksikon.js +291 -0
  639. package/vendor/translators-official/Stuff.co.nz.js +446 -0
  640. package/vendor/translators-official/Substack.js +237 -0
  641. package/vendor/translators-official/Sud Ouest.js +181 -0
  642. package/vendor/translators-official/Sueddeutsche.de.js +205 -0
  643. package/vendor/translators-official/Summon 2.js +117 -0
  644. package/vendor/translators-official/Superlib.js +647 -0
  645. package/vendor/translators-official/Svenska Dagbladet.js +274 -0
  646. package/vendor/translators-official/Sveriges radio.js +416 -0
  647. package/vendor/translators-official/TEI.js +648 -0
  648. package/vendor/translators-official/TV by the Numbers.js +194 -0
  649. package/vendor/translators-official/TVNZ.js +165 -0
  650. package/vendor/translators-official/Tagesspiegel.js +249 -0
  651. package/vendor/translators-official/Talis Aspire.js +316 -0
  652. package/vendor/translators-official/TalisPrism.js +445 -0
  653. package/vendor/translators-official/Tatknigafund.js +174 -0
  654. package/vendor/translators-official/Tatpressa.ru.js +121 -0
  655. package/vendor/translators-official/Taylor & Francis eBooks.js +334 -0
  656. package/vendor/translators-official/Taylor and Francis+NEJM.js +813 -0
  657. package/vendor/translators-official/Tesis Doctorals en Xarxa.js +233 -0
  658. package/vendor/translators-official/The Art Newspaper.js +268 -0
  659. package/vendor/translators-official/The Atlantic.js +535 -0
  660. package/vendor/translators-official/The Boston Globe.js +285 -0
  661. package/vendor/translators-official/The Chronicle of Higher Education.js +308 -0
  662. package/vendor/translators-official/The Daily Beast.js +183 -0
  663. package/vendor/translators-official/The Economic Times - The Times of India.js +305 -0
  664. package/vendor/translators-official/The Economist.js +207 -0
  665. package/vendor/translators-official/The Free Dictionary.js +58 -0
  666. package/vendor/translators-official/The Globe and Mail.js +241 -0
  667. package/vendor/translators-official/The Guardian.js +717 -0
  668. package/vendor/translators-official/The Hamilton Spectator.js +129 -0
  669. package/vendor/translators-official/The Hindu.js +318 -0
  670. package/vendor/translators-official/The Independent.js +184 -0
  671. package/vendor/translators-official/The Intercept.js +258 -0
  672. package/vendor/translators-official/The Met.js +276 -0
  673. package/vendor/translators-official/The Microfinance Gateway.js +174 -0
  674. package/vendor/translators-official/The Nation.js +188 -0
  675. package/vendor/translators-official/The National Archives (UK).js +242 -0
  676. package/vendor/translators-official/The New Republic.js +160 -0
  677. package/vendor/translators-official/The New York Review of Books.js +467 -0
  678. package/vendor/translators-official/The New Yorker.js +360 -0
  679. package/vendor/translators-official/The Open Library.js +220 -0
  680. package/vendor/translators-official/The Straits Times.js +528 -0
  681. package/vendor/translators-official/The Telegraph.js +337 -0
  682. package/vendor/translators-official/The Times and Sunday Times.js +180 -0
  683. package/vendor/translators-official/The Times of Israel.js +151 -0
  684. package/vendor/translators-official/TheMarker.js +108 -0
  685. package/vendor/translators-official/Theory of Computing.js +488 -0
  686. package/vendor/translators-official/ThesesFR.js +405 -0
  687. package/vendor/translators-official/Thieme.js +326 -0
  688. package/vendor/translators-official/Time.com.js +557 -0
  689. package/vendor/translators-official/TimesMachine.js +222 -0
  690. package/vendor/translators-official/Tony Blair Institute for Global Change.js +195 -0
  691. package/vendor/translators-official/Toronto Star.js +298 -0
  692. package/vendor/translators-official/Transportation Research Board.js +253 -0
  693. package/vendor/translators-official/Treesearch.js +535 -0
  694. package/vendor/translators-official/Trove.js +616 -0
  695. package/vendor/translators-official/Tumblr.js +179 -0
  696. package/vendor/translators-official/Twitter.js +413 -0
  697. package/vendor/translators-official/UChicago VuFind.js +907 -0
  698. package/vendor/translators-official/UNZ Print Archive.js +276 -0
  699. package/vendor/translators-official/UPCommons.js +227 -0
  700. package/vendor/translators-official/US National Archives Research Catalog.js +275 -0
  701. package/vendor/translators-official/USENIX.js +151 -0
  702. package/vendor/translators-official/Ubiquity Journals.js +228 -0
  703. package/vendor/translators-official/University Press Scholarship.js +301 -0
  704. package/vendor/translators-official/University of California Press Books.js +403 -0
  705. package/vendor/translators-official/University of Chicago Press Books.js +378 -0
  706. package/vendor/translators-official/University of Wisconsin-Madison Libraries Catalog.js +298 -0
  707. package/vendor/translators-official/Unqualified Dublin Core RDF.js +153 -0
  708. package/vendor/translators-official/UpToDate References.js +203 -0
  709. package/vendor/translators-official/Vanity Fair.js +242 -0
  710. package/vendor/translators-official/Verniana-Jules Verne Studies.js +190 -0
  711. package/vendor/translators-official/Verso Books.js +311 -0
  712. package/vendor/translators-official/Vice.js +445 -0
  713. package/vendor/translators-official/Victoria & Albert Museum.js +277 -0
  714. package/vendor/translators-official/Vimeo.js +188 -0
  715. package/vendor/translators-official/VoxEU.js +151 -0
  716. package/vendor/translators-official/WHO.js +458 -0
  717. package/vendor/translators-official/WIPO.js +189 -0
  718. package/vendor/translators-official/Wall Street Journal.js +809 -0
  719. package/vendor/translators-official/Wanfang Data.js +310 -0
  720. package/vendor/translators-official/Washington Monthly.js +195 -0
  721. package/vendor/translators-official/Washington Post.js +447 -0
  722. package/vendor/translators-official/Web of Science Nextgen.js +832 -0
  723. package/vendor/translators-official/Web of Science Tagged.js +1247 -0
  724. package/vendor/translators-official/Web of Science.js +228 -0
  725. package/vendor/translators-official/Welt Online.js +161 -0
  726. package/vendor/translators-official/WestLaw UK.js +190 -0
  727. package/vendor/translators-official/WikiLeaks PlusD.js +182 -0
  728. package/vendor/translators-official/Wikidata QuickStatements.js +324 -0
  729. package/vendor/translators-official/Wikidata.js +911 -0
  730. package/vendor/translators-official/Wikimedia Commons.js +285 -0
  731. package/vendor/translators-official/Wikipedia Citation Templates.js +432 -0
  732. package/vendor/translators-official/Wikipedia.js +385 -0
  733. package/vendor/translators-official/Wikisource.js +399 -0
  734. package/vendor/translators-official/Wikiwand.js +122 -0
  735. package/vendor/translators-official/Wiktionary.js +141 -0
  736. package/vendor/translators-official/Wildlife Biology in Practice.js +172 -0
  737. package/vendor/translators-official/Wiley Online Library.js +1412 -0
  738. package/vendor/translators-official/Wilson Center Digital Archive.js +321 -0
  739. package/vendor/translators-official/Winnipeg Free Press.js +204 -0
  740. package/vendor/translators-official/Wired.js +362 -0
  741. package/vendor/translators-official/Womennews.js +230 -0
  742. package/vendor/translators-official/World Digital Library.js +403 -0
  743. package/vendor/translators-official/World History Connected.js +185 -0
  744. package/vendor/translators-official/World Shakespeare Bibliography Online.js +595 -0
  745. package/vendor/translators-official/WorldCat Discovery Service.js +630 -0
  746. package/vendor/translators-official/XML ContextObject.js +274 -0
  747. package/vendor/translators-official/YPSF.js +224 -0
  748. package/vendor/translators-official/Yandex Books.js +265 -0
  749. package/vendor/translators-official/Ynet.js +171 -0
  750. package/vendor/translators-official/YouTube.js +209 -0
  751. package/vendor/translators-official/ZIPonline.js +267 -0
  752. package/vendor/translators-official/ZOBODAT.js +341 -0
  753. package/vendor/translators-official/Zotero RDF.js +588 -0
  754. package/vendor/translators-official/ZoteroBib.js +94 -0
  755. package/vendor/translators-official/arXiv.org.js +1100 -0
  756. package/vendor/translators-official/artnet.js +207 -0
  757. package/vendor/translators-official/beck-online.js +1339 -0
  758. package/vendor/translators-official/clinicaltrials.gov.js +331 -0
  759. package/vendor/translators-official/dLibra.js +367 -0
  760. package/vendor/translators-official/dejure.org.js +242 -0
  761. package/vendor/translators-official/dhistory.js +103 -0
  762. package/vendor/translators-official/digibib.net.js +245 -0
  763. package/vendor/translators-official/eLibrary.ru.js +867 -0
  764. package/vendor/translators-official/eLife.js +462 -0
  765. package/vendor/translators-official/eMJA.js +246 -0
  766. package/vendor/translators-official/eMedicine.js +123 -0
  767. package/vendor/translators-official/ePrint IACR.js +608 -0
  768. package/vendor/translators-official/ebrary.js +140 -0
  769. package/vendor/translators-official/etatar.ru.js +104 -0
  770. package/vendor/translators-official/feb-web.ru.js +167 -0
  771. package/vendor/translators-official/fishpond.co.nz.js +224 -0
  772. package/vendor/translators-official/fr-online.de.js +209 -0
  773. package/vendor/translators-official/govinfo.js +189 -0
  774. package/vendor/translators-official/informIT database.js +248 -0
  775. package/vendor/translators-official/io-port.js +68 -0
  776. package/vendor/translators-official/jurion.js +377 -0
  777. package/vendor/translators-official/mEDRA.js +597 -0
  778. package/vendor/translators-official/magazines.russ.ru.js +120 -0
  779. package/vendor/translators-official/medes.js +284 -0
  780. package/vendor/translators-official/newshub.co.nz.js +206 -0
  781. package/vendor/translators-official/newspapers.com.js +335 -0
  782. package/vendor/translators-official/openJur.js +161 -0
  783. package/vendor/translators-official/reddit.js +275 -0
  784. package/vendor/translators-official/sbn.it.js +186 -0
  785. package/vendor/translators-official/scinapse.js +273 -0
  786. package/vendor/translators-official/semantics Visual Library.js +643 -0
  787. package/vendor/translators-official/taz.de.js +200 -0
  788. package/vendor/translators-official/unAPI.js +481 -0
  789. package/vendor/translators-official/wiso.js +314 -0
  790. package/vendor/translators-official/zbMATH.js +278 -0
  791. package/vendor/translators-official/zotero.org.js +311 -0
  792. package/vendor/translators_CN/Angle.js +468 -0
  793. package/vendor/translators_CN/Baidu Baike.js +152 -0
  794. package/vendor/translators_CN/Baidu Scholar.js +639 -0
  795. package/vendor/translators_CN/Belt and Road Database.js +496 -0
  796. package/vendor/translators_CN/BiliBili.js +776 -0
  797. package/vendor/translators_CN/CCPINFO.js +416 -0
  798. package/vendor/translators_CN/CHINESE JOURNAL OF LAW.js +169 -0
  799. package/vendor/translators_CN/CNBKSY.js +385 -0
  800. package/vendor/translators_CN/CNKI CHKD.js +692 -0
  801. package/vendor/translators_CN/CNKI Gongjushu.js +271 -0
  802. package/vendor/translators_CN/CNKI Industry.js +726 -0
  803. package/vendor/translators_CN/CNKI Law.js +842 -0
  804. package/vendor/translators_CN/CNKI RefWorks.js +826 -0
  805. package/vendor/translators_CN/CNKI Refer.js +811 -0
  806. package/vendor/translators_CN/CNKI Scholar.js +656 -0
  807. package/vendor/translators_CN/CNKI TIKS.js +1028 -0
  808. package/vendor/translators_CN/CNKI e-Books.js +309 -0
  809. package/vendor/translators_CN/CNKI thinker.js +274 -0
  810. package/vendor/translators_CN/CNKI.js +2381 -0
  811. package/vendor/translators_CN/CNSDA.js +382 -0
  812. package/vendor/translators_CN/CQVIP Knowledge.js +969 -0
  813. package/vendor/translators_CN/CQVIP Qikan.js +418 -0
  814. package/vendor/translators_CN/CQVIP.js +686 -0
  815. package/vendor/translators_CN/CSDN.js +153 -0
  816. package/vendor/translators_CN/China Judgements Online.js +282 -0
  817. package/vendor/translators_CN/China Social Science Library.js +533 -0
  818. package/vendor/translators_CN/ChinaXiv.js +375 -0
  819. package/vendor/translators_CN/Cubox.js +246 -0
  820. package/vendor/translators_CN/Dangdang.js +176 -0
  821. package/vendor/translators_CN/Douban.js +984 -0
  822. package/vendor/translators_CN/Duxiu.js +746 -0
  823. package/vendor/translators_CN/E-Tiller.js +555 -0
  824. package/vendor/translators_CN/Encyclopedia of China 3rd.js +177 -0
  825. package/vendor/translators_CN/Founder.js +483 -0
  826. package/vendor/translators_CN/GFSOSO.js +694 -0
  827. package/vendor/translators_CN/Jd.js +235 -0
  828. package/vendor/translators_CN/Jikan Full Text Database.js +188 -0
  829. package/vendor/translators_CN/KouShare.js +139 -0
  830. package/vendor/translators_CN/LICENSE +661 -0
  831. package/vendor/translators_CN/Lawbank.js +818 -0
  832. package/vendor/translators_CN/MagTech.js +473 -0
  833. package/vendor/translators_CN/Modern History.js +788 -0
  834. package/vendor/translators_CN/NDLTD.js +404 -0
  835. package/vendor/translators_CN/NTU Digital Library of Buddhist Studies.js +957 -0
  836. package/vendor/translators_CN/National Public Service Platform for Standards Information - China.js +348 -0
  837. package/vendor/translators_CN/National Science and Technology Library - China.js +646 -0
  838. package/vendor/translators_CN/National Science and Technology Report Service - China.js +271 -0
  839. package/vendor/translators_CN/National Standards Open System - China.js +296 -0
  840. package/vendor/translators_CN/Ncpssd.js +555 -0
  841. package/vendor/translators_CN/PKULaw.js +1123 -0
  842. package/vendor/translators_CN/PatentStar.js +386 -0
  843. package/vendor/translators_CN/People's Daily Database.js +186 -0
  844. package/vendor/translators_CN/People's Daily Epaper.js +279 -0
  845. package/vendor/translators_CN/People's Daily Online.js +292 -0
  846. package/vendor/translators_CN/Pishu Database.js +383 -0
  847. package/vendor/translators_CN/ProQuestCN Thesis.js +329 -0
  848. package/vendor/translators_CN/Pss-System.js +199 -0
  849. package/vendor/translators_CN/PubScholar.js +588 -0
  850. package/vendor/translators_CN/Publications Data Center - China.js +1119 -0
  851. package/vendor/translators_CN/QStheory.js +251 -0
  852. package/vendor/translators_CN/RDFYBK.js +396 -0
  853. package/vendor/translators_CN/README.md +42 -0
  854. package/vendor/translators_CN/RHHZ.js +383 -0
  855. package/vendor/translators_CN/Rural Studies Database.js +402 -0
  856. package/vendor/translators_CN/SKCTK.js +177 -0
  857. package/vendor/translators_CN/Samson.js +768 -0
  858. package/vendor/translators_CN/SciEngine.js +450 -0
  859. package/vendor/translators_CN/Science Reading.js +338 -0
  860. package/vendor/translators_CN/Sina Weibo.js +254 -0
  861. package/vendor/translators_CN/Soopat.js +427 -0
  862. package/vendor/translators_CN/Spc.org.cn.js +275 -0
  863. package/vendor/translators_CN/Standard Full-text Database - NLC.js +230 -0
  864. package/vendor/translators_CN/SuperLib.js +757 -0
  865. package/vendor/translators_CN/TOAJ.js +422 -0
  866. package/vendor/translators_CN/Wanfang Data.js +3433 -0
  867. package/vendor/translators_CN/Wanfang Med.js +671 -0
  868. package/vendor/translators_CN/Web of Science Tagged.js +1341 -0
  869. package/vendor/translators_CN/Weixin.js +130 -0
  870. package/vendor/translators_CN/Wenjin.js +492 -0
  871. package/vendor/translators_CN/Xinhuanet.js +283 -0
  872. package/vendor/translators_CN/Yiigle.js +394 -0
  873. package/vendor/translators_CN/Zhihu.js +530 -0
  874. package/vendor/translators_CN/Zhihuiya.js +246 -0
  875. package/vendor/translators_CN/Zhizhen.js +869 -0
  876. package/vendor/translators_CN/chaoxingqikan.js +360 -0
  877. package/vendor/translators_CN/doc.taixueshu.js +355 -0
  878. package/vendor/translators_CN/dpaper.js +183 -0
  879. package/vendor/translators_CN/epaper.gmw.cn.js +286 -0
  880. package/vendor/translators_CN/flk.npc.gov.cn.js +344 -0
  881. package/vendor/translators_CN/gov.cn Policy.js +559 -0
  882. package/vendor/translators_CN/incoPat.js +195 -0
  883. package/vendor/translators_CN/pm.tsgyun.js +177 -0
  884. package/vendor/translators_CN/sanmin.com.tw.js +327 -0
  885. package/vendor/translators_CN/sharing.com.tw.js +333 -0
  886. package/vendor/translators_CN/stats.gov.cn.js +170 -0
  887. package/vendor/translators_CN/xiaoyuzhoufm.js +162 -0
  888. package/vendor/translators_CN/zhangqiaokeyan.js +1130 -0
  889. package/vendor/zotero/README.md +120 -0
  890. package/vendor/zotero/config/custom-environment-variables.json +3 -0
  891. package/vendor/zotero/config/default.json5 +16 -0
  892. package/vendor/zotero/config/production.json5 +7 -0
  893. package/vendor/zotero/config/test.json5 +4 -0
  894. package/vendor/zotero/modules/translate/README.md +43 -0
  895. package/vendor/zotero/modules/translate/src/debug.js +186 -0
  896. package/vendor/zotero/modules/translate/src/http.js +158 -0
  897. package/vendor/zotero/modules/translate/src/promise.js +73 -0
  898. package/vendor/zotero/modules/translate/src/proxy.js +354 -0
  899. package/vendor/zotero/modules/translate/src/rdf/identity.js +503 -0
  900. package/vendor/zotero/modules/translate/src/rdf/init.js +56 -0
  901. package/vendor/zotero/modules/translate/src/rdf/n3parser.js +1392 -0
  902. package/vendor/zotero/modules/translate/src/rdf/rdfparser.js +578 -0
  903. package/vendor/zotero/modules/translate/src/rdf/serialize.js +886 -0
  904. package/vendor/zotero/modules/translate/src/rdf/term.js +524 -0
  905. package/vendor/zotero/modules/translate/src/rdf/uri.js +147 -0
  906. package/vendor/zotero/modules/translate/src/repo.js +80 -0
  907. package/vendor/zotero/modules/translate/src/tlds.js +274 -0
  908. package/vendor/zotero/modules/translate/src/translation/sandboxManager.js +112 -0
  909. package/vendor/zotero/modules/translate/src/translation/translate.js +3283 -0
  910. package/vendor/zotero/modules/translate/src/translation/translate_item.js +120 -0
  911. package/vendor/zotero/modules/translate/src/translator.js +186 -0
  912. package/vendor/zotero/modules/translate/src/translators.js +174 -0
  913. package/vendor/zotero/modules/translate/src/utilities_translate.js +487 -0
  914. package/vendor/zotero/modules/translate/src/zotero.js +94 -0
  915. package/vendor/zotero/modules/translators/A Contra Corriente.js +206 -0
  916. package/vendor/zotero/modules/translators/ABC News Australia.js +224 -0
  917. package/vendor/zotero/modules/translators/ACLS Humanities EBook.js +165 -0
  918. package/vendor/zotero/modules/translators/ACLWeb.js +600 -0
  919. package/vendor/zotero/modules/translators/ACM Digital Library.js +710 -0
  920. package/vendor/zotero/modules/translators/ACS Publications.js +633 -0
  921. package/vendor/zotero/modules/translators/ADS Bibcode.js +664 -0
  922. package/vendor/zotero/modules/translators/AEA Web.js +450 -0
  923. package/vendor/zotero/modules/translators/AGRIS.js +311 -0
  924. package/vendor/zotero/modules/translators/AIP.js +295 -0
  925. package/vendor/zotero/modules/translators/AMS Journals.js +136 -0
  926. package/vendor/zotero/modules/translators/AMS MathSciNet (Legacy).js +313 -0
  927. package/vendor/zotero/modules/translators/AMS MathSciNet.js +288 -0
  928. package/vendor/zotero/modules/translators/APA PsycNET.js +915 -0
  929. package/vendor/zotero/modules/translators/APN.ru.js +132 -0
  930. package/vendor/zotero/modules/translators/APS-Physics.js +204 -0
  931. package/vendor/zotero/modules/translators/APS.js +542 -0
  932. package/vendor/zotero/modules/translators/ARTFL Encyclopedie.js +283 -0
  933. package/vendor/zotero/modules/translators/ARTnews.js +155 -0
  934. package/vendor/zotero/modules/translators/ARTstor.js +619 -0
  935. package/vendor/zotero/modules/translators/ASCE.js +199 -0
  936. package/vendor/zotero/modules/translators/ASCO Meeting Library.js +153 -0
  937. package/vendor/zotero/modules/translators/ASTIS.js +337 -0
  938. package/vendor/zotero/modules/translators/ATS International Journal.js +290 -0
  939. package/vendor/zotero/modules/translators/Access Engineering.js +384 -0
  940. package/vendor/zotero/modules/translators/Access Medicine.js +343 -0
  941. package/vendor/zotero/modules/translators/Access Science.js +391 -0
  942. package/vendor/zotero/modules/translators/Adam Matthew Digital.js +405 -0
  943. package/vendor/zotero/modules/translators/Agencia del ISBN.js +77 -0
  944. package/vendor/zotero/modules/translators/Ahval News.js +309 -0
  945. package/vendor/zotero/modules/translators/Air University Journals.js +236 -0
  946. package/vendor/zotero/modules/translators/Airiti.js +423 -0
  947. package/vendor/zotero/modules/translators/Alexander Street Press.js +198 -0
  948. package/vendor/zotero/modules/translators/AllAfrica.js +291 -0
  949. package/vendor/zotero/modules/translators/Alsharekh.js +242 -0
  950. package/vendor/zotero/modules/translators/AlterNet.js +134 -0
  951. package/vendor/zotero/modules/translators/Aluka.js +261 -0
  952. package/vendor/zotero/modules/translators/Amazon.js +1043 -0
  953. package/vendor/zotero/modules/translators/American Archive of Public Broadcasting.js +592 -0
  954. package/vendor/zotero/modules/translators/American Institute of Aeronautics and Astronautics.js +210 -0
  955. package/vendor/zotero/modules/translators/American Prospect.js +114 -0
  956. package/vendor/zotero/modules/translators/Ancestry.com US Federal Census.js +164 -0
  957. package/vendor/zotero/modules/translators/Annual Reviews.js +329 -0
  958. package/vendor/zotero/modules/translators/Antikvarium.hu.js +280 -0
  959. package/vendor/zotero/modules/translators/AquaDocs.js +390 -0
  960. package/vendor/zotero/modules/translators/Archeion.js +249 -0
  961. package/vendor/zotero/modules/translators/Archiv fuer Sozialgeschichte.js +157 -0
  962. package/vendor/zotero/modules/translators/Archive Ouverte en Sciences de l'Information et de la Communication (AOSIC).js +179 -0
  963. package/vendor/zotero/modules/translators/Archives Canada.js +142 -0
  964. package/vendor/zotero/modules/translators/Ariana News.js +203 -0
  965. package/vendor/zotero/modules/translators/Art Institute of Chicago.js +279 -0
  966. package/vendor/zotero/modules/translators/Artefacts Canada.js +192 -0
  967. package/vendor/zotero/modules/translators/Artforum.js +438 -0
  968. package/vendor/zotero/modules/translators/Atlanta Journal Constitution.js +155 -0
  969. package/vendor/zotero/modules/translators/Atlanta Journal-Constitution.js +311 -0
  970. package/vendor/zotero/modules/translators/Atypon Journals.js +1204 -0
  971. package/vendor/zotero/modules/translators/AustLII and NZLII.js +604 -0
  972. package/vendor/zotero/modules/translators/Australian Dictionary of Biography.js +196 -0
  973. package/vendor/zotero/modules/translators/BAILII.js +176 -0
  974. package/vendor/zotero/modules/translators/BBC Genome.js +254 -0
  975. package/vendor/zotero/modules/translators/BBC.js +430 -0
  976. package/vendor/zotero/modules/translators/BIBSYS.js +112 -0
  977. package/vendor/zotero/modules/translators/BOCC.js +217 -0
  978. package/vendor/zotero/modules/translators/BOE.js +229 -0
  979. package/vendor/zotero/modules/translators/BOFiP-Impots.js +132 -0
  980. package/vendor/zotero/modules/translators/Baidu Scholar.js +276 -0
  981. package/vendor/zotero/modules/translators/Bangkok Post.js +216 -0
  982. package/vendor/zotero/modules/translators/Baruch Foundation.js +175 -0
  983. package/vendor/zotero/modules/translators/Beobachter.js +175 -0
  984. package/vendor/zotero/modules/translators/Bezneng Gajit.js +92 -0
  985. package/vendor/zotero/modules/translators/BibLaTeX.js +888 -0
  986. package/vendor/zotero/modules/translators/BibTeX.js +4236 -0
  987. package/vendor/zotero/modules/translators/Biblio.com.js +216 -0
  988. package/vendor/zotero/modules/translators/Bibliontology RDF.js +1166 -0
  989. package/vendor/zotero/modules/translators/Biblioteca Nacional de Maestros.js +213 -0
  990. package/vendor/zotero/modules/translators/Bibliotheque et Archives Nationale du Quebec (Pistard).js +147 -0
  991. package/vendor/zotero/modules/translators/Bibliotheque et Archives Nationales du Quebec.js +266 -0
  992. package/vendor/zotero/modules/translators/Bibliotheque nationale de France.js +872 -0
  993. package/vendor/zotero/modules/translators/BioMed Central.js +585 -0
  994. package/vendor/zotero/modules/translators/BioOne.js +233 -0
  995. package/vendor/zotero/modules/translators/Bioconductor.js +343 -0
  996. package/vendor/zotero/modules/translators/Blaetter.js +192 -0
  997. package/vendor/zotero/modules/translators/Blogger.js +244 -0
  998. package/vendor/zotero/modules/translators/Bloomberg.js +205 -0
  999. package/vendor/zotero/modules/translators/Bloomsbury Food Library.js +296 -0
  1000. package/vendor/zotero/modules/translators/Bluesky.js +195 -0
  1001. package/vendor/zotero/modules/translators/BnF ISBN.js +129 -0
  1002. package/vendor/zotero/modules/translators/Bookmarks.js +282 -0
  1003. package/vendor/zotero/modules/translators/Bookshop.org.js +223 -0
  1004. package/vendor/zotero/modules/translators/Boston Review.js +332 -0
  1005. package/vendor/zotero/modules/translators/Bosworth Toller's Anglo-Saxon Dictionary Online.js +496 -0
  1006. package/vendor/zotero/modules/translators/Bracero History Archive.js +200 -0
  1007. package/vendor/zotero/modules/translators/Brill Journals.js +168 -0
  1008. package/vendor/zotero/modules/translators/Brill.js +434 -0
  1009. package/vendor/zotero/modules/translators/Brukerhandboken.js +153 -0
  1010. package/vendor/zotero/modules/translators/Bryn Mawr Classical Review.js +303 -0
  1011. package/vendor/zotero/modules/translators/Bundesgesetzblatt.js +231 -0
  1012. package/vendor/zotero/modules/translators/Business Standard.js +151 -0
  1013. package/vendor/zotero/modules/translators/CABI - CAB Abstracts.js +317 -0
  1014. package/vendor/zotero/modules/translators/CAOD.js +260 -0
  1015. package/vendor/zotero/modules/translators/CBC.js +439 -0
  1016. package/vendor/zotero/modules/translators/CCfr (BnF).js +162 -0
  1017. package/vendor/zotero/modules/translators/CERN Document Server.js +277 -0
  1018. package/vendor/zotero/modules/translators/CEUR Workshop Proceedings.js +145 -0
  1019. package/vendor/zotero/modules/translators/CFF References.js +170 -0
  1020. package/vendor/zotero/modules/translators/CFF.js +113 -0
  1021. package/vendor/zotero/modules/translators/CIA World Factbook.js +128 -0
  1022. package/vendor/zotero/modules/translators/CLACSO.js +226 -0
  1023. package/vendor/zotero/modules/translators/CLASE.js +135 -0
  1024. package/vendor/zotero/modules/translators/CNKI.js +731 -0
  1025. package/vendor/zotero/modules/translators/COBISS.js +1945 -0
  1026. package/vendor/zotero/modules/translators/COinS.js +336 -0
  1027. package/vendor/zotero/modules/translators/CQ Press.js +418 -0
  1028. package/vendor/zotero/modules/translators/CROSBI.js +227 -0
  1029. package/vendor/zotero/modules/translators/CSIRO Publishing.js +139 -0
  1030. package/vendor/zotero/modules/translators/CSL JSON.js +203 -0
  1031. package/vendor/zotero/modules/translators/CSV.js +294 -0
  1032. package/vendor/zotero/modules/translators/Cairn.info.js +368 -0
  1033. package/vendor/zotero/modules/translators/CalMatters.js +228 -0
  1034. package/vendor/zotero/modules/translators/Calisphere.js +355 -0
  1035. package/vendor/zotero/modules/translators/Camara Brasileira do Livro ISBN.js +842 -0
  1036. package/vendor/zotero/modules/translators/Cambridge Core.js +580 -0
  1037. package/vendor/zotero/modules/translators/Cambridge Engage Preprints.js +276 -0
  1038. package/vendor/zotero/modules/translators/CanLII.js +284 -0
  1039. package/vendor/zotero/modules/translators/Canada.com.js +171 -0
  1040. package/vendor/zotero/modules/translators/Canadian Letters and Images.js +148 -0
  1041. package/vendor/zotero/modules/translators/Canadiana.ca.js +196 -0
  1042. package/vendor/zotero/modules/translators/Cascadilla Proceedings Project.js +390 -0
  1043. package/vendor/zotero/modules/translators/Cell Press.js +516 -0
  1044. package/vendor/zotero/modules/translators/Central and Eastern European Online Library Journals.js +313 -0
  1045. package/vendor/zotero/modules/translators/Champlain Society - Collection.js +220 -0
  1046. package/vendor/zotero/modules/translators/Chicago Journal of Theoretical Computer Science.js +203 -0
  1047. package/vendor/zotero/modules/translators/Christian Science Monitor.js +148 -0
  1048. package/vendor/zotero/modules/translators/Chronicling America.js +131 -0
  1049. package/vendor/zotero/modules/translators/CiNii Research.js +168 -0
  1050. package/vendor/zotero/modules/translators/Citavi 5 XML.js +516 -0
  1051. package/vendor/zotero/modules/translators/CiteSeer.js +196 -0
  1052. package/vendor/zotero/modules/translators/CiteULike.js +170 -0
  1053. package/vendor/zotero/modules/translators/Citizen Lab.js +347 -0
  1054. package/vendor/zotero/modules/translators/Civilization.ca.js +146 -0
  1055. package/vendor/zotero/modules/translators/Climate Change and Human Health Literature Portal.js +283 -0
  1056. package/vendor/zotero/modules/translators/Clinical Key.js +367 -0
  1057. package/vendor/zotero/modules/translators/Code4Lib Journal.js +143 -0
  1058. package/vendor/zotero/modules/translators/Colorado State Legislature.js +215 -0
  1059. package/vendor/zotero/modules/translators/Columbia University Press.js +238 -0
  1060. package/vendor/zotero/modules/translators/Common-Place.js +218 -0
  1061. package/vendor/zotero/modules/translators/Computer History Museum Archive.js +1319 -0
  1062. package/vendor/zotero/modules/translators/Copernicus.js +461 -0
  1063. package/vendor/zotero/modules/translators/Cornell LII.js +252 -0
  1064. package/vendor/zotero/modules/translators/Cornell University Press.js +235 -0
  1065. package/vendor/zotero/modules/translators/CourtListener.js +265 -0
  1066. package/vendor/zotero/modules/translators/CrossRef.js +486 -0
  1067. package/vendor/zotero/modules/translators/Crossref REST.js +1757 -0
  1068. package/vendor/zotero/modules/translators/Crossref Unixref XML.js +965 -0
  1069. package/vendor/zotero/modules/translators/Current Affairs.js +160 -0
  1070. package/vendor/zotero/modules/translators/Cyberpresse.js +131 -0
  1071. package/vendor/zotero/modules/translators/DABI.js +476 -0
  1072. package/vendor/zotero/modules/translators/DAI-Zenon.js +392 -0
  1073. package/vendor/zotero/modules/translators/DART-Europe.js +176 -0
  1074. package/vendor/zotero/modules/translators/DBLP Computer Science Bibliography.js +462 -0
  1075. package/vendor/zotero/modules/translators/DBpia.js +233 -0
  1076. package/vendor/zotero/modules/translators/DEPATISnet.js +373 -0
  1077. package/vendor/zotero/modules/translators/DOAJ.js +243 -0
  1078. package/vendor/zotero/modules/translators/DOI Content Negotiation.js +352 -0
  1079. package/vendor/zotero/modules/translators/DOI.js +322 -0
  1080. package/vendor/zotero/modules/translators/DPLA.js +425 -0
  1081. package/vendor/zotero/modules/translators/DSpace Intermediate Metadata.js +208 -0
  1082. package/vendor/zotero/modules/translators/DTU Orbit.js +155 -0
  1083. package/vendor/zotero/modules/translators/Dagens Nyheter.js +369 -0
  1084. package/vendor/zotero/modules/translators/Dagstuhl Research Online Publication Server.js +276 -0
  1085. package/vendor/zotero/modules/translators/Dar Almandumah.js +253 -0
  1086. package/vendor/zotero/modules/translators/Data.gov.js +225 -0
  1087. package/vendor/zotero/modules/translators/DataCite.js +125 -0
  1088. package/vendor/zotero/modules/translators/Databrary.js +184 -0
  1089. package/vendor/zotero/modules/translators/Datacite JSON.js +1182 -0
  1090. package/vendor/zotero/modules/translators/Dataverse.js +418 -0
  1091. package/vendor/zotero/modules/translators/Daum News.js +139 -0
  1092. package/vendor/zotero/modules/translators/De Gruyter Brill.js +674 -0
  1093. package/vendor/zotero/modules/translators/DeGruyter.js +457 -0
  1094. package/vendor/zotero/modules/translators/Defense Technical Information Center.js +146 -0
  1095. package/vendor/zotero/modules/translators/Delpher.js +413 -0
  1096. package/vendor/zotero/modules/translators/Demographic Research.js +164 -0
  1097. package/vendor/zotero/modules/translators/Denik CZ.js +273 -0
  1098. package/vendor/zotero/modules/translators/Der Freitag.js +236 -0
  1099. package/vendor/zotero/modules/translators/Der Spiegel.js +479 -0
  1100. package/vendor/zotero/modules/translators/Desiring God.js +216 -0
  1101. package/vendor/zotero/modules/translators/Deutsche Fotothek.js +364 -0
  1102. package/vendor/zotero/modules/translators/Deutsche Nationalbibliothek.js +594 -0
  1103. package/vendor/zotero/modules/translators/Dialnet.js +258 -0
  1104. package/vendor/zotero/modules/translators/Die Zeit.js +378 -0
  1105. package/vendor/zotero/modules/translators/DigiZeitschriften.js +269 -0
  1106. package/vendor/zotero/modules/translators/Digital Humanities Quarterly.js +207 -0
  1107. package/vendor/zotero/modules/translators/Digital Medievalist.js +149 -0
  1108. package/vendor/zotero/modules/translators/Digital Spy.js +215 -0
  1109. package/vendor/zotero/modules/translators/Dimensions.js +233 -0
  1110. package/vendor/zotero/modules/translators/Douban.js +316 -0
  1111. package/vendor/zotero/modules/translators/Dreier Neuerscheinungsdienst.js +209 -0
  1112. package/vendor/zotero/modules/translators/DrugBank.ca.js +209 -0
  1113. package/vendor/zotero/modules/translators/Dryad Digital Repository.js +323 -0
  1114. package/vendor/zotero/modules/translators/Duke University Press Books.js +250 -0
  1115. package/vendor/zotero/modules/translators/E-periodica Switzerland.js +347 -0
  1116. package/vendor/zotero/modules/translators/EBSCO Discovery Layer.js +147 -0
  1117. package/vendor/zotero/modules/translators/EBSCOhost.js +592 -0
  1118. package/vendor/zotero/modules/translators/EIDR.js +184 -0
  1119. package/vendor/zotero/modules/translators/EPA National Library Catalog.js +245 -0
  1120. package/vendor/zotero/modules/translators/ERIC.js +986 -0
  1121. package/vendor/zotero/modules/translators/ESpacenet.js +465 -0
  1122. package/vendor/zotero/modules/translators/EUR-Lex.js +423 -0
  1123. package/vendor/zotero/modules/translators/Eastview.js +336 -0
  1124. package/vendor/zotero/modules/translators/Edinburgh University Press Journals.js +178 -0
  1125. package/vendor/zotero/modules/translators/Education Week.js +197 -0
  1126. package/vendor/zotero/modules/translators/El Comercio (Peru).js +347 -0
  1127. package/vendor/zotero/modules/translators/El Pais.js +262 -0
  1128. package/vendor/zotero/modules/translators/Electronic Colloquium on Computational Complexity.js +230 -0
  1129. package/vendor/zotero/modules/translators/Elicit.js +120 -0
  1130. package/vendor/zotero/modules/translators/Elsevier Health Journals.js +531 -0
  1131. package/vendor/zotero/modules/translators/Elsevier Pure.js +420 -0
  1132. package/vendor/zotero/modules/translators/Embedded Metadata.js +1951 -0
  1133. package/vendor/zotero/modules/translators/Emerald Insight.js +626 -0
  1134. package/vendor/zotero/modules/translators/Encyclopedia of Chicago.js +162 -0
  1135. package/vendor/zotero/modules/translators/Encyclopedia of Korean Culture.js +221 -0
  1136. package/vendor/zotero/modules/translators/Endnote XML.js +1407 -0
  1137. package/vendor/zotero/modules/translators/Engineering Village.js +139 -0
  1138. package/vendor/zotero/modules/translators/Envidat.js +331 -0
  1139. package/vendor/zotero/modules/translators/Epicurious.js +144 -0
  1140. package/vendor/zotero/modules/translators/Erudit.js +272 -0
  1141. package/vendor/zotero/modules/translators/Euclid.js +220 -0
  1142. package/vendor/zotero/modules/translators/EurasiaNet.js +109 -0
  1143. package/vendor/zotero/modules/translators/Eurogamer.js +112 -0
  1144. package/vendor/zotero/modules/translators/EurogamerUSgamer.js +380 -0
  1145. package/vendor/zotero/modules/translators/Europe PMC.js +448 -0
  1146. package/vendor/zotero/modules/translators/Evernote.js +104 -0
  1147. package/vendor/zotero/modules/translators/F1000 Research.js +655 -0
  1148. package/vendor/zotero/modules/translators/FAO Publications.js +1139 -0
  1149. package/vendor/zotero/modules/translators/FAZ.NET.js +231 -0
  1150. package/vendor/zotero/modules/translators/Fachportal Padagogik.js +839 -0
  1151. package/vendor/zotero/modules/translators/Factiva.js +302 -0
  1152. package/vendor/zotero/modules/translators/Failed Architecture.js +114 -0
  1153. package/vendor/zotero/modules/translators/Fairfax Australia.js +200 -0
  1154. package/vendor/zotero/modules/translators/Fatcat.js +425 -0
  1155. package/vendor/zotero/modules/translators/Figshare.js +191 -0
  1156. package/vendor/zotero/modules/translators/Financial Times.js +187 -0
  1157. package/vendor/zotero/modules/translators/Finna.js +357 -0
  1158. package/vendor/zotero/modules/translators/Flickr.js +318 -0
  1159. package/vendor/zotero/modules/translators/Foreign Affairs.js +485 -0
  1160. package/vendor/zotero/modules/translators/Foreign Policy.js +146 -0
  1161. package/vendor/zotero/modules/translators/FreeCite.js +95 -0
  1162. package/vendor/zotero/modules/translators/FreePatentsOnline.js +265 -0
  1163. package/vendor/zotero/modules/translators/Frieze.js +243 -0
  1164. package/vendor/zotero/modules/translators/Frontiers.js +667 -0
  1165. package/vendor/zotero/modules/translators/GMS German Medical Science.js +319 -0
  1166. package/vendor/zotero/modules/translators/GPO Access e-CFR.js +134 -0
  1167. package/vendor/zotero/modules/translators/Gale Databases.js +324 -0
  1168. package/vendor/zotero/modules/translators/GaleGDC.js +189 -0
  1169. package/vendor/zotero/modules/translators/Galegroup.js +327 -0
  1170. package/vendor/zotero/modules/translators/Gallica.js +194 -0
  1171. package/vendor/zotero/modules/translators/Game Studies.js +155 -0
  1172. package/vendor/zotero/modules/translators/GameSpot.js +199 -0
  1173. package/vendor/zotero/modules/translators/GameStar GamePro.js +198 -0
  1174. package/vendor/zotero/modules/translators/Gasyrlar Awazy.js +156 -0
  1175. package/vendor/zotero/modules/translators/Gemeinsamer Bibliotheksverbund ISBN.js +23 -0
  1176. package/vendor/zotero/modules/translators/Gene Ontology.js +128 -0
  1177. package/vendor/zotero/modules/translators/Github.js +268 -0
  1178. package/vendor/zotero/modules/translators/Globes.js +243 -0
  1179. package/vendor/zotero/modules/translators/Gmail.js +64 -0
  1180. package/vendor/zotero/modules/translators/Goodreads.js +219 -0
  1181. package/vendor/zotero/modules/translators/Google Books.js +552 -0
  1182. package/vendor/zotero/modules/translators/Google Patents.js +959 -0
  1183. package/vendor/zotero/modules/translators/Google Play.js +186 -0
  1184. package/vendor/zotero/modules/translators/Google Presentation.js +104 -0
  1185. package/vendor/zotero/modules/translators/Google Research.js +221 -0
  1186. package/vendor/zotero/modules/translators/Google Scholar.js +1361 -0
  1187. package/vendor/zotero/modules/translators/Gulag Many Days, Many Lives.js +179 -0
  1188. package/vendor/zotero/modules/translators/HAL Archives Ouvertes.js +429 -0
  1189. package/vendor/zotero/modules/translators/HCSP.js +312 -0
  1190. package/vendor/zotero/modules/translators/HUDOC.js +650 -0
  1191. package/vendor/zotero/modules/translators/Haaretz.js +562 -0
  1192. package/vendor/zotero/modules/translators/Habr.js +232 -0
  1193. package/vendor/zotero/modules/translators/Handelszeitung.js +273 -0
  1194. package/vendor/zotero/modules/translators/Hanrei Watch.js +123 -0
  1195. package/vendor/zotero/modules/translators/Harper's Magazine.js +365 -0
  1196. package/vendor/zotero/modules/translators/Harpers.js +209 -0
  1197. package/vendor/zotero/modules/translators/Harvard Business Review.js +326 -0
  1198. package/vendor/zotero/modules/translators/Harvard Caselaw Access Project.js +244 -0
  1199. package/vendor/zotero/modules/translators/Harvard University Press Books.js +286 -0
  1200. package/vendor/zotero/modules/translators/Hathi Trust.js +164 -0
  1201. package/vendor/zotero/modules/translators/HathiTrust.js +311 -0
  1202. package/vendor/zotero/modules/translators/HeinOnline.js +266 -0
  1203. package/vendor/zotero/modules/translators/Heise.js +200 -0
  1204. package/vendor/zotero/modules/translators/Herder.js +236 -0
  1205. package/vendor/zotero/modules/translators/HighBeam.js +198 -0
  1206. package/vendor/zotero/modules/translators/HighWire 2.0.js +1355 -0
  1207. package/vendor/zotero/modules/translators/HighWire.js +209 -0
  1208. package/vendor/zotero/modules/translators/Hindawi Publishers.js +177 -0
  1209. package/vendor/zotero/modules/translators/Hispanic-American Periodical Index.js +236 -0
  1210. package/vendor/zotero/modules/translators/Homeland Security Digital Library.js +426 -0
  1211. package/vendor/zotero/modules/translators/Hoovers.js +89 -0
  1212. package/vendor/zotero/modules/translators/Huff Post.js +223 -0
  1213. package/vendor/zotero/modules/translators/Human Rights Watch.js +450 -0
  1214. package/vendor/zotero/modules/translators/IBISWorld.js +171 -0
  1215. package/vendor/zotero/modules/translators/IDEA ALM.js +536 -0
  1216. package/vendor/zotero/modules/translators/IEEE Computer Society.js +429 -0
  1217. package/vendor/zotero/modules/translators/IEEE Xplore.js +1000 -0
  1218. package/vendor/zotero/modules/translators/IETF.js +451 -0
  1219. package/vendor/zotero/modules/translators/IGN.js +136 -0
  1220. package/vendor/zotero/modules/translators/IMDb.js +566 -0
  1221. package/vendor/zotero/modules/translators/INSPIRE.js +247 -0
  1222. package/vendor/zotero/modules/translators/IPCC.js +757 -0
  1223. package/vendor/zotero/modules/translators/ISTC.js +181 -0
  1224. package/vendor/zotero/modules/translators/Idref.js +179 -0
  1225. package/vendor/zotero/modules/translators/In These Times.js +196 -0
  1226. package/vendor/zotero/modules/translators/InfoTrac.js +279 -0
  1227. package/vendor/zotero/modules/translators/Informationssystem Medienpaedagogik.js +305 -0
  1228. package/vendor/zotero/modules/translators/IngentaConnect.js +312 -0
  1229. package/vendor/zotero/modules/translators/Inside Higher Ed.js +167 -0
  1230. package/vendor/zotero/modules/translators/Insignia OPAC.js +114 -0
  1231. package/vendor/zotero/modules/translators/Institute of Contemporary Art.js +180 -0
  1232. package/vendor/zotero/modules/translators/Institute of Physics.js +340 -0
  1233. package/vendor/zotero/modules/translators/Integrum.js +173 -0
  1234. package/vendor/zotero/modules/translators/Intellixir.js +264 -0
  1235. package/vendor/zotero/modules/translators/Inter-Research Science Center.js +185 -0
  1236. package/vendor/zotero/modules/translators/International Nuclear Information System.js +285 -0
  1237. package/vendor/zotero/modules/translators/Internet Archive Scholar.js +106 -0
  1238. package/vendor/zotero/modules/translators/Internet Archive Wayback Machine.js +152 -0
  1239. package/vendor/zotero/modules/translators/Internet Archive.js +552 -0
  1240. package/vendor/zotero/modules/translators/InvenioRDM.js +1260 -0
  1241. package/vendor/zotero/modules/translators/Isidore.js +235 -0
  1242. package/vendor/zotero/modules/translators/J-Stage.js +272 -0
  1243. package/vendor/zotero/modules/translators/JETS.js +122 -0
  1244. package/vendor/zotero/modules/translators/JISC Historical Texts.js +273 -0
  1245. package/vendor/zotero/modules/translators/JRC Publications Repository.js +569 -0
  1246. package/vendor/zotero/modules/translators/JSTOR.js +821 -0
  1247. package/vendor/zotero/modules/translators/Jahrbuch.js +213 -0
  1248. package/vendor/zotero/modules/translators/Japan Times Online.js +138 -0
  1249. package/vendor/zotero/modules/translators/Journal of Electronic Publishing.js +147 -0
  1250. package/vendor/zotero/modules/translators/Journal of Extension.js +288 -0
  1251. package/vendor/zotero/modules/translators/Journal of Machine Learning Research.js +441 -0
  1252. package/vendor/zotero/modules/translators/Journal of Religion and Society.js +174 -0
  1253. package/vendor/zotero/modules/translators/JurPC.js +274 -0
  1254. package/vendor/zotero/modules/translators/Juricaf.js +141 -0
  1255. package/vendor/zotero/modules/translators/Juris.js +728 -0
  1256. package/vendor/zotero/modules/translators/K10plus ISBN.js +386 -0
  1257. package/vendor/zotero/modules/translators/KStudy.js +632 -0
  1258. package/vendor/zotero/modules/translators/Kanopy.js +358 -0
  1259. package/vendor/zotero/modules/translators/Khaama Press.js +249 -0
  1260. package/vendor/zotero/modules/translators/KitapYurdu.com.js +376 -0
  1261. package/vendor/zotero/modules/translators/Kommersant.js +174 -0
  1262. package/vendor/zotero/modules/translators/Korean National Library.js +621 -0
  1263. package/vendor/zotero/modules/translators/L'Annee Philologique.js +267 -0
  1264. package/vendor/zotero/modules/translators/LA Times.js +239 -0
  1265. package/vendor/zotero/modules/translators/LIBRIS ISBN.js +103 -0
  1266. package/vendor/zotero/modules/translators/LIVIVO.js +260 -0
  1267. package/vendor/zotero/modules/translators/LWN.net.js +350 -0
  1268. package/vendor/zotero/modules/translators/La Croix.js +237 -0
  1269. package/vendor/zotero/modules/translators/La Nacion (Argentina).js +231 -0
  1270. package/vendor/zotero/modules/translators/La Presse.js +218 -0
  1271. package/vendor/zotero/modules/translators/La Republica (Peru).js +174 -0
  1272. package/vendor/zotero/modules/translators/Lagen.nu.js +214 -0
  1273. package/vendor/zotero/modules/translators/Landesbibliographie Baden-Wurttemberg.js +324 -0
  1274. package/vendor/zotero/modules/translators/Lapham's Quarterly.js +1062 -0
  1275. package/vendor/zotero/modules/translators/Le Devoir.js +167 -0
  1276. package/vendor/zotero/modules/translators/Le Figaro.js +225 -0
  1277. package/vendor/zotero/modules/translators/Le Maitron.js +484 -0
  1278. package/vendor/zotero/modules/translators/Le Monde.js +258 -0
  1279. package/vendor/zotero/modules/translators/Le monde diplomatique.js +200 -0
  1280. package/vendor/zotero/modules/translators/Legifrance.js +641 -0
  1281. package/vendor/zotero/modules/translators/Legislative Insight.js +406 -0
  1282. package/vendor/zotero/modules/translators/Lexis+.js +264 -0
  1283. package/vendor/zotero/modules/translators/LexisNexis.js +505 -0
  1284. package/vendor/zotero/modules/translators/Libraries Tasmania.js +778 -0
  1285. package/vendor/zotero/modules/translators/Library Catalog (Aleph).js +385 -0
  1286. package/vendor/zotero/modules/translators/Library Catalog (Amicus).js +254 -0
  1287. package/vendor/zotero/modules/translators/Library Catalog (Aquabrowser).js +253 -0
  1288. package/vendor/zotero/modules/translators/Library Catalog (BiblioCommons).js +249 -0
  1289. package/vendor/zotero/modules/translators/Library Catalog (Blacklight).js +341 -0
  1290. package/vendor/zotero/modules/translators/Library Catalog (Capita Prism).js +162 -0
  1291. package/vendor/zotero/modules/translators/Library Catalog (DRA).js +203 -0
  1292. package/vendor/zotero/modules/translators/Library Catalog (Dynix).js +315 -0
  1293. package/vendor/zotero/modules/translators/Library Catalog (EBSCO Locate).js +349 -0
  1294. package/vendor/zotero/modules/translators/Library Catalog (Encore).js +211 -0
  1295. package/vendor/zotero/modules/translators/Library Catalog (GEAC).js +104 -0
  1296. package/vendor/zotero/modules/translators/Library Catalog (InnoPAC).js +305 -0
  1297. package/vendor/zotero/modules/translators/Library Catalog (Koha).js +225 -0
  1298. package/vendor/zotero/modules/translators/Library Catalog (Mango).js +285 -0
  1299. package/vendor/zotero/modules/translators/Library Catalog (OPALS).js +200 -0
  1300. package/vendor/zotero/modules/translators/Library Catalog (PICA).js +2120 -0
  1301. package/vendor/zotero/modules/translators/Library Catalog (PICA2).js +331 -0
  1302. package/vendor/zotero/modules/translators/Library Catalog (Pika).js +488 -0
  1303. package/vendor/zotero/modules/translators/Library Catalog (Polaris).js +183 -0
  1304. package/vendor/zotero/modules/translators/Library Catalog (Quolto).js +320 -0
  1305. package/vendor/zotero/modules/translators/Library Catalog (RERO ILS).js +754 -0
  1306. package/vendor/zotero/modules/translators/Library Catalog (SIRSI eLibrary).js +407 -0
  1307. package/vendor/zotero/modules/translators/Library Catalog (SIRSI).js +452 -0
  1308. package/vendor/zotero/modules/translators/Library Catalog (SLIMS).js +146 -0
  1309. package/vendor/zotero/modules/translators/Library Catalog (TIND ILS).js +773 -0
  1310. package/vendor/zotero/modules/translators/Library Catalog (TLCYouSeeMore).js +132 -0
  1311. package/vendor/zotero/modules/translators/Library Catalog (TinREAD).js +277 -0
  1312. package/vendor/zotero/modules/translators/Library Catalog (VTLS).js +125 -0
  1313. package/vendor/zotero/modules/translators/Library Catalog (Visual Library 2021).js +765 -0
  1314. package/vendor/zotero/modules/translators/Library Catalog (Voyager 7).js +199 -0
  1315. package/vendor/zotero/modules/translators/Library Catalog (Voyager).js +212 -0
  1316. package/vendor/zotero/modules/translators/Library Genesis.js +337 -0
  1317. package/vendor/zotero/modules/translators/Library Hub Discover.js +359 -0
  1318. package/vendor/zotero/modules/translators/Library of Congress Digital Collections.js +869 -0
  1319. package/vendor/zotero/modules/translators/Library of Congress ISBN.js +86 -0
  1320. package/vendor/zotero/modules/translators/LingBuzz.js +359 -0
  1321. package/vendor/zotero/modules/translators/Lippincott Williams and Wilkins.js +341 -0
  1322. package/vendor/zotero/modules/translators/Literary Hub.js +950 -0
  1323. package/vendor/zotero/modules/translators/Litres.js +236 -0
  1324. package/vendor/zotero/modules/translators/LiveJournal.js +219 -0
  1325. package/vendor/zotero/modules/translators/London Review of Books.js +291 -0
  1326. package/vendor/zotero/modules/translators/LookUs.js +260 -0
  1327. package/vendor/zotero/modules/translators/Lulu.js +264 -0
  1328. package/vendor/zotero/modules/translators/MAB2.js +373 -0
  1329. package/vendor/zotero/modules/translators/MARC.js +1080 -0
  1330. package/vendor/zotero/modules/translators/MARCXML.js +489 -0
  1331. package/vendor/zotero/modules/translators/MCV.js +258 -0
  1332. package/vendor/zotero/modules/translators/MDPI Journals.js +356 -0
  1333. package/vendor/zotero/modules/translators/MEDLINEnbib.js +1561 -0
  1334. package/vendor/zotero/modules/translators/METS.js +384 -0
  1335. package/vendor/zotero/modules/translators/MIDAS Journals.js +343 -0
  1336. package/vendor/zotero/modules/translators/MIT Press Books.js +637 -0
  1337. package/vendor/zotero/modules/translators/MIT Press Journals.js +176 -0
  1338. package/vendor/zotero/modules/translators/MODS.js +2545 -0
  1339. package/vendor/zotero/modules/translators/MPG PuRe.js +541 -0
  1340. package/vendor/zotero/modules/translators/Mailman.js +136 -0
  1341. package/vendor/zotero/modules/translators/Mainichi Daily News.js +189 -0
  1342. package/vendor/zotero/modules/translators/Mastodon.js +198 -0
  1343. package/vendor/zotero/modules/translators/Matbugat.ru.js +110 -0
  1344. package/vendor/zotero/modules/translators/Max Planck Institute for the History of Science Virtual Laboratory Library.js +136 -0
  1345. package/vendor/zotero/modules/translators/Medium.js +208 -0
  1346. package/vendor/zotero/modules/translators/MetaLib.js +126 -0
  1347. package/vendor/zotero/modules/translators/Microbiology Society Journals.js +343 -0
  1348. package/vendor/zotero/modules/translators/Microsoft Academic.js +424 -0
  1349. package/vendor/zotero/modules/translators/Mikromarc.js +207 -0
  1350. package/vendor/zotero/modules/translators/Milli Kutuphane.js +244 -0
  1351. package/vendor/zotero/modules/translators/Musee du Louvre.js +265 -0
  1352. package/vendor/zotero/modules/translators/NASA ADS.js +889 -0
  1353. package/vendor/zotero/modules/translators/NASA NTRS.js +610 -0
  1354. package/vendor/zotero/modules/translators/NCBI Nucleotide.js +227 -0
  1355. package/vendor/zotero/modules/translators/NPR.js +341 -0
  1356. package/vendor/zotero/modules/translators/NRC Research Press.js +181 -0
  1357. package/vendor/zotero/modules/translators/NRC.nl.js +226 -0
  1358. package/vendor/zotero/modules/translators/NTSB Accident Reports.js +226 -0
  1359. package/vendor/zotero/modules/translators/NYPL Menus.js +275 -0
  1360. package/vendor/zotero/modules/translators/NYPL Research Catalog.js +458 -0
  1361. package/vendor/zotero/modules/translators/NYTimes.com.js +858 -0
  1362. package/vendor/zotero/modules/translators/NZZ.ch.js +272 -0
  1363. package/vendor/zotero/modules/translators/Nagoya University OPAC.js +336 -0
  1364. package/vendor/zotero/modules/translators/National Academies Press.js +243 -0
  1365. package/vendor/zotero/modules/translators/National Agriculture Library.js +524 -0
  1366. package/vendor/zotero/modules/translators/National Archive of the UK.js +237 -0
  1367. package/vendor/zotero/modules/translators/National Archives of Australia.js +522 -0
  1368. package/vendor/zotero/modules/translators/National Archives of South Africa.js +122 -0
  1369. package/vendor/zotero/modules/translators/National Archives of the United States.js +278 -0
  1370. package/vendor/zotero/modules/translators/National Bureau of Economic Research.js +363 -0
  1371. package/vendor/zotero/modules/translators/National Diet Library Catalogue.js +333 -0
  1372. package/vendor/zotero/modules/translators/National Gallery of Art - USA.js +149 -0
  1373. package/vendor/zotero/modules/translators/National Gallery of Australia.js +252 -0
  1374. package/vendor/zotero/modules/translators/National Library of Australia (new catalog).js +223 -0
  1375. package/vendor/zotero/modules/translators/National Library of Belarus.js +171 -0
  1376. package/vendor/zotero/modules/translators/National Library of Norway.js +310 -0
  1377. package/vendor/zotero/modules/translators/National Library of Poland ISBN.js +140 -0
  1378. package/vendor/zotero/modules/translators/National Post.js +186 -0
  1379. package/vendor/zotero/modules/translators/National Technical Reports Library.js +276 -0
  1380. package/vendor/zotero/modules/translators/National Transportation Library ROSA P.js +562 -0
  1381. package/vendor/zotero/modules/translators/Nature Publishing Group.js +3394 -0
  1382. package/vendor/zotero/modules/translators/Neural Information Processing Systems.js +385 -0
  1383. package/vendor/zotero/modules/translators/New Left Review.js +245 -0
  1384. package/vendor/zotero/modules/translators/New Zealand Herald.js +282 -0
  1385. package/vendor/zotero/modules/translators/Newlines Magazine.js +190 -0
  1386. package/vendor/zotero/modules/translators/News Corp Australia.js +251 -0
  1387. package/vendor/zotero/modules/translators/NewsBank.js +202 -0
  1388. package/vendor/zotero/modules/translators/NewsnetTamedia.js +509 -0
  1389. package/vendor/zotero/modules/translators/Noor Digital Library.js +267 -0
  1390. package/vendor/zotero/modules/translators/Note HTML.js +206 -0
  1391. package/vendor/zotero/modules/translators/Note Markdown.js +1638 -0
  1392. package/vendor/zotero/modules/translators/Notre Dame Philosophical Reviews.js +201 -0
  1393. package/vendor/zotero/modules/translators/Nuclear Receptor Signaling.js +241 -0
  1394. package/vendor/zotero/modules/translators/OAPEN.js +331 -0
  1395. package/vendor/zotero/modules/translators/OECD.js +216 -0
  1396. package/vendor/zotero/modules/translators/ORCID.js +104 -0
  1397. package/vendor/zotero/modules/translators/OSF Preprints.js +417 -0
  1398. package/vendor/zotero/modules/translators/OSTI Energy Citations.js +202 -0
  1399. package/vendor/zotero/modules/translators/OVID Tagged.js +1226 -0
  1400. package/vendor/zotero/modules/translators/OZON.ru.js +465 -0
  1401. package/vendor/zotero/modules/translators/OhioLINK.js +43 -0
  1402. package/vendor/zotero/modules/translators/Old Bailey Online.js +315 -0
  1403. package/vendor/zotero/modules/translators/Open Conf.js +172 -0
  1404. package/vendor/zotero/modules/translators/Open Journal Systems.js +729 -0
  1405. package/vendor/zotero/modules/translators/Open Knowledge Repository.js +811 -0
  1406. package/vendor/zotero/modules/translators/OpenAlex JSON.js +740 -0
  1407. package/vendor/zotero/modules/translators/OpenAlex.js +444 -0
  1408. package/vendor/zotero/modules/translators/OpenEdition Books.js +155 -0
  1409. package/vendor/zotero/modules/translators/OpenEdition Journals.js +432 -0
  1410. package/vendor/zotero/modules/translators/Optical Society of America.js +562 -0
  1411. package/vendor/zotero/modules/translators/Optimization Online.js +418 -0
  1412. package/vendor/zotero/modules/translators/Ovid OCE.js +353 -0
  1413. package/vendor/zotero/modules/translators/Ovid.js +302 -0
  1414. package/vendor/zotero/modules/translators/Oxford Dictionaries Premium.js +194 -0
  1415. package/vendor/zotero/modules/translators/Oxford English Dictionary.js +122 -0
  1416. package/vendor/zotero/modules/translators/Oxford Music and Art Online.js +120 -0
  1417. package/vendor/zotero/modules/translators/Oxford Reference.js +202 -0
  1418. package/vendor/zotero/modules/translators/Oxford University Press.js +277 -0
  1419. package/vendor/zotero/modules/translators/PC Gamer.js +302 -0
  1420. package/vendor/zotero/modules/translators/PC Games.js +128 -0
  1421. package/vendor/zotero/modules/translators/PEI Archival Information Network.js +242 -0
  1422. package/vendor/zotero/modules/translators/PEP Web.js +165 -0
  1423. package/vendor/zotero/modules/translators/PKP Catalog Systems.js +1455 -0
  1424. package/vendor/zotero/modules/translators/PLoS Journals.js +284 -0
  1425. package/vendor/zotero/modules/translators/PRC History Review.js +298 -0
  1426. package/vendor/zotero/modules/translators/Pajhwok Afghan News.js +198 -0
  1427. package/vendor/zotero/modules/translators/Papers Past.js +297 -0
  1428. package/vendor/zotero/modules/translators/Paris Review.js +227 -0
  1429. package/vendor/zotero/modules/translators/Pastebin.js +199 -0
  1430. package/vendor/zotero/modules/translators/Patents - USPTO.js +210 -0
  1431. package/vendor/zotero/modules/translators/Peeters.js +587 -0
  1432. package/vendor/zotero/modules/translators/Perceiving Systems.js +350 -0
  1433. package/vendor/zotero/modules/translators/Perlego.js +416 -0
  1434. package/vendor/zotero/modules/translators/PhilPapers.js +233 -0
  1435. package/vendor/zotero/modules/translators/Philosopher's Imprint.js +169 -0
  1436. package/vendor/zotero/modules/translators/Pleade.js +329 -0
  1437. package/vendor/zotero/modules/translators/Polygon.js +270 -0
  1438. package/vendor/zotero/modules/translators/Potsdamer Neueste Nachrichten.js +188 -0
  1439. package/vendor/zotero/modules/translators/Premium Times.js +144 -0
  1440. package/vendor/zotero/modules/translators/Preprints.org.js +305 -0
  1441. package/vendor/zotero/modules/translators/Prime 9ja Online.js +289 -0
  1442. package/vendor/zotero/modules/translators/Primo 2018.js +126 -0
  1443. package/vendor/zotero/modules/translators/Primo Normalized XML.js +987 -0
  1444. package/vendor/zotero/modules/translators/Primo.js +322 -0
  1445. package/vendor/zotero/modules/translators/ProMED.js +66 -0
  1446. package/vendor/zotero/modules/translators/ProQuest Ebook Central.js +226 -0
  1447. package/vendor/zotero/modules/translators/ProQuest PolicyFile.js +115 -0
  1448. package/vendor/zotero/modules/translators/ProQuest.js +2210 -0
  1449. package/vendor/zotero/modules/translators/Probing the Past.js +151 -0
  1450. package/vendor/zotero/modules/translators/Project Gutenberg.js +191 -0
  1451. package/vendor/zotero/modules/translators/Project MUSE.js +451 -0
  1452. package/vendor/zotero/modules/translators/Protein Data Bank.js +445 -0
  1453. package/vendor/zotero/modules/translators/PubFactory Journals.js +712 -0
  1454. package/vendor/zotero/modules/translators/PubMed Central.js +577 -0
  1455. package/vendor/zotero/modules/translators/PubMed XML.js +1139 -0
  1456. package/vendor/zotero/modules/translators/PubMed.js +1317 -0
  1457. package/vendor/zotero/modules/translators/PubPub.js +530 -0
  1458. package/vendor/zotero/modules/translators/Pubget.js +164 -0
  1459. package/vendor/zotero/modules/translators/Public Record Office Victoria.js +252 -0
  1460. package/vendor/zotero/modules/translators/Publications Office of the European Union.js +540 -0
  1461. package/vendor/zotero/modules/translators/Publications du Quebec.js +225 -0
  1462. package/vendor/zotero/modules/translators/PyPI.js +288 -0
  1463. package/vendor/zotero/modules/translators/Qatar Digital Library.js +802 -0
  1464. package/vendor/zotero/modules/translators/Queensland State Archives.js +303 -0
  1465. package/vendor/zotero/modules/translators/R-Packages.js +410 -0
  1466. package/vendor/zotero/modules/translators/RAND.js +283 -0
  1467. package/vendor/zotero/modules/translators/RDF.js +1780 -0
  1468. package/vendor/zotero/modules/translators/REDALYC.js +196 -0
  1469. package/vendor/zotero/modules/translators/RIS.js +7265 -0
  1470. package/vendor/zotero/modules/translators/RSC Publishing.js +250 -0
  1471. package/vendor/zotero/modules/translators/Radio Free Europe Radio Liberty.js +706 -0
  1472. package/vendor/zotero/modules/translators/RePEc - Econpapers.js +725 -0
  1473. package/vendor/zotero/modules/translators/RePEc - IDEAS.js +337 -0
  1474. package/vendor/zotero/modules/translators/Rechtspraak.nl.js +295 -0
  1475. package/vendor/zotero/modules/translators/RefWorks Tagged.js +1185 -0
  1476. package/vendor/zotero/modules/translators/ReferBibIX.js +463 -0
  1477. package/vendor/zotero/modules/translators/Regeringskansliet.js +89 -0
  1478. package/vendor/zotero/modules/translators/Research Square.js +335 -0
  1479. package/vendor/zotero/modules/translators/ResearchGate.js +394 -0
  1480. package/vendor/zotero/modules/translators/Retsinformation.js +348 -0
  1481. package/vendor/zotero/modules/translators/Reuters.js +255 -0
  1482. package/vendor/zotero/modules/translators/Revues.org.js +378 -0
  1483. package/vendor/zotero/modules/translators/Rock, Paper, Shotgun.js +304 -0
  1484. package/vendor/zotero/modules/translators/Roll Call.js +173 -0
  1485. package/vendor/zotero/modules/translators/Russian State Library.js +1517 -0
  1486. package/vendor/zotero/modules/translators/SAE Papers.js +241 -0
  1487. package/vendor/zotero/modules/translators/SAGE Journals.js +427 -0
  1488. package/vendor/zotero/modules/translators/SAGE Knowledge.js +505 -0
  1489. package/vendor/zotero/modules/translators/SAILDART.js +364 -0
  1490. package/vendor/zotero/modules/translators/SALT Research Archives.js +196 -0
  1491. package/vendor/zotero/modules/translators/SFU IPinCH.js +946 -0
  1492. package/vendor/zotero/modules/translators/SIPRI.js +256 -0
  1493. package/vendor/zotero/modules/translators/SIRS Knowledge Source.js +546 -0
  1494. package/vendor/zotero/modules/translators/SLUB Dresden.js +300 -0
  1495. package/vendor/zotero/modules/translators/SORA.js +340 -0
  1496. package/vendor/zotero/modules/translators/SSOAR.js +399 -0
  1497. package/vendor/zotero/modules/translators/SSRN.js +235 -0
  1498. package/vendor/zotero/modules/translators/SVT Nyheter.js +381 -0
  1499. package/vendor/zotero/modules/translators/Sacramento Bee.js +274 -0
  1500. package/vendor/zotero/modules/translators/Safari Books Online.js +391 -0
  1501. package/vendor/zotero/modules/translators/Scholars Portal Journals.js +220 -0
  1502. package/vendor/zotero/modules/translators/Scholia.js +189 -0
  1503. package/vendor/zotero/modules/translators/Schweizer Radio und Fernsehen SRF.js +152 -0
  1504. package/vendor/zotero/modules/translators/SciELO.js +440 -0
  1505. package/vendor/zotero/modules/translators/ScienceDirect.js +1304 -0
  1506. package/vendor/zotero/modules/translators/Scopus.js +418 -0
  1507. package/vendor/zotero/modules/translators/Semantic Scholar.js +513 -0
  1508. package/vendor/zotero/modules/translators/Silverchair.js +886 -0
  1509. package/vendor/zotero/modules/translators/Slate.js +228 -0
  1510. package/vendor/zotero/modules/translators/SlideShare.js +112 -0
  1511. package/vendor/zotero/modules/translators/Spiegel Online.js +343 -0
  1512. package/vendor/zotero/modules/translators/Springer Link.js +696 -0
  1513. package/vendor/zotero/modules/translators/Stack Exchange.js +134 -0
  1514. package/vendor/zotero/modules/translators/Standard Ebooks.js +198 -0
  1515. package/vendor/zotero/modules/translators/Stanford Encyclopedia of Philosophy.js +285 -0
  1516. package/vendor/zotero/modules/translators/Stanford University Press.js +343 -0
  1517. package/vendor/zotero/modules/translators/State Records Office of Western Australia.js +439 -0
  1518. package/vendor/zotero/modules/translators/Stitcher.js +141 -0
  1519. package/vendor/zotero/modules/translators/Store norske leksikon.js +291 -0
  1520. package/vendor/zotero/modules/translators/Stuff.co.nz.js +446 -0
  1521. package/vendor/zotero/modules/translators/Substack.js +237 -0
  1522. package/vendor/zotero/modules/translators/Sud Ouest.js +181 -0
  1523. package/vendor/zotero/modules/translators/Sueddeutsche.de.js +205 -0
  1524. package/vendor/zotero/modules/translators/Summon 2.js +117 -0
  1525. package/vendor/zotero/modules/translators/Superlib.js +647 -0
  1526. package/vendor/zotero/modules/translators/Svenska Dagbladet.js +274 -0
  1527. package/vendor/zotero/modules/translators/Sveriges radio.js +416 -0
  1528. package/vendor/zotero/modules/translators/TEI.js +648 -0
  1529. package/vendor/zotero/modules/translators/TV by the Numbers.js +194 -0
  1530. package/vendor/zotero/modules/translators/TVNZ.js +165 -0
  1531. package/vendor/zotero/modules/translators/Tagesspiegel.js +249 -0
  1532. package/vendor/zotero/modules/translators/Talis Aspire.js +316 -0
  1533. package/vendor/zotero/modules/translators/TalisPrism.js +445 -0
  1534. package/vendor/zotero/modules/translators/Tatknigafund.js +174 -0
  1535. package/vendor/zotero/modules/translators/Tatpressa.ru.js +121 -0
  1536. package/vendor/zotero/modules/translators/Taylor & Francis eBooks.js +334 -0
  1537. package/vendor/zotero/modules/translators/Taylor and Francis+NEJM.js +813 -0
  1538. package/vendor/zotero/modules/translators/Tesis Doctorals en Xarxa.js +233 -0
  1539. package/vendor/zotero/modules/translators/The Art Newspaper.js +268 -0
  1540. package/vendor/zotero/modules/translators/The Atlantic.js +535 -0
  1541. package/vendor/zotero/modules/translators/The Australian.js +105 -0
  1542. package/vendor/zotero/modules/translators/The Boston Globe.js +285 -0
  1543. package/vendor/zotero/modules/translators/The Chronicle of Higher Education.js +308 -0
  1544. package/vendor/zotero/modules/translators/The Daily Beast.js +183 -0
  1545. package/vendor/zotero/modules/translators/The Economic Times - The Times of India.js +305 -0
  1546. package/vendor/zotero/modules/translators/The Economic Times.js +191 -0
  1547. package/vendor/zotero/modules/translators/The Economist.js +207 -0
  1548. package/vendor/zotero/modules/translators/The Free Dictionary.js +58 -0
  1549. package/vendor/zotero/modules/translators/The Globe and Mail.js +241 -0
  1550. package/vendor/zotero/modules/translators/The Guardian.js +717 -0
  1551. package/vendor/zotero/modules/translators/The Hamilton Spectator.js +129 -0
  1552. package/vendor/zotero/modules/translators/The Hindu (old).js +128 -0
  1553. package/vendor/zotero/modules/translators/The Hindu.js +318 -0
  1554. package/vendor/zotero/modules/translators/The Independent.js +184 -0
  1555. package/vendor/zotero/modules/translators/The Intercept.js +258 -0
  1556. package/vendor/zotero/modules/translators/The Met.js +300 -0
  1557. package/vendor/zotero/modules/translators/The Microfinance Gateway.js +174 -0
  1558. package/vendor/zotero/modules/translators/The Nation.js +188 -0
  1559. package/vendor/zotero/modules/translators/The National Archives (UK).js +242 -0
  1560. package/vendor/zotero/modules/translators/The New Republic.js +160 -0
  1561. package/vendor/zotero/modules/translators/The New York Review of Books.js +467 -0
  1562. package/vendor/zotero/modules/translators/The New Yorker.js +360 -0
  1563. package/vendor/zotero/modules/translators/The Open Library.js +220 -0
  1564. package/vendor/zotero/modules/translators/The Straits Times.js +528 -0
  1565. package/vendor/zotero/modules/translators/The Telegraph.js +337 -0
  1566. package/vendor/zotero/modules/translators/The Times and Sunday Times.js +180 -0
  1567. package/vendor/zotero/modules/translators/The Times of Israel.js +151 -0
  1568. package/vendor/zotero/modules/translators/TheMarker.js +108 -0
  1569. package/vendor/zotero/modules/translators/Theory of Computing.js +488 -0
  1570. package/vendor/zotero/modules/translators/ThesesFR.js +350 -0
  1571. package/vendor/zotero/modules/translators/Thieme.js +326 -0
  1572. package/vendor/zotero/modules/translators/Time.com.js +557 -0
  1573. package/vendor/zotero/modules/translators/TimesMachine.js +222 -0
  1574. package/vendor/zotero/modules/translators/Tony Blair Institute for Global Change.js +195 -0
  1575. package/vendor/zotero/modules/translators/Toronto Star.js +331 -0
  1576. package/vendor/zotero/modules/translators/Transportation Research Board.js +253 -0
  1577. package/vendor/zotero/modules/translators/Treesearch.js +535 -0
  1578. package/vendor/zotero/modules/translators/Trove.js +616 -0
  1579. package/vendor/zotero/modules/translators/Tumblr.js +179 -0
  1580. package/vendor/zotero/modules/translators/Twitter.js +413 -0
  1581. package/vendor/zotero/modules/translators/UChicago VuFind.js +907 -0
  1582. package/vendor/zotero/modules/translators/UNZ Print Archive.js +276 -0
  1583. package/vendor/zotero/modules/translators/UPCommons.js +227 -0
  1584. package/vendor/zotero/modules/translators/US National Archives Research Catalog.js +275 -0
  1585. package/vendor/zotero/modules/translators/USENIX.js +151 -0
  1586. package/vendor/zotero/modules/translators/USgamer.js +120 -0
  1587. package/vendor/zotero/modules/translators/Ubiquity Journals.js +228 -0
  1588. package/vendor/zotero/modules/translators/University Press Scholarship.js +301 -0
  1589. package/vendor/zotero/modules/translators/University of California Press Books.js +403 -0
  1590. package/vendor/zotero/modules/translators/University of Chicago Press Books.js +378 -0
  1591. package/vendor/zotero/modules/translators/University of Wisconsin-Madison Libraries Catalog.js +298 -0
  1592. package/vendor/zotero/modules/translators/Unqualified Dublin Core RDF.js +153 -0
  1593. package/vendor/zotero/modules/translators/UpToDate References.js +203 -0
  1594. package/vendor/zotero/modules/translators/Vanity Fair.js +242 -0
  1595. package/vendor/zotero/modules/translators/Verniana-Jules Verne Studies.js +190 -0
  1596. package/vendor/zotero/modules/translators/Verso Books.js +311 -0
  1597. package/vendor/zotero/modules/translators/Vice.js +445 -0
  1598. package/vendor/zotero/modules/translators/Victoria & Albert Museum.js +277 -0
  1599. package/vendor/zotero/modules/translators/Vimeo.js +188 -0
  1600. package/vendor/zotero/modules/translators/VoxEU.js +151 -0
  1601. package/vendor/zotero/modules/translators/WHO.js +458 -0
  1602. package/vendor/zotero/modules/translators/WIPO.js +189 -0
  1603. package/vendor/zotero/modules/translators/Wall Street Journal.js +525 -0
  1604. package/vendor/zotero/modules/translators/Wanfang Data.js +310 -0
  1605. package/vendor/zotero/modules/translators/Washington Monthly.js +195 -0
  1606. package/vendor/zotero/modules/translators/Washington Post.js +447 -0
  1607. package/vendor/zotero/modules/translators/Web of Science Nextgen.js +832 -0
  1608. package/vendor/zotero/modules/translators/Web of Science Tagged.js +1247 -0
  1609. package/vendor/zotero/modules/translators/Web of Science.js +228 -0
  1610. package/vendor/zotero/modules/translators/Welt Online.js +161 -0
  1611. package/vendor/zotero/modules/translators/WestLaw UK.js +190 -0
  1612. package/vendor/zotero/modules/translators/WikiLeaks PlusD.js +182 -0
  1613. package/vendor/zotero/modules/translators/Wikidata QuickStatements.js +324 -0
  1614. package/vendor/zotero/modules/translators/Wikidata.js +911 -0
  1615. package/vendor/zotero/modules/translators/Wikimedia Commons.js +285 -0
  1616. package/vendor/zotero/modules/translators/Wikipedia Citation Templates.js +432 -0
  1617. package/vendor/zotero/modules/translators/Wikipedia.js +385 -0
  1618. package/vendor/zotero/modules/translators/Wikisource.js +399 -0
  1619. package/vendor/zotero/modules/translators/Wikiwand.js +122 -0
  1620. package/vendor/zotero/modules/translators/Wiktionary.js +141 -0
  1621. package/vendor/zotero/modules/translators/Wildlife Biology in Practice.js +172 -0
  1622. package/vendor/zotero/modules/translators/Wiley Online Library.js +1412 -0
  1623. package/vendor/zotero/modules/translators/Wilson Center Digital Archive.js +321 -0
  1624. package/vendor/zotero/modules/translators/Winnipeg Free Press.js +204 -0
  1625. package/vendor/zotero/modules/translators/Wired.js +249 -0
  1626. package/vendor/zotero/modules/translators/Womennews.js +230 -0
  1627. package/vendor/zotero/modules/translators/World Digital Library.js +403 -0
  1628. package/vendor/zotero/modules/translators/World History Connected.js +185 -0
  1629. package/vendor/zotero/modules/translators/World Shakespeare Bibliography Online.js +595 -0
  1630. package/vendor/zotero/modules/translators/XML ContextObject.js +274 -0
  1631. package/vendor/zotero/modules/translators/YPSF.js +224 -0
  1632. package/vendor/zotero/modules/translators/Yandex Books.js +265 -0
  1633. package/vendor/zotero/modules/translators/Ynet.js +171 -0
  1634. package/vendor/zotero/modules/translators/YouTube.js +209 -0
  1635. package/vendor/zotero/modules/translators/ZIPonline.js +267 -0
  1636. package/vendor/zotero/modules/translators/ZOBODAT.js +341 -0
  1637. package/vendor/zotero/modules/translators/Zotero RDF.js +583 -0
  1638. package/vendor/zotero/modules/translators/ZoteroBib.js +94 -0
  1639. package/vendor/zotero/modules/translators/arXiv.org.js +1099 -0
  1640. package/vendor/zotero/modules/translators/artnet.js +207 -0
  1641. package/vendor/zotero/modules/translators/beck-online.js +1339 -0
  1642. package/vendor/zotero/modules/translators/clinicaltrials.gov.js +331 -0
  1643. package/vendor/zotero/modules/translators/dLibra.js +367 -0
  1644. package/vendor/zotero/modules/translators/dejure.org.js +242 -0
  1645. package/vendor/zotero/modules/translators/dhistory.js +103 -0
  1646. package/vendor/zotero/modules/translators/digibib.net.js +245 -0
  1647. package/vendor/zotero/modules/translators/eLibrary.ru.js +867 -0
  1648. package/vendor/zotero/modules/translators/eLife.js +462 -0
  1649. package/vendor/zotero/modules/translators/eMJA.js +246 -0
  1650. package/vendor/zotero/modules/translators/eMedicine.js +123 -0
  1651. package/vendor/zotero/modules/translators/ePrint IACR.js +608 -0
  1652. package/vendor/zotero/modules/translators/ebrary.js +140 -0
  1653. package/vendor/zotero/modules/translators/etatar.ru.js +104 -0
  1654. package/vendor/zotero/modules/translators/feb-web.ru.js +167 -0
  1655. package/vendor/zotero/modules/translators/fishpond.co.nz.js +224 -0
  1656. package/vendor/zotero/modules/translators/fr-online.de.js +209 -0
  1657. package/vendor/zotero/modules/translators/govinfo.js +189 -0
  1658. package/vendor/zotero/modules/translators/informIT database.js +248 -0
  1659. package/vendor/zotero/modules/translators/io-port.js +68 -0
  1660. package/vendor/zotero/modules/translators/jmlr.js +299 -0
  1661. package/vendor/zotero/modules/translators/jurion.js +377 -0
  1662. package/vendor/zotero/modules/translators/mEDRA.js +597 -0
  1663. package/vendor/zotero/modules/translators/magazines.russ.ru.js +120 -0
  1664. package/vendor/zotero/modules/translators/medes.js +284 -0
  1665. package/vendor/zotero/modules/translators/newshub.co.nz.js +206 -0
  1666. package/vendor/zotero/modules/translators/newspapers.com.js +335 -0
  1667. package/vendor/zotero/modules/translators/openJur.js +161 -0
  1668. package/vendor/zotero/modules/translators/reddit.js +275 -0
  1669. package/vendor/zotero/modules/translators/sbn.it.js +186 -0
  1670. package/vendor/zotero/modules/translators/scinapse.js +273 -0
  1671. package/vendor/zotero/modules/translators/semantics Visual Library.js +643 -0
  1672. package/vendor/zotero/modules/translators/taz.de.js +200 -0
  1673. package/vendor/zotero/modules/translators/unAPI.js +481 -0
  1674. package/vendor/zotero/modules/translators/washingtonpost.com.js +257 -0
  1675. package/vendor/zotero/modules/translators/wiso.js +314 -0
  1676. package/vendor/zotero/modules/translators/zbMATH.js +278 -0
  1677. package/vendor/zotero/modules/translators/zotero.org.js +311 -0
  1678. package/vendor/zotero/modules/utilities/README.md +25 -0
  1679. package/vendor/zotero/modules/utilities/cachedTypes.js +193 -0
  1680. package/vendor/zotero/modules/utilities/date.js +958 -0
  1681. package/vendor/zotero/modules/utilities/openurl.js +458 -0
  1682. package/vendor/zotero/modules/utilities/resource/README.md +4 -0
  1683. package/vendor/zotero/modules/utilities/resource/dateFormats.json +1322 -0
  1684. package/vendor/zotero/modules/utilities/resource/schema/global/README.md +15 -0
  1685. package/vendor/zotero/modules/utilities/resource/schema/global/schema.json +12072 -0
  1686. package/vendor/zotero/modules/utilities/resource/zoteroTypeSchemaData.js +5 -0
  1687. package/vendor/zotero/modules/utilities/schema.js +65 -0
  1688. package/vendor/zotero/modules/utilities/utilities.js +1841 -0
  1689. package/vendor/zotero/modules/utilities/utilities_item.js +1082 -0
  1690. package/vendor/zotero/modules/utilities/xregexp-all.js +4652 -0
  1691. package/vendor/zotero/modules/utilities/xregexp-unicode-zotero.js +58 -0
  1692. package/vendor/zotero/modules/zotero-schema/README.md +15 -0
  1693. package/vendor/zotero/modules/zotero-schema/schema.json +12072 -0
  1694. package/vendor/zotero/package-lock.json +4332 -0
  1695. package/vendor/zotero/package.json +44 -0
  1696. package/vendor/zotero/spec.yaml +142 -0
  1697. package/vendor/zotero/src/args.js +43 -0
  1698. package/vendor/zotero/src/cors.js +28 -0
  1699. package/vendor/zotero/src/debug.js +189 -0
  1700. package/vendor/zotero/src/exportEndpoint.js +97 -0
  1701. package/vendor/zotero/src/formats.js +43 -0
  1702. package/vendor/zotero/src/http.js +478 -0
  1703. package/vendor/zotero/src/importEndpoint.js +54 -0
  1704. package/vendor/zotero/src/lambda.js +75 -0
  1705. package/vendor/zotero/src/proxy.js +356 -0
  1706. package/vendor/zotero/src/searchEndpoint.js +97 -0
  1707. package/vendor/zotero/src/server.js +85 -0
  1708. package/vendor/zotero/src/specEndpoint.js +135 -0
  1709. package/vendor/zotero/src/testEndpoint.js +50 -0
  1710. package/vendor/zotero/src/textSearch.js +527 -0
  1711. package/vendor/zotero/src/translation/sandboxManager.js +109 -0
  1712. package/vendor/zotero/src/translation/translate.js +101 -0
  1713. package/vendor/zotero/src/translation/translate_item.js +88 -0
  1714. package/vendor/zotero/src/translators.js +264 -0
  1715. package/vendor/zotero/src/utilities.js +49 -0
  1716. package/vendor/zotero/src/webEndpoint.js +113 -0
  1717. package/vendor/zotero/src/webSession.js +476 -0
  1718. package/vendor/zotero/src/zotero.js +117 -0
  1719. package/vendor/zotero/translate_export +10 -0
  1720. package/vendor/zotero/translate_search +9 -0
  1721. package/vendor/zotero/translate_url +9 -0
  1722. package/vendor/zotero/translate_url_multiple +9 -0
  1723. package/vendor/zotero/translate_url_single +9 -0
@@ -0,0 +1,4652 @@
1
+ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.XRegExp = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2
+ /*!
3
+ * XRegExp.build 3.2.0
4
+ * <xregexp.com>
5
+ * Steven Levithan (c) 2012-2017 MIT License
6
+ * Inspired by Lea Verou's RegExp.create <lea.verou.me>
7
+ */
8
+
9
+ module.exports = function(XRegExp) {
10
+ 'use strict';
11
+
12
+ var REGEX_DATA = 'xregexp';
13
+ var subParts = /(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*\]/g;
14
+ var parts = XRegExp.union([/\({{([\w$]+)}}\)|{{([\w$]+)}}/, subParts], 'g', {
15
+ conjunction: 'or'
16
+ });
17
+
18
+ /**
19
+ * Strips a leading `^` and trailing unescaped `$`, if both are present.
20
+ *
21
+ * @private
22
+ * @param {String} pattern Pattern to process.
23
+ * @returns {String} Pattern with edge anchors removed.
24
+ */
25
+ function deanchor(pattern) {
26
+ // Allow any number of empty noncapturing groups before/after anchors, because regexes
27
+ // built/generated by XRegExp sometimes include them
28
+ var leadingAnchor = /^(?:\(\?:\))*\^/;
29
+ var trailingAnchor = /\$(?:\(\?:\))*$/;
30
+
31
+ if (
32
+ leadingAnchor.test(pattern) &&
33
+ trailingAnchor.test(pattern) &&
34
+ // Ensure that the trailing `$` isn't escaped
35
+ trailingAnchor.test(pattern.replace(/\\[\s\S]/g, ''))
36
+ ) {
37
+ return pattern.replace(leadingAnchor, '').replace(trailingAnchor, '');
38
+ }
39
+
40
+ return pattern;
41
+ }
42
+
43
+ /**
44
+ * Converts the provided value to an XRegExp. Native RegExp flags are not preserved.
45
+ *
46
+ * @private
47
+ * @param {String|RegExp} value Value to convert.
48
+ * @param {Boolean} [addFlagX] Whether to apply the `x` flag in cases when `value` is not
49
+ * already a regex generated by XRegExp
50
+ * @returns {RegExp} XRegExp object with XRegExp syntax applied.
51
+ */
52
+ function asXRegExp(value, addFlagX) {
53
+ var flags = addFlagX ? 'x' : '';
54
+ return XRegExp.isRegExp(value) ?
55
+ (value[REGEX_DATA] && value[REGEX_DATA].captureNames ?
56
+ // Don't recompile, to preserve capture names
57
+ value :
58
+ // Recompile as XRegExp
59
+ XRegExp(value.source, flags)
60
+ ) :
61
+ // Compile string as XRegExp
62
+ XRegExp(value, flags);
63
+ }
64
+
65
+ /**
66
+ * Builds regexes using named subpatterns, for readability and pattern reuse. Backreferences in
67
+ * the outer pattern and provided subpatterns are automatically renumbered to work correctly.
68
+ * Native flags used by provided subpatterns are ignored in favor of the `flags` argument.
69
+ *
70
+ * @memberOf XRegExp
71
+ * @param {String} pattern XRegExp pattern using `{{name}}` for embedded subpatterns. Allows
72
+ * `({{name}})` as shorthand for `(?<name>{{name}})`. Patterns cannot be embedded within
73
+ * character classes.
74
+ * @param {Object} subs Lookup object for named subpatterns. Values can be strings or regexes. A
75
+ * leading `^` and trailing unescaped `$` are stripped from subpatterns, if both are present.
76
+ * @param {String} [flags] Any combination of XRegExp flags.
77
+ * @returns {RegExp} Regex with interpolated subpatterns.
78
+ * @example
79
+ *
80
+ * var time = XRegExp.build('(?x)^ {{hours}} ({{minutes}}) $', {
81
+ * hours: XRegExp.build('{{h12}} : | {{h24}}', {
82
+ * h12: /1[0-2]|0?[1-9]/,
83
+ * h24: /2[0-3]|[01][0-9]/
84
+ * }, 'x'),
85
+ * minutes: /^[0-5][0-9]$/
86
+ * });
87
+ * time.test('10:59'); // -> true
88
+ * XRegExp.exec('10:59', time).minutes; // -> '59'
89
+ */
90
+ XRegExp.build = function(pattern, subs, flags) {
91
+ flags = flags || '';
92
+ // Used with `asXRegExp` calls for `pattern` and subpatterns in `subs`, to work around how
93
+ // some browsers convert `RegExp('\n')` to a regex that contains the literal characters `\`
94
+ // and `n`. See more details at <https://github.com/slevithan/xregexp/pull/163>.
95
+ var addFlagX = flags.indexOf('x') > -1;
96
+ var inlineFlags = /^\(\?([\w$]+)\)/.exec(pattern);
97
+ // Add flags within a leading mode modifier to the overall pattern's flags
98
+ if (inlineFlags) {
99
+ flags = XRegExp._clipDuplicates(flags + inlineFlags[1]);
100
+ }
101
+
102
+ var data = {};
103
+ for (var p in subs) {
104
+ if (subs.hasOwnProperty(p)) {
105
+ // Passing to XRegExp enables extended syntax and ensures independent validity,
106
+ // lest an unescaped `(`, `)`, `[`, or trailing `\` breaks the `(?:)` wrapper. For
107
+ // subpatterns provided as native regexes, it dies on octals and adds the property
108
+ // used to hold extended regex instance data, for simplicity.
109
+ var sub = asXRegExp(subs[p], addFlagX);
110
+ data[p] = {
111
+ // Deanchoring allows embedding independently useful anchored regexes. If you
112
+ // really need to keep your anchors, double them (i.e., `^^...$$`).
113
+ pattern: deanchor(sub.source),
114
+ names: sub[REGEX_DATA].captureNames || []
115
+ };
116
+ }
117
+ }
118
+
119
+ // Passing to XRegExp dies on octals and ensures the outer pattern is independently valid;
120
+ // helps keep this simple. Named captures will be put back.
121
+ var patternAsRegex = asXRegExp(pattern, addFlagX);
122
+
123
+ // 'Caps' is short for 'captures'
124
+ var numCaps = 0;
125
+ var numPriorCaps;
126
+ var numOuterCaps = 0;
127
+ var outerCapsMap = [0];
128
+ var outerCapNames = patternAsRegex[REGEX_DATA].captureNames || [];
129
+ var output = patternAsRegex.source.replace(parts, function($0, $1, $2, $3, $4) {
130
+ var subName = $1 || $2;
131
+ var capName;
132
+ var intro;
133
+ var localCapIndex;
134
+ // Named subpattern
135
+ if (subName) {
136
+ if (!data.hasOwnProperty(subName)) {
137
+ throw new ReferenceError('Undefined property ' + $0);
138
+ }
139
+ // Named subpattern was wrapped in a capturing group
140
+ if ($1) {
141
+ capName = outerCapNames[numOuterCaps];
142
+ outerCapsMap[++numOuterCaps] = ++numCaps;
143
+ // If it's a named group, preserve the name. Otherwise, use the subpattern name
144
+ // as the capture name
145
+ intro = '(?<' + (capName || subName) + '>';
146
+ } else {
147
+ intro = '(?:';
148
+ }
149
+ numPriorCaps = numCaps;
150
+ return intro + data[subName].pattern.replace(subParts, function(match, paren, backref) {
151
+ // Capturing group
152
+ if (paren) {
153
+ capName = data[subName].names[numCaps - numPriorCaps];
154
+ ++numCaps;
155
+ // If the current capture has a name, preserve the name
156
+ if (capName) {
157
+ return '(?<' + capName + '>';
158
+ }
159
+ // Backreference
160
+ } else if (backref) {
161
+ localCapIndex = +backref - 1;
162
+ // Rewrite the backreference
163
+ return data[subName].names[localCapIndex] ?
164
+ // Need to preserve the backreference name in case using flag `n`
165
+ '\\k<' + data[subName].names[localCapIndex] + '>' :
166
+ '\\' + (+backref + numPriorCaps);
167
+ }
168
+ return match;
169
+ }) + ')';
170
+ }
171
+ // Capturing group
172
+ if ($3) {
173
+ capName = outerCapNames[numOuterCaps];
174
+ outerCapsMap[++numOuterCaps] = ++numCaps;
175
+ // If the current capture has a name, preserve the name
176
+ if (capName) {
177
+ return '(?<' + capName + '>';
178
+ }
179
+ // Backreference
180
+ } else if ($4) {
181
+ localCapIndex = +$4 - 1;
182
+ // Rewrite the backreference
183
+ return outerCapNames[localCapIndex] ?
184
+ // Need to preserve the backreference name in case using flag `n`
185
+ '\\k<' + outerCapNames[localCapIndex] + '>' :
186
+ '\\' + outerCapsMap[+$4];
187
+ }
188
+ return $0;
189
+ });
190
+
191
+ return XRegExp(output, flags);
192
+ };
193
+
194
+ };
195
+
196
+ },{}],2:[function(require,module,exports){
197
+ /*!
198
+ * XRegExp.matchRecursive 3.2.0
199
+ * <xregexp.com>
200
+ * Steven Levithan (c) 2009-2017 MIT License
201
+ */
202
+
203
+ module.exports = function(XRegExp) {
204
+ 'use strict';
205
+
206
+ /**
207
+ * Returns a match detail object composed of the provided values.
208
+ *
209
+ * @private
210
+ */
211
+ function row(name, value, start, end) {
212
+ return {
213
+ name: name,
214
+ value: value,
215
+ start: start,
216
+ end: end
217
+ };
218
+ }
219
+
220
+ /**
221
+ * Returns an array of match strings between outermost left and right delimiters, or an array of
222
+ * objects with detailed match parts and position data. An error is thrown if delimiters are
223
+ * unbalanced within the data.
224
+ *
225
+ * @memberOf XRegExp
226
+ * @param {String} str String to search.
227
+ * @param {String} left Left delimiter as an XRegExp pattern.
228
+ * @param {String} right Right delimiter as an XRegExp pattern.
229
+ * @param {String} [flags] Any native or XRegExp flags, used for the left and right delimiters.
230
+ * @param {Object} [options] Lets you specify `valueNames` and `escapeChar` options.
231
+ * @returns {Array} Array of matches, or an empty array.
232
+ * @example
233
+ *
234
+ * // Basic usage
235
+ * var str = '(t((e))s)t()(ing)';
236
+ * XRegExp.matchRecursive(str, '\\(', '\\)', 'g');
237
+ * // -> ['t((e))s', '', 'ing']
238
+ *
239
+ * // Extended information mode with valueNames
240
+ * str = 'Here is <div> <div>an</div></div> example';
241
+ * XRegExp.matchRecursive(str, '<div\\s*>', '</div>', 'gi', {
242
+ * valueNames: ['between', 'left', 'match', 'right']
243
+ * });
244
+ * // -> [
245
+ * // {name: 'between', value: 'Here is ', start: 0, end: 8},
246
+ * // {name: 'left', value: '<div>', start: 8, end: 13},
247
+ * // {name: 'match', value: ' <div>an</div>', start: 13, end: 27},
248
+ * // {name: 'right', value: '</div>', start: 27, end: 33},
249
+ * // {name: 'between', value: ' example', start: 33, end: 41}
250
+ * // ]
251
+ *
252
+ * // Omitting unneeded parts with null valueNames, and using escapeChar
253
+ * str = '...{1}.\\{{function(x,y){return {y:x}}}';
254
+ * XRegExp.matchRecursive(str, '{', '}', 'g', {
255
+ * valueNames: ['literal', null, 'value', null],
256
+ * escapeChar: '\\'
257
+ * });
258
+ * // -> [
259
+ * // {name: 'literal', value: '...', start: 0, end: 3},
260
+ * // {name: 'value', value: '1', start: 4, end: 5},
261
+ * // {name: 'literal', value: '.\\{', start: 6, end: 9},
262
+ * // {name: 'value', value: 'function(x,y){return {y:x}}', start: 10, end: 37}
263
+ * // ]
264
+ *
265
+ * // Sticky mode via flag y
266
+ * str = '<1><<<2>>><3>4<5>';
267
+ * XRegExp.matchRecursive(str, '<', '>', 'gy');
268
+ * // -> ['1', '<<2>>', '3']
269
+ */
270
+ XRegExp.matchRecursive = function(str, left, right, flags, options) {
271
+ flags = flags || '';
272
+ options = options || {};
273
+ var global = flags.indexOf('g') > -1;
274
+ var sticky = flags.indexOf('y') > -1;
275
+ // Flag `y` is controlled internally
276
+ var basicFlags = flags.replace(/y/g, '');
277
+ var escapeChar = options.escapeChar;
278
+ var vN = options.valueNames;
279
+ var output = [];
280
+ var openTokens = 0;
281
+ var delimStart = 0;
282
+ var delimEnd = 0;
283
+ var lastOuterEnd = 0;
284
+ var outerStart;
285
+ var innerStart;
286
+ var leftMatch;
287
+ var rightMatch;
288
+ var esc;
289
+ left = XRegExp(left, basicFlags);
290
+ right = XRegExp(right, basicFlags);
291
+
292
+ if (escapeChar) {
293
+ if (escapeChar.length > 1) {
294
+ throw new Error('Cannot use more than one escape character');
295
+ }
296
+ escapeChar = XRegExp.escape(escapeChar);
297
+ // Example of concatenated `esc` regex:
298
+ // `escapeChar`: '%'
299
+ // `left`: '<'
300
+ // `right`: '>'
301
+ // Regex is: /(?:%[\S\s]|(?:(?!<|>)[^%])+)+/
302
+ esc = new RegExp(
303
+ '(?:' + escapeChar + '[\\S\\s]|(?:(?!' +
304
+ // Using `XRegExp.union` safely rewrites backreferences in `left` and `right`.
305
+ // Intentionally not passing `basicFlags` to `XRegExp.union` since any syntax
306
+ // transformation resulting from those flags was already applied to `left` and
307
+ // `right` when they were passed through the XRegExp constructor above.
308
+ XRegExp.union([left, right], '', {conjunction: 'or'}).source +
309
+ ')[^' + escapeChar + '])+)+',
310
+ // Flags `gy` not needed here
311
+ flags.replace(/[^imu]+/g, '')
312
+ );
313
+ }
314
+
315
+ while (true) {
316
+ // If using an escape character, advance to the delimiter's next starting position,
317
+ // skipping any escaped characters in between
318
+ if (escapeChar) {
319
+ delimEnd += (XRegExp.exec(str, esc, delimEnd, 'sticky') || [''])[0].length;
320
+ }
321
+ leftMatch = XRegExp.exec(str, left, delimEnd);
322
+ rightMatch = XRegExp.exec(str, right, delimEnd);
323
+ // Keep the leftmost match only
324
+ if (leftMatch && rightMatch) {
325
+ if (leftMatch.index <= rightMatch.index) {
326
+ rightMatch = null;
327
+ } else {
328
+ leftMatch = null;
329
+ }
330
+ }
331
+ // Paths (LM: leftMatch, RM: rightMatch, OT: openTokens):
332
+ // LM | RM | OT | Result
333
+ // 1 | 0 | 1 | loop
334
+ // 1 | 0 | 0 | loop
335
+ // 0 | 1 | 1 | loop
336
+ // 0 | 1 | 0 | throw
337
+ // 0 | 0 | 1 | throw
338
+ // 0 | 0 | 0 | break
339
+ // The paths above don't include the sticky mode special case. The loop ends after the
340
+ // first completed match if not `global`.
341
+ if (leftMatch || rightMatch) {
342
+ delimStart = (leftMatch || rightMatch).index;
343
+ delimEnd = delimStart + (leftMatch || rightMatch)[0].length;
344
+ } else if (!openTokens) {
345
+ break;
346
+ }
347
+ if (sticky && !openTokens && delimStart > lastOuterEnd) {
348
+ break;
349
+ }
350
+ if (leftMatch) {
351
+ if (!openTokens) {
352
+ outerStart = delimStart;
353
+ innerStart = delimEnd;
354
+ }
355
+ ++openTokens;
356
+ } else if (rightMatch && openTokens) {
357
+ if (!--openTokens) {
358
+ if (vN) {
359
+ if (vN[0] && outerStart > lastOuterEnd) {
360
+ output.push(row(vN[0], str.slice(lastOuterEnd, outerStart), lastOuterEnd, outerStart));
361
+ }
362
+ if (vN[1]) {
363
+ output.push(row(vN[1], str.slice(outerStart, innerStart), outerStart, innerStart));
364
+ }
365
+ if (vN[2]) {
366
+ output.push(row(vN[2], str.slice(innerStart, delimStart), innerStart, delimStart));
367
+ }
368
+ if (vN[3]) {
369
+ output.push(row(vN[3], str.slice(delimStart, delimEnd), delimStart, delimEnd));
370
+ }
371
+ } else {
372
+ output.push(str.slice(innerStart, delimStart));
373
+ }
374
+ lastOuterEnd = delimEnd;
375
+ if (!global) {
376
+ break;
377
+ }
378
+ }
379
+ } else {
380
+ throw new Error('Unbalanced delimiter found in string');
381
+ }
382
+ // If the delimiter matched an empty string, avoid an infinite loop
383
+ if (delimStart === delimEnd) {
384
+ ++delimEnd;
385
+ }
386
+ }
387
+
388
+ if (global && !sticky && vN && vN[0] && str.length > lastOuterEnd) {
389
+ output.push(row(vN[0], str.slice(lastOuterEnd), lastOuterEnd, str.length));
390
+ }
391
+
392
+ return output;
393
+ };
394
+
395
+ };
396
+
397
+ },{}],3:[function(require,module,exports){
398
+ /*!
399
+ * XRegExp Unicode Base 3.2.0
400
+ * <xregexp.com>
401
+ * Steven Levithan (c) 2008-2017 MIT License
402
+ */
403
+
404
+ module.exports = function(XRegExp) {
405
+ 'use strict';
406
+
407
+ /**
408
+ * Adds base support for Unicode matching:
409
+ * - Adds syntax `\p{..}` for matching Unicode tokens. Tokens can be inverted using `\P{..}` or
410
+ * `\p{^..}`. Token names ignore case, spaces, hyphens, and underscores. You can omit the
411
+ * braces for token names that are a single letter (e.g. `\pL` or `PL`).
412
+ * - Adds flag A (astral), which enables 21-bit Unicode support.
413
+ * - Adds the `XRegExp.addUnicodeData` method used by other addons to provide character data.
414
+ *
415
+ * Unicode Base relies on externally provided Unicode character data. Official addons are
416
+ * available to provide data for Unicode categories, scripts, blocks, and properties.
417
+ *
418
+ * @requires XRegExp
419
+ */
420
+
421
+ // ==--------------------------==
422
+ // Private stuff
423
+ // ==--------------------------==
424
+
425
+ // Storage for Unicode data
426
+ var unicode = {};
427
+
428
+ // Reuse utils
429
+ var dec = XRegExp._dec;
430
+ var hex = XRegExp._hex;
431
+ var pad4 = XRegExp._pad4;
432
+
433
+ // Generates a token lookup name: lowercase, with hyphens, spaces, and underscores removed
434
+ function normalize(name) {
435
+ return name.replace(/[- _]+/g, '').toLowerCase();
436
+ }
437
+
438
+ // Gets the decimal code of a literal code unit, \xHH, \uHHHH, or a backslash-escaped literal
439
+ function charCode(chr) {
440
+ var esc = /^\\[xu](.+)/.exec(chr);
441
+ return esc ?
442
+ dec(esc[1]) :
443
+ chr.charCodeAt(chr.charAt(0) === '\\' ? 1 : 0);
444
+ }
445
+
446
+ // Inverts a list of ordered BMP characters and ranges
447
+ function invertBmp(range) {
448
+ var output = '';
449
+ var lastEnd = -1;
450
+
451
+ XRegExp.forEach(
452
+ range,
453
+ /(\\x..|\\u....|\\?[\s\S])(?:-(\\x..|\\u....|\\?[\s\S]))?/,
454
+ function(m) {
455
+ var start = charCode(m[1]);
456
+ if (start > (lastEnd + 1)) {
457
+ output += '\\u' + pad4(hex(lastEnd + 1));
458
+ if (start > (lastEnd + 2)) {
459
+ output += '-\\u' + pad4(hex(start - 1));
460
+ }
461
+ }
462
+ lastEnd = charCode(m[2] || m[1]);
463
+ }
464
+ );
465
+
466
+ if (lastEnd < 0xFFFF) {
467
+ output += '\\u' + pad4(hex(lastEnd + 1));
468
+ if (lastEnd < 0xFFFE) {
469
+ output += '-\\uFFFF';
470
+ }
471
+ }
472
+
473
+ return output;
474
+ }
475
+
476
+ // Generates an inverted BMP range on first use
477
+ function cacheInvertedBmp(slug) {
478
+ var prop = 'b!';
479
+ return (
480
+ unicode[slug][prop] ||
481
+ (unicode[slug][prop] = invertBmp(unicode[slug].bmp))
482
+ );
483
+ }
484
+
485
+ // Combines and optionally negates BMP and astral data
486
+ function buildAstral(slug, isNegated) {
487
+ var item = unicode[slug];
488
+ var combined = '';
489
+
490
+ if (item.bmp && !item.isBmpLast) {
491
+ combined = '[' + item.bmp + ']' + (item.astral ? '|' : '');
492
+ }
493
+ if (item.astral) {
494
+ combined += item.astral;
495
+ }
496
+ if (item.isBmpLast && item.bmp) {
497
+ combined += (item.astral ? '|' : '') + '[' + item.bmp + ']';
498
+ }
499
+
500
+ // Astral Unicode tokens always match a code point, never a code unit
501
+ return isNegated ?
502
+ '(?:(?!' + combined + ')(?:[\uD800-\uDBFF][\uDC00-\uDFFF]|[\0-\uFFFF]))' :
503
+ '(?:' + combined + ')';
504
+ }
505
+
506
+ // Builds a complete astral pattern on first use
507
+ function cacheAstral(slug, isNegated) {
508
+ var prop = isNegated ? 'a!' : 'a=';
509
+ return (
510
+ unicode[slug][prop] ||
511
+ (unicode[slug][prop] = buildAstral(slug, isNegated))
512
+ );
513
+ }
514
+
515
+ // ==--------------------------==
516
+ // Core functionality
517
+ // ==--------------------------==
518
+
519
+ /*
520
+ * Add astral mode (flag A) and Unicode token syntax: `\p{..}`, `\P{..}`, `\p{^..}`, `\pC`.
521
+ */
522
+ XRegExp.addToken(
523
+ // Use `*` instead of `+` to avoid capturing `^` as the token name in `\p{^}`
524
+ /\\([pP])(?:{(\^?)([^}]*)}|([A-Za-z]))/,
525
+ function(match, scope, flags) {
526
+ var ERR_DOUBLE_NEG = 'Invalid double negation ';
527
+ var ERR_UNKNOWN_NAME = 'Unknown Unicode token ';
528
+ var ERR_UNKNOWN_REF = 'Unicode token missing data ';
529
+ var ERR_ASTRAL_ONLY = 'Astral mode required for Unicode token ';
530
+ var ERR_ASTRAL_IN_CLASS = 'Astral mode does not support Unicode tokens within character classes';
531
+ // Negated via \P{..} or \p{^..}
532
+ var isNegated = match[1] === 'P' || !!match[2];
533
+ // Switch from BMP (0-FFFF) to astral (0-10FFFF) mode via flag A
534
+ var isAstralMode = flags.indexOf('A') > -1;
535
+ // Token lookup name. Check `[4]` first to avoid passing `undefined` via `\p{}`
536
+ var slug = normalize(match[4] || match[3]);
537
+ // Token data object
538
+ var item = unicode[slug];
539
+
540
+ if (match[1] === 'P' && match[2]) {
541
+ throw new SyntaxError(ERR_DOUBLE_NEG + match[0]);
542
+ }
543
+ if (!unicode.hasOwnProperty(slug)) {
544
+ throw new SyntaxError(ERR_UNKNOWN_NAME + match[0]);
545
+ }
546
+
547
+ // Switch to the negated form of the referenced Unicode token
548
+ if (item.inverseOf) {
549
+ slug = normalize(item.inverseOf);
550
+ if (!unicode.hasOwnProperty(slug)) {
551
+ throw new ReferenceError(ERR_UNKNOWN_REF + match[0] + ' -> ' + item.inverseOf);
552
+ }
553
+ item = unicode[slug];
554
+ isNegated = !isNegated;
555
+ }
556
+
557
+ if (!(item.bmp || isAstralMode)) {
558
+ throw new SyntaxError(ERR_ASTRAL_ONLY + match[0]);
559
+ }
560
+ if (isAstralMode) {
561
+ if (scope === 'class') {
562
+ throw new SyntaxError(ERR_ASTRAL_IN_CLASS);
563
+ }
564
+
565
+ return cacheAstral(slug, isNegated);
566
+ }
567
+
568
+ return scope === 'class' ?
569
+ (isNegated ? cacheInvertedBmp(slug) : item.bmp) :
570
+ (isNegated ? '[^' : '[') + item.bmp + ']';
571
+ },
572
+ {
573
+ scope: 'all',
574
+ optionalFlags: 'A',
575
+ leadChar: '\\'
576
+ }
577
+ );
578
+
579
+ /**
580
+ * Adds to the list of Unicode tokens that XRegExp regexes can match via `\p` or `\P`.
581
+ *
582
+ * @memberOf XRegExp
583
+ * @param {Array} data Objects with named character ranges. Each object may have properties
584
+ * `name`, `alias`, `isBmpLast`, `inverseOf`, `bmp`, and `astral`. All but `name` are
585
+ * optional, although one of `bmp` or `astral` is required (unless `inverseOf` is set). If
586
+ * `astral` is absent, the `bmp` data is used for BMP and astral modes. If `bmp` is absent,
587
+ * the name errors in BMP mode but works in astral mode. If both `bmp` and `astral` are
588
+ * provided, the `bmp` data only is used in BMP mode, and the combination of `bmp` and
589
+ * `astral` data is used in astral mode. `isBmpLast` is needed when a token matches orphan
590
+ * high surrogates *and* uses surrogate pairs to match astral code points. The `bmp` and
591
+ * `astral` data should be a combination of literal characters and `\xHH` or `\uHHHH` escape
592
+ * sequences, with hyphens to create ranges. Any regex metacharacters in the data should be
593
+ * escaped, apart from range-creating hyphens. The `astral` data can additionally use
594
+ * character classes and alternation, and should use surrogate pairs to represent astral code
595
+ * points. `inverseOf` can be used to avoid duplicating character data if a Unicode token is
596
+ * defined as the exact inverse of another token.
597
+ * @example
598
+ *
599
+ * // Basic use
600
+ * XRegExp.addUnicodeData([{
601
+ * name: 'XDigit',
602
+ * alias: 'Hexadecimal',
603
+ * bmp: '0-9A-Fa-f'
604
+ * }]);
605
+ * XRegExp('\\p{XDigit}:\\p{Hexadecimal}+').test('0:3D'); // -> true
606
+ */
607
+ XRegExp.addUnicodeData = function(data) {
608
+ var ERR_NO_NAME = 'Unicode token requires name';
609
+ var ERR_NO_DATA = 'Unicode token has no character data ';
610
+ var item;
611
+
612
+ for (var i = 0; i < data.length; ++i) {
613
+ item = data[i];
614
+ if (!item.name) {
615
+ throw new Error(ERR_NO_NAME);
616
+ }
617
+ if (!(item.inverseOf || item.bmp || item.astral)) {
618
+ throw new Error(ERR_NO_DATA + item.name);
619
+ }
620
+ unicode[normalize(item.name)] = item;
621
+ if (item.alias) {
622
+ unicode[normalize(item.alias)] = item;
623
+ }
624
+ }
625
+
626
+ // Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and
627
+ // flags might now produce different results
628
+ XRegExp.cache.flush('patterns');
629
+ };
630
+
631
+ /**
632
+ * @ignore
633
+ *
634
+ * Return a reference to the internal Unicode definition structure for the given Unicode
635
+ * Property if the given name is a legal Unicode Property for use in XRegExp `\p` or `\P` regex
636
+ * constructs.
637
+ *
638
+ * @memberOf XRegExp
639
+ * @param {String} name Name by which the Unicode Property may be recognized (case-insensitive),
640
+ * e.g. `'N'` or `'Number'`. The given name is matched against all registered Unicode
641
+ * Properties and Property Aliases.
642
+ * @returns {Object} Reference to definition structure when the name matches a Unicode Property.
643
+ *
644
+ * @note
645
+ * For more info on Unicode Properties, see also http://unicode.org/reports/tr18/#Categories.
646
+ *
647
+ * @note
648
+ * This method is *not* part of the officially documented API and may change or be removed in
649
+ * the future. It is meant for userland code that wishes to reuse the (large) internal Unicode
650
+ * structures set up by XRegExp.
651
+ */
652
+ XRegExp._getUnicodeProperty = function(name) {
653
+ var slug = normalize(name);
654
+ return unicode[slug];
655
+ };
656
+
657
+ };
658
+
659
+ },{}],4:[function(require,module,exports){
660
+ /*!
661
+ * XRegExp Unicode Blocks 3.2.0
662
+ * <xregexp.com>
663
+ * Steven Levithan (c) 2010-2017 MIT License
664
+ * Unicode data by Mathias Bynens <mathiasbynens.be>
665
+ */
666
+
667
+ module.exports = function(XRegExp) {
668
+ 'use strict';
669
+
670
+ /**
671
+ * Adds support for all Unicode blocks. Block names use the prefix 'In'. E.g.,
672
+ * `\p{InBasicLatin}`. Token names are case insensitive, and any spaces, hyphens, and
673
+ * underscores are ignored.
674
+ *
675
+ * Uses Unicode 9.0.0.
676
+ *
677
+ * @requires XRegExp, Unicode Base
678
+ */
679
+
680
+ if (!XRegExp.addUnicodeData) {
681
+ throw new ReferenceError('Unicode Base must be loaded before Unicode Blocks');
682
+ }
683
+
684
+ XRegExp.addUnicodeData([
685
+ {
686
+ name: 'InAdlam',
687
+ astral: '\uD83A[\uDD00-\uDD5F]'
688
+ },
689
+ {
690
+ name: 'InAegean_Numbers',
691
+ astral: '\uD800[\uDD00-\uDD3F]'
692
+ },
693
+ {
694
+ name: 'InAhom',
695
+ astral: '\uD805[\uDF00-\uDF3F]'
696
+ },
697
+ {
698
+ name: 'InAlchemical_Symbols',
699
+ astral: '\uD83D[\uDF00-\uDF7F]'
700
+ },
701
+ {
702
+ name: 'InAlphabetic_Presentation_Forms',
703
+ bmp: '\uFB00-\uFB4F'
704
+ },
705
+ {
706
+ name: 'InAnatolian_Hieroglyphs',
707
+ astral: '\uD811[\uDC00-\uDE7F]'
708
+ },
709
+ {
710
+ name: 'InAncient_Greek_Musical_Notation',
711
+ astral: '\uD834[\uDE00-\uDE4F]'
712
+ },
713
+ {
714
+ name: 'InAncient_Greek_Numbers',
715
+ astral: '\uD800[\uDD40-\uDD8F]'
716
+ },
717
+ {
718
+ name: 'InAncient_Symbols',
719
+ astral: '\uD800[\uDD90-\uDDCF]'
720
+ },
721
+ {
722
+ name: 'InArabic',
723
+ bmp: '\u0600-\u06FF'
724
+ },
725
+ {
726
+ name: 'InArabic_Extended_A',
727
+ bmp: '\u08A0-\u08FF'
728
+ },
729
+ {
730
+ name: 'InArabic_Mathematical_Alphabetic_Symbols',
731
+ astral: '\uD83B[\uDE00-\uDEFF]'
732
+ },
733
+ {
734
+ name: 'InArabic_Presentation_Forms_A',
735
+ bmp: '\uFB50-\uFDFF'
736
+ },
737
+ {
738
+ name: 'InArabic_Presentation_Forms_B',
739
+ bmp: '\uFE70-\uFEFF'
740
+ },
741
+ {
742
+ name: 'InArabic_Supplement',
743
+ bmp: '\u0750-\u077F'
744
+ },
745
+ {
746
+ name: 'InArmenian',
747
+ bmp: '\u0530-\u058F'
748
+ },
749
+ {
750
+ name: 'InArrows',
751
+ bmp: '\u2190-\u21FF'
752
+ },
753
+ {
754
+ name: 'InAvestan',
755
+ astral: '\uD802[\uDF00-\uDF3F]'
756
+ },
757
+ {
758
+ name: 'InBalinese',
759
+ bmp: '\u1B00-\u1B7F'
760
+ },
761
+ {
762
+ name: 'InBamum',
763
+ bmp: '\uA6A0-\uA6FF'
764
+ },
765
+ {
766
+ name: 'InBamum_Supplement',
767
+ astral: '\uD81A[\uDC00-\uDE3F]'
768
+ },
769
+ {
770
+ name: 'InBasic_Latin',
771
+ bmp: '\0-\x7F'
772
+ },
773
+ {
774
+ name: 'InBassa_Vah',
775
+ astral: '\uD81A[\uDED0-\uDEFF]'
776
+ },
777
+ {
778
+ name: 'InBatak',
779
+ bmp: '\u1BC0-\u1BFF'
780
+ },
781
+ {
782
+ name: 'InBengali',
783
+ bmp: '\u0980-\u09FF'
784
+ },
785
+ {
786
+ name: 'InBhaiksuki',
787
+ astral: '\uD807[\uDC00-\uDC6F]'
788
+ },
789
+ {
790
+ name: 'InBlock_Elements',
791
+ bmp: '\u2580-\u259F'
792
+ },
793
+ {
794
+ name: 'InBopomofo',
795
+ bmp: '\u3100-\u312F'
796
+ },
797
+ {
798
+ name: 'InBopomofo_Extended',
799
+ bmp: '\u31A0-\u31BF'
800
+ },
801
+ {
802
+ name: 'InBox_Drawing',
803
+ bmp: '\u2500-\u257F'
804
+ },
805
+ {
806
+ name: 'InBrahmi',
807
+ astral: '\uD804[\uDC00-\uDC7F]'
808
+ },
809
+ {
810
+ name: 'InBraille_Patterns',
811
+ bmp: '\u2800-\u28FF'
812
+ },
813
+ {
814
+ name: 'InBuginese',
815
+ bmp: '\u1A00-\u1A1F'
816
+ },
817
+ {
818
+ name: 'InBuhid',
819
+ bmp: '\u1740-\u175F'
820
+ },
821
+ {
822
+ name: 'InByzantine_Musical_Symbols',
823
+ astral: '\uD834[\uDC00-\uDCFF]'
824
+ },
825
+ {
826
+ name: 'InCJK_Compatibility',
827
+ bmp: '\u3300-\u33FF'
828
+ },
829
+ {
830
+ name: 'InCJK_Compatibility_Forms',
831
+ bmp: '\uFE30-\uFE4F'
832
+ },
833
+ {
834
+ name: 'InCJK_Compatibility_Ideographs',
835
+ bmp: '\uF900-\uFAFF'
836
+ },
837
+ {
838
+ name: 'InCJK_Compatibility_Ideographs_Supplement',
839
+ astral: '\uD87E[\uDC00-\uDE1F]'
840
+ },
841
+ {
842
+ name: 'InCJK_Radicals_Supplement',
843
+ bmp: '\u2E80-\u2EFF'
844
+ },
845
+ {
846
+ name: 'InCJK_Strokes',
847
+ bmp: '\u31C0-\u31EF'
848
+ },
849
+ {
850
+ name: 'InCJK_Symbols_and_Punctuation',
851
+ bmp: '\u3000-\u303F'
852
+ },
853
+ {
854
+ name: 'InCJK_Unified_Ideographs',
855
+ bmp: '\u4E00-\u9FFF'
856
+ },
857
+ {
858
+ name: 'InCJK_Unified_Ideographs_Extension_A',
859
+ bmp: '\u3400-\u4DBF'
860
+ },
861
+ {
862
+ name: 'InCJK_Unified_Ideographs_Extension_B',
863
+ astral: '[\uD840-\uD868][\uDC00-\uDFFF]|\uD869[\uDC00-\uDEDF]'
864
+ },
865
+ {
866
+ name: 'InCJK_Unified_Ideographs_Extension_C',
867
+ astral: '\uD869[\uDF00-\uDFFF]|[\uD86A-\uD86C][\uDC00-\uDFFF]|\uD86D[\uDC00-\uDF3F]'
868
+ },
869
+ {
870
+ name: 'InCJK_Unified_Ideographs_Extension_D',
871
+ astral: '\uD86D[\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1F]'
872
+ },
873
+ {
874
+ name: 'InCJK_Unified_Ideographs_Extension_E',
875
+ astral: '\uD86E[\uDC20-\uDFFF]|[\uD86F-\uD872][\uDC00-\uDFFF]|\uD873[\uDC00-\uDEAF]'
876
+ },
877
+ {
878
+ name: 'InCarian',
879
+ astral: '\uD800[\uDEA0-\uDEDF]'
880
+ },
881
+ {
882
+ name: 'InCaucasian_Albanian',
883
+ astral: '\uD801[\uDD30-\uDD6F]'
884
+ },
885
+ {
886
+ name: 'InChakma',
887
+ astral: '\uD804[\uDD00-\uDD4F]'
888
+ },
889
+ {
890
+ name: 'InCham',
891
+ bmp: '\uAA00-\uAA5F'
892
+ },
893
+ {
894
+ name: 'InCherokee',
895
+ bmp: '\u13A0-\u13FF'
896
+ },
897
+ {
898
+ name: 'InCherokee_Supplement',
899
+ bmp: '\uAB70-\uABBF'
900
+ },
901
+ {
902
+ name: 'InCombining_Diacritical_Marks',
903
+ bmp: '\u0300-\u036F'
904
+ },
905
+ {
906
+ name: 'InCombining_Diacritical_Marks_Extended',
907
+ bmp: '\u1AB0-\u1AFF'
908
+ },
909
+ {
910
+ name: 'InCombining_Diacritical_Marks_Supplement',
911
+ bmp: '\u1DC0-\u1DFF'
912
+ },
913
+ {
914
+ name: 'InCombining_Diacritical_Marks_for_Symbols',
915
+ bmp: '\u20D0-\u20FF'
916
+ },
917
+ {
918
+ name: 'InCombining_Half_Marks',
919
+ bmp: '\uFE20-\uFE2F'
920
+ },
921
+ {
922
+ name: 'InCommon_Indic_Number_Forms',
923
+ bmp: '\uA830-\uA83F'
924
+ },
925
+ {
926
+ name: 'InControl_Pictures',
927
+ bmp: '\u2400-\u243F'
928
+ },
929
+ {
930
+ name: 'InCoptic',
931
+ bmp: '\u2C80-\u2CFF'
932
+ },
933
+ {
934
+ name: 'InCoptic_Epact_Numbers',
935
+ astral: '\uD800[\uDEE0-\uDEFF]'
936
+ },
937
+ {
938
+ name: 'InCounting_Rod_Numerals',
939
+ astral: '\uD834[\uDF60-\uDF7F]'
940
+ },
941
+ {
942
+ name: 'InCuneiform',
943
+ astral: '\uD808[\uDC00-\uDFFF]'
944
+ },
945
+ {
946
+ name: 'InCuneiform_Numbers_and_Punctuation',
947
+ astral: '\uD809[\uDC00-\uDC7F]'
948
+ },
949
+ {
950
+ name: 'InCurrency_Symbols',
951
+ bmp: '\u20A0-\u20CF'
952
+ },
953
+ {
954
+ name: 'InCypriot_Syllabary',
955
+ astral: '\uD802[\uDC00-\uDC3F]'
956
+ },
957
+ {
958
+ name: 'InCyrillic',
959
+ bmp: '\u0400-\u04FF'
960
+ },
961
+ {
962
+ name: 'InCyrillic_Extended_A',
963
+ bmp: '\u2DE0-\u2DFF'
964
+ },
965
+ {
966
+ name: 'InCyrillic_Extended_B',
967
+ bmp: '\uA640-\uA69F'
968
+ },
969
+ {
970
+ name: 'InCyrillic_Extended_C',
971
+ bmp: '\u1C80-\u1C8F'
972
+ },
973
+ {
974
+ name: 'InCyrillic_Supplement',
975
+ bmp: '\u0500-\u052F'
976
+ },
977
+ {
978
+ name: 'InDeseret',
979
+ astral: '\uD801[\uDC00-\uDC4F]'
980
+ },
981
+ {
982
+ name: 'InDevanagari',
983
+ bmp: '\u0900-\u097F'
984
+ },
985
+ {
986
+ name: 'InDevanagari_Extended',
987
+ bmp: '\uA8E0-\uA8FF'
988
+ },
989
+ {
990
+ name: 'InDingbats',
991
+ bmp: '\u2700-\u27BF'
992
+ },
993
+ {
994
+ name: 'InDomino_Tiles',
995
+ astral: '\uD83C[\uDC30-\uDC9F]'
996
+ },
997
+ {
998
+ name: 'InDuployan',
999
+ astral: '\uD82F[\uDC00-\uDC9F]'
1000
+ },
1001
+ {
1002
+ name: 'InEarly_Dynastic_Cuneiform',
1003
+ astral: '\uD809[\uDC80-\uDD4F]'
1004
+ },
1005
+ {
1006
+ name: 'InEgyptian_Hieroglyphs',
1007
+ astral: '\uD80C[\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F]'
1008
+ },
1009
+ {
1010
+ name: 'InElbasan',
1011
+ astral: '\uD801[\uDD00-\uDD2F]'
1012
+ },
1013
+ {
1014
+ name: 'InEmoticons',
1015
+ astral: '\uD83D[\uDE00-\uDE4F]'
1016
+ },
1017
+ {
1018
+ name: 'InEnclosed_Alphanumeric_Supplement',
1019
+ astral: '\uD83C[\uDD00-\uDDFF]'
1020
+ },
1021
+ {
1022
+ name: 'InEnclosed_Alphanumerics',
1023
+ bmp: '\u2460-\u24FF'
1024
+ },
1025
+ {
1026
+ name: 'InEnclosed_CJK_Letters_and_Months',
1027
+ bmp: '\u3200-\u32FF'
1028
+ },
1029
+ {
1030
+ name: 'InEnclosed_Ideographic_Supplement',
1031
+ astral: '\uD83C[\uDE00-\uDEFF]'
1032
+ },
1033
+ {
1034
+ name: 'InEthiopic',
1035
+ bmp: '\u1200-\u137F'
1036
+ },
1037
+ {
1038
+ name: 'InEthiopic_Extended',
1039
+ bmp: '\u2D80-\u2DDF'
1040
+ },
1041
+ {
1042
+ name: 'InEthiopic_Extended_A',
1043
+ bmp: '\uAB00-\uAB2F'
1044
+ },
1045
+ {
1046
+ name: 'InEthiopic_Supplement',
1047
+ bmp: '\u1380-\u139F'
1048
+ },
1049
+ {
1050
+ name: 'InGeneral_Punctuation',
1051
+ bmp: '\u2000-\u206F'
1052
+ },
1053
+ {
1054
+ name: 'InGeometric_Shapes',
1055
+ bmp: '\u25A0-\u25FF'
1056
+ },
1057
+ {
1058
+ name: 'InGeometric_Shapes_Extended',
1059
+ astral: '\uD83D[\uDF80-\uDFFF]'
1060
+ },
1061
+ {
1062
+ name: 'InGeorgian',
1063
+ bmp: '\u10A0-\u10FF'
1064
+ },
1065
+ {
1066
+ name: 'InGeorgian_Supplement',
1067
+ bmp: '\u2D00-\u2D2F'
1068
+ },
1069
+ {
1070
+ name: 'InGlagolitic',
1071
+ bmp: '\u2C00-\u2C5F'
1072
+ },
1073
+ {
1074
+ name: 'InGlagolitic_Supplement',
1075
+ astral: '\uD838[\uDC00-\uDC2F]'
1076
+ },
1077
+ {
1078
+ name: 'InGothic',
1079
+ astral: '\uD800[\uDF30-\uDF4F]'
1080
+ },
1081
+ {
1082
+ name: 'InGrantha',
1083
+ astral: '\uD804[\uDF00-\uDF7F]'
1084
+ },
1085
+ {
1086
+ name: 'InGreek_Extended',
1087
+ bmp: '\u1F00-\u1FFF'
1088
+ },
1089
+ {
1090
+ name: 'InGreek_and_Coptic',
1091
+ bmp: '\u0370-\u03FF'
1092
+ },
1093
+ {
1094
+ name: 'InGujarati',
1095
+ bmp: '\u0A80-\u0AFF'
1096
+ },
1097
+ {
1098
+ name: 'InGurmukhi',
1099
+ bmp: '\u0A00-\u0A7F'
1100
+ },
1101
+ {
1102
+ name: 'InHalfwidth_and_Fullwidth_Forms',
1103
+ bmp: '\uFF00-\uFFEF'
1104
+ },
1105
+ {
1106
+ name: 'InHangul_Compatibility_Jamo',
1107
+ bmp: '\u3130-\u318F'
1108
+ },
1109
+ {
1110
+ name: 'InHangul_Jamo',
1111
+ bmp: '\u1100-\u11FF'
1112
+ },
1113
+ {
1114
+ name: 'InHangul_Jamo_Extended_A',
1115
+ bmp: '\uA960-\uA97F'
1116
+ },
1117
+ {
1118
+ name: 'InHangul_Jamo_Extended_B',
1119
+ bmp: '\uD7B0-\uD7FF'
1120
+ },
1121
+ {
1122
+ name: 'InHangul_Syllables',
1123
+ bmp: '\uAC00-\uD7AF'
1124
+ },
1125
+ {
1126
+ name: 'InHanunoo',
1127
+ bmp: '\u1720-\u173F'
1128
+ },
1129
+ {
1130
+ name: 'InHatran',
1131
+ astral: '\uD802[\uDCE0-\uDCFF]'
1132
+ },
1133
+ {
1134
+ name: 'InHebrew',
1135
+ bmp: '\u0590-\u05FF'
1136
+ },
1137
+ {
1138
+ name: 'InHigh_Private_Use_Surrogates',
1139
+ bmp: '\uDB80-\uDBFF'
1140
+ },
1141
+ {
1142
+ name: 'InHigh_Surrogates',
1143
+ bmp: '\uD800-\uDB7F'
1144
+ },
1145
+ {
1146
+ name: 'InHiragana',
1147
+ bmp: '\u3040-\u309F'
1148
+ },
1149
+ {
1150
+ name: 'InIPA_Extensions',
1151
+ bmp: '\u0250-\u02AF'
1152
+ },
1153
+ {
1154
+ name: 'InIdeographic_Description_Characters',
1155
+ bmp: '\u2FF0-\u2FFF'
1156
+ },
1157
+ {
1158
+ name: 'InIdeographic_Symbols_and_Punctuation',
1159
+ astral: '\uD81B[\uDFE0-\uDFFF]'
1160
+ },
1161
+ {
1162
+ name: 'InImperial_Aramaic',
1163
+ astral: '\uD802[\uDC40-\uDC5F]'
1164
+ },
1165
+ {
1166
+ name: 'InInscriptional_Pahlavi',
1167
+ astral: '\uD802[\uDF60-\uDF7F]'
1168
+ },
1169
+ {
1170
+ name: 'InInscriptional_Parthian',
1171
+ astral: '\uD802[\uDF40-\uDF5F]'
1172
+ },
1173
+ {
1174
+ name: 'InJavanese',
1175
+ bmp: '\uA980-\uA9DF'
1176
+ },
1177
+ {
1178
+ name: 'InKaithi',
1179
+ astral: '\uD804[\uDC80-\uDCCF]'
1180
+ },
1181
+ {
1182
+ name: 'InKana_Supplement',
1183
+ astral: '\uD82C[\uDC00-\uDCFF]'
1184
+ },
1185
+ {
1186
+ name: 'InKanbun',
1187
+ bmp: '\u3190-\u319F'
1188
+ },
1189
+ {
1190
+ name: 'InKangxi_Radicals',
1191
+ bmp: '\u2F00-\u2FDF'
1192
+ },
1193
+ {
1194
+ name: 'InKannada',
1195
+ bmp: '\u0C80-\u0CFF'
1196
+ },
1197
+ {
1198
+ name: 'InKatakana',
1199
+ bmp: '\u30A0-\u30FF'
1200
+ },
1201
+ {
1202
+ name: 'InKatakana_Phonetic_Extensions',
1203
+ bmp: '\u31F0-\u31FF'
1204
+ },
1205
+ {
1206
+ name: 'InKayah_Li',
1207
+ bmp: '\uA900-\uA92F'
1208
+ },
1209
+ {
1210
+ name: 'InKharoshthi',
1211
+ astral: '\uD802[\uDE00-\uDE5F]'
1212
+ },
1213
+ {
1214
+ name: 'InKhmer',
1215
+ bmp: '\u1780-\u17FF'
1216
+ },
1217
+ {
1218
+ name: 'InKhmer_Symbols',
1219
+ bmp: '\u19E0-\u19FF'
1220
+ },
1221
+ {
1222
+ name: 'InKhojki',
1223
+ astral: '\uD804[\uDE00-\uDE4F]'
1224
+ },
1225
+ {
1226
+ name: 'InKhudawadi',
1227
+ astral: '\uD804[\uDEB0-\uDEFF]'
1228
+ },
1229
+ {
1230
+ name: 'InLao',
1231
+ bmp: '\u0E80-\u0EFF'
1232
+ },
1233
+ {
1234
+ name: 'InLatin_Extended_Additional',
1235
+ bmp: '\u1E00-\u1EFF'
1236
+ },
1237
+ {
1238
+ name: 'InLatin_Extended_A',
1239
+ bmp: '\u0100-\u017F'
1240
+ },
1241
+ {
1242
+ name: 'InLatin_Extended_B',
1243
+ bmp: '\u0180-\u024F'
1244
+ },
1245
+ {
1246
+ name: 'InLatin_Extended_C',
1247
+ bmp: '\u2C60-\u2C7F'
1248
+ },
1249
+ {
1250
+ name: 'InLatin_Extended_D',
1251
+ bmp: '\uA720-\uA7FF'
1252
+ },
1253
+ {
1254
+ name: 'InLatin_Extended_E',
1255
+ bmp: '\uAB30-\uAB6F'
1256
+ },
1257
+ {
1258
+ name: 'InLatin_1_Supplement',
1259
+ bmp: '\x80-\xFF'
1260
+ },
1261
+ {
1262
+ name: 'InLepcha',
1263
+ bmp: '\u1C00-\u1C4F'
1264
+ },
1265
+ {
1266
+ name: 'InLetterlike_Symbols',
1267
+ bmp: '\u2100-\u214F'
1268
+ },
1269
+ {
1270
+ name: 'InLimbu',
1271
+ bmp: '\u1900-\u194F'
1272
+ },
1273
+ {
1274
+ name: 'InLinear_A',
1275
+ astral: '\uD801[\uDE00-\uDF7F]'
1276
+ },
1277
+ {
1278
+ name: 'InLinear_B_Ideograms',
1279
+ astral: '\uD800[\uDC80-\uDCFF]'
1280
+ },
1281
+ {
1282
+ name: 'InLinear_B_Syllabary',
1283
+ astral: '\uD800[\uDC00-\uDC7F]'
1284
+ },
1285
+ {
1286
+ name: 'InLisu',
1287
+ bmp: '\uA4D0-\uA4FF'
1288
+ },
1289
+ {
1290
+ name: 'InLow_Surrogates',
1291
+ bmp: '\uDC00-\uDFFF'
1292
+ },
1293
+ {
1294
+ name: 'InLycian',
1295
+ astral: '\uD800[\uDE80-\uDE9F]'
1296
+ },
1297
+ {
1298
+ name: 'InLydian',
1299
+ astral: '\uD802[\uDD20-\uDD3F]'
1300
+ },
1301
+ {
1302
+ name: 'InMahajani',
1303
+ astral: '\uD804[\uDD50-\uDD7F]'
1304
+ },
1305
+ {
1306
+ name: 'InMahjong_Tiles',
1307
+ astral: '\uD83C[\uDC00-\uDC2F]'
1308
+ },
1309
+ {
1310
+ name: 'InMalayalam',
1311
+ bmp: '\u0D00-\u0D7F'
1312
+ },
1313
+ {
1314
+ name: 'InMandaic',
1315
+ bmp: '\u0840-\u085F'
1316
+ },
1317
+ {
1318
+ name: 'InManichaean',
1319
+ astral: '\uD802[\uDEC0-\uDEFF]'
1320
+ },
1321
+ {
1322
+ name: 'InMarchen',
1323
+ astral: '\uD807[\uDC70-\uDCBF]'
1324
+ },
1325
+ {
1326
+ name: 'InMathematical_Alphanumeric_Symbols',
1327
+ astral: '\uD835[\uDC00-\uDFFF]'
1328
+ },
1329
+ {
1330
+ name: 'InMathematical_Operators',
1331
+ bmp: '\u2200-\u22FF'
1332
+ },
1333
+ {
1334
+ name: 'InMeetei_Mayek',
1335
+ bmp: '\uABC0-\uABFF'
1336
+ },
1337
+ {
1338
+ name: 'InMeetei_Mayek_Extensions',
1339
+ bmp: '\uAAE0-\uAAFF'
1340
+ },
1341
+ {
1342
+ name: 'InMende_Kikakui',
1343
+ astral: '\uD83A[\uDC00-\uDCDF]'
1344
+ },
1345
+ {
1346
+ name: 'InMeroitic_Cursive',
1347
+ astral: '\uD802[\uDDA0-\uDDFF]'
1348
+ },
1349
+ {
1350
+ name: 'InMeroitic_Hieroglyphs',
1351
+ astral: '\uD802[\uDD80-\uDD9F]'
1352
+ },
1353
+ {
1354
+ name: 'InMiao',
1355
+ astral: '\uD81B[\uDF00-\uDF9F]'
1356
+ },
1357
+ {
1358
+ name: 'InMiscellaneous_Mathematical_Symbols_A',
1359
+ bmp: '\u27C0-\u27EF'
1360
+ },
1361
+ {
1362
+ name: 'InMiscellaneous_Mathematical_Symbols_B',
1363
+ bmp: '\u2980-\u29FF'
1364
+ },
1365
+ {
1366
+ name: 'InMiscellaneous_Symbols',
1367
+ bmp: '\u2600-\u26FF'
1368
+ },
1369
+ {
1370
+ name: 'InMiscellaneous_Symbols_and_Arrows',
1371
+ bmp: '\u2B00-\u2BFF'
1372
+ },
1373
+ {
1374
+ name: 'InMiscellaneous_Symbols_and_Pictographs',
1375
+ astral: '\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDDFF]'
1376
+ },
1377
+ {
1378
+ name: 'InMiscellaneous_Technical',
1379
+ bmp: '\u2300-\u23FF'
1380
+ },
1381
+ {
1382
+ name: 'InModi',
1383
+ astral: '\uD805[\uDE00-\uDE5F]'
1384
+ },
1385
+ {
1386
+ name: 'InModifier_Tone_Letters',
1387
+ bmp: '\uA700-\uA71F'
1388
+ },
1389
+ {
1390
+ name: 'InMongolian',
1391
+ bmp: '\u1800-\u18AF'
1392
+ },
1393
+ {
1394
+ name: 'InMongolian_Supplement',
1395
+ astral: '\uD805[\uDE60-\uDE7F]'
1396
+ },
1397
+ {
1398
+ name: 'InMro',
1399
+ astral: '\uD81A[\uDE40-\uDE6F]'
1400
+ },
1401
+ {
1402
+ name: 'InMultani',
1403
+ astral: '\uD804[\uDE80-\uDEAF]'
1404
+ },
1405
+ {
1406
+ name: 'InMusical_Symbols',
1407
+ astral: '\uD834[\uDD00-\uDDFF]'
1408
+ },
1409
+ {
1410
+ name: 'InMyanmar',
1411
+ bmp: '\u1000-\u109F'
1412
+ },
1413
+ {
1414
+ name: 'InMyanmar_Extended_A',
1415
+ bmp: '\uAA60-\uAA7F'
1416
+ },
1417
+ {
1418
+ name: 'InMyanmar_Extended_B',
1419
+ bmp: '\uA9E0-\uA9FF'
1420
+ },
1421
+ {
1422
+ name: 'InNKo',
1423
+ bmp: '\u07C0-\u07FF'
1424
+ },
1425
+ {
1426
+ name: 'InNabataean',
1427
+ astral: '\uD802[\uDC80-\uDCAF]'
1428
+ },
1429
+ {
1430
+ name: 'InNew_Tai_Lue',
1431
+ bmp: '\u1980-\u19DF'
1432
+ },
1433
+ {
1434
+ name: 'InNewa',
1435
+ astral: '\uD805[\uDC00-\uDC7F]'
1436
+ },
1437
+ {
1438
+ name: 'InNumber_Forms',
1439
+ bmp: '\u2150-\u218F'
1440
+ },
1441
+ {
1442
+ name: 'InOgham',
1443
+ bmp: '\u1680-\u169F'
1444
+ },
1445
+ {
1446
+ name: 'InOl_Chiki',
1447
+ bmp: '\u1C50-\u1C7F'
1448
+ },
1449
+ {
1450
+ name: 'InOld_Hungarian',
1451
+ astral: '\uD803[\uDC80-\uDCFF]'
1452
+ },
1453
+ {
1454
+ name: 'InOld_Italic',
1455
+ astral: '\uD800[\uDF00-\uDF2F]'
1456
+ },
1457
+ {
1458
+ name: 'InOld_North_Arabian',
1459
+ astral: '\uD802[\uDE80-\uDE9F]'
1460
+ },
1461
+ {
1462
+ name: 'InOld_Permic',
1463
+ astral: '\uD800[\uDF50-\uDF7F]'
1464
+ },
1465
+ {
1466
+ name: 'InOld_Persian',
1467
+ astral: '\uD800[\uDFA0-\uDFDF]'
1468
+ },
1469
+ {
1470
+ name: 'InOld_South_Arabian',
1471
+ astral: '\uD802[\uDE60-\uDE7F]'
1472
+ },
1473
+ {
1474
+ name: 'InOld_Turkic',
1475
+ astral: '\uD803[\uDC00-\uDC4F]'
1476
+ },
1477
+ {
1478
+ name: 'InOptical_Character_Recognition',
1479
+ bmp: '\u2440-\u245F'
1480
+ },
1481
+ {
1482
+ name: 'InOriya',
1483
+ bmp: '\u0B00-\u0B7F'
1484
+ },
1485
+ {
1486
+ name: 'InOrnamental_Dingbats',
1487
+ astral: '\uD83D[\uDE50-\uDE7F]'
1488
+ },
1489
+ {
1490
+ name: 'InOsage',
1491
+ astral: '\uD801[\uDCB0-\uDCFF]'
1492
+ },
1493
+ {
1494
+ name: 'InOsmanya',
1495
+ astral: '\uD801[\uDC80-\uDCAF]'
1496
+ },
1497
+ {
1498
+ name: 'InPahawh_Hmong',
1499
+ astral: '\uD81A[\uDF00-\uDF8F]'
1500
+ },
1501
+ {
1502
+ name: 'InPalmyrene',
1503
+ astral: '\uD802[\uDC60-\uDC7F]'
1504
+ },
1505
+ {
1506
+ name: 'InPau_Cin_Hau',
1507
+ astral: '\uD806[\uDEC0-\uDEFF]'
1508
+ },
1509
+ {
1510
+ name: 'InPhags_pa',
1511
+ bmp: '\uA840-\uA87F'
1512
+ },
1513
+ {
1514
+ name: 'InPhaistos_Disc',
1515
+ astral: '\uD800[\uDDD0-\uDDFF]'
1516
+ },
1517
+ {
1518
+ name: 'InPhoenician',
1519
+ astral: '\uD802[\uDD00-\uDD1F]'
1520
+ },
1521
+ {
1522
+ name: 'InPhonetic_Extensions',
1523
+ bmp: '\u1D00-\u1D7F'
1524
+ },
1525
+ {
1526
+ name: 'InPhonetic_Extensions_Supplement',
1527
+ bmp: '\u1D80-\u1DBF'
1528
+ },
1529
+ {
1530
+ name: 'InPlaying_Cards',
1531
+ astral: '\uD83C[\uDCA0-\uDCFF]'
1532
+ },
1533
+ {
1534
+ name: 'InPrivate_Use_Area',
1535
+ bmp: '\uE000-\uF8FF'
1536
+ },
1537
+ {
1538
+ name: 'InPsalter_Pahlavi',
1539
+ astral: '\uD802[\uDF80-\uDFAF]'
1540
+ },
1541
+ {
1542
+ name: 'InRejang',
1543
+ bmp: '\uA930-\uA95F'
1544
+ },
1545
+ {
1546
+ name: 'InRumi_Numeral_Symbols',
1547
+ astral: '\uD803[\uDE60-\uDE7F]'
1548
+ },
1549
+ {
1550
+ name: 'InRunic',
1551
+ bmp: '\u16A0-\u16FF'
1552
+ },
1553
+ {
1554
+ name: 'InSamaritan',
1555
+ bmp: '\u0800-\u083F'
1556
+ },
1557
+ {
1558
+ name: 'InSaurashtra',
1559
+ bmp: '\uA880-\uA8DF'
1560
+ },
1561
+ {
1562
+ name: 'InSharada',
1563
+ astral: '\uD804[\uDD80-\uDDDF]'
1564
+ },
1565
+ {
1566
+ name: 'InShavian',
1567
+ astral: '\uD801[\uDC50-\uDC7F]'
1568
+ },
1569
+ {
1570
+ name: 'InShorthand_Format_Controls',
1571
+ astral: '\uD82F[\uDCA0-\uDCAF]'
1572
+ },
1573
+ {
1574
+ name: 'InSiddham',
1575
+ astral: '\uD805[\uDD80-\uDDFF]'
1576
+ },
1577
+ {
1578
+ name: 'InSinhala',
1579
+ bmp: '\u0D80-\u0DFF'
1580
+ },
1581
+ {
1582
+ name: 'InSinhala_Archaic_Numbers',
1583
+ astral: '\uD804[\uDDE0-\uDDFF]'
1584
+ },
1585
+ {
1586
+ name: 'InSmall_Form_Variants',
1587
+ bmp: '\uFE50-\uFE6F'
1588
+ },
1589
+ {
1590
+ name: 'InSora_Sompeng',
1591
+ astral: '\uD804[\uDCD0-\uDCFF]'
1592
+ },
1593
+ {
1594
+ name: 'InSpacing_Modifier_Letters',
1595
+ bmp: '\u02B0-\u02FF'
1596
+ },
1597
+ {
1598
+ name: 'InSpecials',
1599
+ bmp: '\uFFF0-\uFFFF'
1600
+ },
1601
+ {
1602
+ name: 'InSundanese',
1603
+ bmp: '\u1B80-\u1BBF'
1604
+ },
1605
+ {
1606
+ name: 'InSundanese_Supplement',
1607
+ bmp: '\u1CC0-\u1CCF'
1608
+ },
1609
+ {
1610
+ name: 'InSuperscripts_and_Subscripts',
1611
+ bmp: '\u2070-\u209F'
1612
+ },
1613
+ {
1614
+ name: 'InSupplemental_Arrows_A',
1615
+ bmp: '\u27F0-\u27FF'
1616
+ },
1617
+ {
1618
+ name: 'InSupplemental_Arrows_B',
1619
+ bmp: '\u2900-\u297F'
1620
+ },
1621
+ {
1622
+ name: 'InSupplemental_Arrows_C',
1623
+ astral: '\uD83E[\uDC00-\uDCFF]'
1624
+ },
1625
+ {
1626
+ name: 'InSupplemental_Mathematical_Operators',
1627
+ bmp: '\u2A00-\u2AFF'
1628
+ },
1629
+ {
1630
+ name: 'InSupplemental_Punctuation',
1631
+ bmp: '\u2E00-\u2E7F'
1632
+ },
1633
+ {
1634
+ name: 'InSupplemental_Symbols_and_Pictographs',
1635
+ astral: '\uD83E[\uDD00-\uDDFF]'
1636
+ },
1637
+ {
1638
+ name: 'InSupplementary_Private_Use_Area_A',
1639
+ astral: '[\uDB80-\uDBBF][\uDC00-\uDFFF]'
1640
+ },
1641
+ {
1642
+ name: 'InSupplementary_Private_Use_Area_B',
1643
+ astral: '[\uDBC0-\uDBFF][\uDC00-\uDFFF]'
1644
+ },
1645
+ {
1646
+ name: 'InSutton_SignWriting',
1647
+ astral: '\uD836[\uDC00-\uDEAF]'
1648
+ },
1649
+ {
1650
+ name: 'InSyloti_Nagri',
1651
+ bmp: '\uA800-\uA82F'
1652
+ },
1653
+ {
1654
+ name: 'InSyriac',
1655
+ bmp: '\u0700-\u074F'
1656
+ },
1657
+ {
1658
+ name: 'InTagalog',
1659
+ bmp: '\u1700-\u171F'
1660
+ },
1661
+ {
1662
+ name: 'InTagbanwa',
1663
+ bmp: '\u1760-\u177F'
1664
+ },
1665
+ {
1666
+ name: 'InTags',
1667
+ astral: '\uDB40[\uDC00-\uDC7F]'
1668
+ },
1669
+ {
1670
+ name: 'InTai_Le',
1671
+ bmp: '\u1950-\u197F'
1672
+ },
1673
+ {
1674
+ name: 'InTai_Tham',
1675
+ bmp: '\u1A20-\u1AAF'
1676
+ },
1677
+ {
1678
+ name: 'InTai_Viet',
1679
+ bmp: '\uAA80-\uAADF'
1680
+ },
1681
+ {
1682
+ name: 'InTai_Xuan_Jing_Symbols',
1683
+ astral: '\uD834[\uDF00-\uDF5F]'
1684
+ },
1685
+ {
1686
+ name: 'InTakri',
1687
+ astral: '\uD805[\uDE80-\uDECF]'
1688
+ },
1689
+ {
1690
+ name: 'InTamil',
1691
+ bmp: '\u0B80-\u0BFF'
1692
+ },
1693
+ {
1694
+ name: 'InTangut',
1695
+ astral: '[\uD81C-\uD821][\uDC00-\uDFFF]'
1696
+ },
1697
+ {
1698
+ name: 'InTangut_Components',
1699
+ astral: '\uD822[\uDC00-\uDEFF]'
1700
+ },
1701
+ {
1702
+ name: 'InTelugu',
1703
+ bmp: '\u0C00-\u0C7F'
1704
+ },
1705
+ {
1706
+ name: 'InThaana',
1707
+ bmp: '\u0780-\u07BF'
1708
+ },
1709
+ {
1710
+ name: 'InThai',
1711
+ bmp: '\u0E00-\u0E7F'
1712
+ },
1713
+ {
1714
+ name: 'InTibetan',
1715
+ bmp: '\u0F00-\u0FFF'
1716
+ },
1717
+ {
1718
+ name: 'InTifinagh',
1719
+ bmp: '\u2D30-\u2D7F'
1720
+ },
1721
+ {
1722
+ name: 'InTirhuta',
1723
+ astral: '\uD805[\uDC80-\uDCDF]'
1724
+ },
1725
+ {
1726
+ name: 'InTransport_and_Map_Symbols',
1727
+ astral: '\uD83D[\uDE80-\uDEFF]'
1728
+ },
1729
+ {
1730
+ name: 'InUgaritic',
1731
+ astral: '\uD800[\uDF80-\uDF9F]'
1732
+ },
1733
+ {
1734
+ name: 'InUnified_Canadian_Aboriginal_Syllabics',
1735
+ bmp: '\u1400-\u167F'
1736
+ },
1737
+ {
1738
+ name: 'InUnified_Canadian_Aboriginal_Syllabics_Extended',
1739
+ bmp: '\u18B0-\u18FF'
1740
+ },
1741
+ {
1742
+ name: 'InVai',
1743
+ bmp: '\uA500-\uA63F'
1744
+ },
1745
+ {
1746
+ name: 'InVariation_Selectors',
1747
+ bmp: '\uFE00-\uFE0F'
1748
+ },
1749
+ {
1750
+ name: 'InVariation_Selectors_Supplement',
1751
+ astral: '\uDB40[\uDD00-\uDDEF]'
1752
+ },
1753
+ {
1754
+ name: 'InVedic_Extensions',
1755
+ bmp: '\u1CD0-\u1CFF'
1756
+ },
1757
+ {
1758
+ name: 'InVertical_Forms',
1759
+ bmp: '\uFE10-\uFE1F'
1760
+ },
1761
+ {
1762
+ name: 'InWarang_Citi',
1763
+ astral: '\uD806[\uDCA0-\uDCFF]'
1764
+ },
1765
+ {
1766
+ name: 'InYi_Radicals',
1767
+ bmp: '\uA490-\uA4CF'
1768
+ },
1769
+ {
1770
+ name: 'InYi_Syllables',
1771
+ bmp: '\uA000-\uA48F'
1772
+ },
1773
+ {
1774
+ name: 'InYijing_Hexagram_Symbols',
1775
+ bmp: '\u4DC0-\u4DFF'
1776
+ }
1777
+ ]);
1778
+
1779
+ };
1780
+
1781
+ },{}],5:[function(require,module,exports){
1782
+ /*!
1783
+ * XRegExp Unicode Categories 3.2.0
1784
+ * <xregexp.com>
1785
+ * Steven Levithan (c) 2010-2017 MIT License
1786
+ * Unicode data by Mathias Bynens <mathiasbynens.be>
1787
+ */
1788
+
1789
+ module.exports = function(XRegExp) {
1790
+ 'use strict';
1791
+
1792
+ /**
1793
+ * Adds support for Unicode's general categories. E.g., `\p{Lu}` or `\p{Uppercase Letter}`. See
1794
+ * category descriptions in UAX #44 <http://unicode.org/reports/tr44/#GC_Values_Table>. Token
1795
+ * names are case insensitive, and any spaces, hyphens, and underscores are ignored.
1796
+ *
1797
+ * Uses Unicode 9.0.0.
1798
+ *
1799
+ * @requires XRegExp, Unicode Base
1800
+ */
1801
+
1802
+ if (!XRegExp.addUnicodeData) {
1803
+ throw new ReferenceError('Unicode Base must be loaded before Unicode Categories');
1804
+ }
1805
+
1806
+ XRegExp.addUnicodeData([
1807
+ {
1808
+ name: 'C',
1809
+ alias: 'Other',
1810
+ isBmpLast: true,
1811
+ bmp: '\0-\x1F\x7F-\x9F\xAD\u0378\u0379\u0380-\u0383\u038B\u038D\u03A2\u0530\u0557\u0558\u0560\u0588\u058B\u058C\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08B5\u08BE-\u08D3\u08E2\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0AF8\u0AFA-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D00\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE\u13FF\u169D-\u169F\u16F9-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180E\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE\u1AAF\u1ABF-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C89-\u1CBF\u1CC8-\u1CCF\u1CF7\u1CFA-\u1CFF\u1DF6-\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BF-\u20CF\u20F1-\u20FF\u218C-\u218F\u23FF\u2427-\u243F\u244B-\u245F\u2B74\u2B75\u2B96\u2B97\u2BBA-\u2BBC\u2BC9\u2BD2-\u2BEB\u2BF0-\u2BFF\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E45-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u312E-\u3130\u318F\u31BB-\u31BF\u31E4-\u31EF\u321F\u32FF\u4DB6-\u4DBF\u9FD6-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA6F8-\uA6FF\uA7AF\uA7B8-\uA7F6\uA82C-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C6-\uA8CD\uA8DA-\uA8DF\uA8FE\uA8FF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB66-\uAB6F\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF',
1812
+ astral: '\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDCFF\uDD03-\uDD06\uDD34-\uDD36\uDD8F\uDD9C-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2F\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDFC4-\uDFC7\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6E\uDD70-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1E\uDD3A-\uDD3E\uDD40-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE34-\uDE37\uDE3B-\uDE3E\uDE48-\uDE4F\uDE59-\uDE5F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF7-\uDEFF\uDF36-\uDF38\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDF98\uDF9D-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD00-\uDE5F\uDE7F-\uDFFF]|\uD804[\uDC4E-\uDC51\uDC70-\uDC7E\uDCBD\uDCC2-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD44-\uDD4F\uDD77-\uDD7F\uDDCE\uDDCF\uDDE0\uDDF5-\uDDFF\uDE12\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEAA-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF3B\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC5A\uDC5C\uDC5E-\uDC7F\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDDE-\uDDFF\uDE45-\uDE4F\uDE5A-\uDE5F\uDE6D-\uDE7F\uDEB8-\uDEBF\uDECA-\uDEFF\uDF1A-\uDF1C\uDF2C-\uDF2F\uDF40-\uDFFF]|\uD806[\uDC00-\uDC9F\uDCF3-\uDCFE\uDD00-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC46-\uDC4F\uDC6D-\uDC6F\uDC90\uDC91\uDCA8\uDCB7-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F\uDC75-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD823-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83F\uD874-\uD87D\uD87F-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6D\uDE70-\uDECF\uDEEE\uDEEF\uDEF6-\uDEFF\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDEFF\uDF45-\uDF4F\uDF7F-\uDF8E\uDFA0-\uDFDF\uDFE1-\uDFFF]|\uD821[\uDFED-\uDFFF]|\uD822[\uDEF3-\uDFFF]|\uD82C[\uDC02-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDCA0-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD73-\uDD7A\uDDE9-\uDDFF\uDE46-\uDEFF\uDF57-\uDF5F\uDF72-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE8C-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4B-\uDD4F\uDD5A-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDD0D-\uDD0F\uDD2F\uDD6C-\uDD6F\uDDAD-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDEFF]|\uD83D[\uDED3-\uDEDF\uDEED-\uDEEF\uDEF7-\uDEFF\uDF74-\uDF7F\uDFD5-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE-\uDD0F\uDD1F\uDD28-\uDD2F\uDD31\uDD32\uDD3F\uDD4C-\uDD4F\uDD5F-\uDD7F\uDD92-\uDDBF\uDDC1-\uDFFF]|\uD869[\uDED7-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]'
1813
+ },
1814
+ {
1815
+ name: 'Cc',
1816
+ alias: 'Control',
1817
+ bmp: '\0-\x1F\x7F-\x9F'
1818
+ },
1819
+ {
1820
+ name: 'Cf',
1821
+ alias: 'Format',
1822
+ bmp: '\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB',
1823
+ astral: '\uD804\uDCBD|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]'
1824
+ },
1825
+ {
1826
+ name: 'Cn',
1827
+ alias: 'Unassigned',
1828
+ bmp: '\u0378\u0379\u0380-\u0383\u038B\u038D\u03A2\u0530\u0557\u0558\u0560\u0588\u058B\u058C\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u05FF\u061D\u070E\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08B5\u08BE-\u08D3\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0AF8\u0AFA-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D00\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE\u13FF\u169D-\u169F\u16F9-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE\u1AAF\u1ABF-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C89-\u1CBF\u1CC8-\u1CCF\u1CF7\u1CFA-\u1CFF\u1DF6-\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u2065\u2072\u2073\u208F\u209D-\u209F\u20BF-\u20CF\u20F1-\u20FF\u218C-\u218F\u23FF\u2427-\u243F\u244B-\u245F\u2B74\u2B75\u2B96\u2B97\u2BBA-\u2BBC\u2BC9\u2BD2-\u2BEB\u2BF0-\u2BFF\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E45-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u312E-\u3130\u318F\u31BB-\u31BF\u31E4-\u31EF\u321F\u32FF\u4DB6-\u4DBF\u9FD6-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA6F8-\uA6FF\uA7AF\uA7B8-\uA7F6\uA82C-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C6-\uA8CD\uA8DA-\uA8DF\uA8FE\uA8FF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB66-\uAB6F\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD\uFEFE\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFF8\uFFFE\uFFFF',
1829
+ astral: '\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDCFF\uDD03-\uDD06\uDD34-\uDD36\uDD8F\uDD9C-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2F\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDFC4-\uDFC7\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6E\uDD70-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1E\uDD3A-\uDD3E\uDD40-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE34-\uDE37\uDE3B-\uDE3E\uDE48-\uDE4F\uDE59-\uDE5F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF7-\uDEFF\uDF36-\uDF38\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDF98\uDF9D-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD00-\uDE5F\uDE7F-\uDFFF]|\uD804[\uDC4E-\uDC51\uDC70-\uDC7E\uDCC2-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD44-\uDD4F\uDD77-\uDD7F\uDDCE\uDDCF\uDDE0\uDDF5-\uDDFF\uDE12\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEAA-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF3B\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC5A\uDC5C\uDC5E-\uDC7F\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDDE-\uDDFF\uDE45-\uDE4F\uDE5A-\uDE5F\uDE6D-\uDE7F\uDEB8-\uDEBF\uDECA-\uDEFF\uDF1A-\uDF1C\uDF2C-\uDF2F\uDF40-\uDFFF]|\uD806[\uDC00-\uDC9F\uDCF3-\uDCFE\uDD00-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC46-\uDC4F\uDC6D-\uDC6F\uDC90\uDC91\uDCA8\uDCB7-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F\uDC75-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD823-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83F\uD874-\uD87D\uD87F-\uDB3F\uDB41-\uDB7F][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6D\uDE70-\uDECF\uDEEE\uDEEF\uDEF6-\uDEFF\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDEFF\uDF45-\uDF4F\uDF7F-\uDF8E\uDFA0-\uDFDF\uDFE1-\uDFFF]|\uD821[\uDFED-\uDFFF]|\uD822[\uDEF3-\uDFFF]|\uD82C[\uDC02-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDCA4-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDDE9-\uDDFF\uDE46-\uDEFF\uDF57-\uDF5F\uDF72-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE8C-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4B-\uDD4F\uDD5A-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDD0D-\uDD0F\uDD2F\uDD6C-\uDD6F\uDDAD-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDEFF]|\uD83D[\uDED3-\uDEDF\uDEED-\uDEEF\uDEF7-\uDEFF\uDF74-\uDF7F\uDFD5-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE-\uDD0F\uDD1F\uDD28-\uDD2F\uDD31\uDD32\uDD3F\uDD4C-\uDD4F\uDD5F-\uDD7F\uDD92-\uDDBF\uDDC1-\uDFFF]|\uD869[\uDED7-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uDB40[\uDC00\uDC02-\uDC1F\uDC80-\uDCFF\uDDF0-\uDFFF]|[\uDBBF\uDBFF][\uDFFE\uDFFF]'
1830
+ },
1831
+ {
1832
+ name: 'Co',
1833
+ alias: 'Private_Use',
1834
+ bmp: '\uE000-\uF8FF',
1835
+ astral: '[\uDB80-\uDBBE\uDBC0-\uDBFE][\uDC00-\uDFFF]|[\uDBBF\uDBFF][\uDC00-\uDFFD]'
1836
+ },
1837
+ {
1838
+ name: 'Cs',
1839
+ alias: 'Surrogate',
1840
+ bmp: '\uD800-\uDFFF'
1841
+ },
1842
+ {
1843
+ name: 'L',
1844
+ alias: 'Letter',
1845
+ bmp: 'A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC',
1846
+ astral: '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]'
1847
+ },
1848
+ {
1849
+ name: 'Ll',
1850
+ alias: 'Lowercase_Letter',
1851
+ bmp: 'a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A',
1852
+ astral: '\uD801[\uDC28-\uDC4F\uDCD8-\uDCFB]|\uD803[\uDCC0-\uDCF2]|\uD806[\uDCC0-\uDCDF]|\uD835[\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]|\uD83A[\uDD22-\uDD43]'
1853
+ },
1854
+ {
1855
+ name: 'Lm',
1856
+ alias: 'Modifier_Letter',
1857
+ bmp: '\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5\u06E6\u07F4\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C\uA69D\uA717-\uA71F\uA770\uA788\uA7F8\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E\uFF9F',
1858
+ astral: '\uD81A[\uDF40-\uDF43]|\uD81B[\uDF93-\uDF9F\uDFE0]'
1859
+ },
1860
+ {
1861
+ name: 'Lo',
1862
+ alias: 'Other_Letter',
1863
+ bmp: '\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05F0-\u05F2\u0620-\u063F\u0641-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E45\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10D0-\u10FA\u10FD-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC',
1864
+ astral: '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC50-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]'
1865
+ },
1866
+ {
1867
+ name: 'Lt',
1868
+ alias: 'Titlecase_Letter',
1869
+ bmp: '\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC'
1870
+ },
1871
+ {
1872
+ name: 'Lu',
1873
+ alias: 'Uppercase_Letter',
1874
+ bmp: 'A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A',
1875
+ astral: '\uD801[\uDC00-\uDC27\uDCB0-\uDCD3]|\uD803[\uDC80-\uDCB2]|\uD806[\uDCA0-\uDCBF]|\uD835[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA]|\uD83A[\uDD00-\uDD21]'
1876
+ },
1877
+ {
1878
+ name: 'M',
1879
+ alias: 'Mark',
1880
+ bmp: '\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F',
1881
+ astral: '\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDDCA-\uDDCC\uDE2C-\uDE37\uDE3E\uDEDF-\uDEEA\uDF00-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC35-\uDC46\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDDDC\uDDDD\uDE30-\uDE40\uDEAB-\uDEB7\uDF1D-\uDF2B]|\uD807[\uDC2F-\uDC36\uDC38-\uDC3F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uDB40[\uDD00-\uDDEF]'
1882
+ },
1883
+ {
1884
+ name: 'Mc',
1885
+ alias: 'Spacing_Mark',
1886
+ bmp: '\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E\u094F\u0982\u0983\u09BE-\u09C0\u09C7\u09C8\u09CB\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB\u0ACC\u0B02\u0B03\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0D02\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2\u0DF3\u0F3E\u0F3F\u0F7F\u102B\u102C\u1031\u1038\u103B\u103C\u1056\u1057\u1062-\u1064\u1067-\u106D\u1083\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7\u17C8\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1A19\u1A1A\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43\u1B44\u1B82\u1BA1\u1BA6\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1C24-\u1C2B\u1C34\u1C35\u1CE1\u1CF2\u1CF3\u302E\u302F\uA823\uA824\uA827\uA880\uA881\uA8B4-\uA8C3\uA952\uA953\uA983\uA9B4\uA9B5\uA9BA\uA9BB\uA9BD-\uA9C0\uAA2F\uAA30\uAA33\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE\uAAEF\uAAF5\uABE3\uABE4\uABE6\uABE7\uABE9\uABEA\uABEC',
1887
+ astral: '\uD804[\uDC00\uDC02\uDC82\uDCB0-\uDCB2\uDCB7\uDCB8\uDD2C\uDD82\uDDB3-\uDDB5\uDDBF\uDDC0\uDE2C-\uDE2E\uDE32\uDE33\uDE35\uDEE0-\uDEE2\uDF02\uDF03\uDF3E\uDF3F\uDF41-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63]|\uD805[\uDC35-\uDC37\uDC40\uDC41\uDC45\uDCB0-\uDCB2\uDCB9\uDCBB-\uDCBE\uDCC1\uDDAF-\uDDB1\uDDB8-\uDDBB\uDDBE\uDE30-\uDE32\uDE3B\uDE3C\uDE3E\uDEAC\uDEAE\uDEAF\uDEB6\uDF20\uDF21\uDF26]|\uD807[\uDC2F\uDC3E\uDCA9\uDCB1\uDCB4]|\uD81B[\uDF51-\uDF7E]|\uD834[\uDD65\uDD66\uDD6D-\uDD72]'
1888
+ },
1889
+ {
1890
+ name: 'Me',
1891
+ alias: 'Enclosing_Mark',
1892
+ bmp: '\u0488\u0489\u1ABE\u20DD-\u20E0\u20E2-\u20E4\uA670-\uA672'
1893
+ },
1894
+ {
1895
+ name: 'Mn',
1896
+ alias: 'Nonspacing_Mark',
1897
+ bmp: '\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D01\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F',
1898
+ astral: '\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC01\uDC38-\uDC46\uDC7F-\uDC81\uDCB3-\uDCB6\uDCB9\uDCBA\uDD00-\uDD02\uDD27-\uDD2B\uDD2D-\uDD34\uDD73\uDD80\uDD81\uDDB6-\uDDBE\uDDCA-\uDDCC\uDE2F-\uDE31\uDE34\uDE36\uDE37\uDE3E\uDEDF\uDEE3-\uDEEA\uDF00\uDF01\uDF3C\uDF40\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC38-\uDC3F\uDC42-\uDC44\uDC46\uDCB3-\uDCB8\uDCBA\uDCBF\uDCC0\uDCC2\uDCC3\uDDB2-\uDDB5\uDDBC\uDDBD\uDDBF\uDDC0\uDDDC\uDDDD\uDE33-\uDE3A\uDE3D\uDE3F\uDE40\uDEAB\uDEAD\uDEB0-\uDEB5\uDEB7\uDF1D-\uDF1F\uDF22-\uDF25\uDF27-\uDF2B]|\uD807[\uDC30-\uDC36\uDC38-\uDC3D\uDC3F\uDC92-\uDCA7\uDCAA-\uDCB0\uDCB2\uDCB3\uDCB5\uDCB6]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD67-\uDD69\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uDB40[\uDD00-\uDDEF]'
1899
+ },
1900
+ {
1901
+ name: 'N',
1902
+ alias: 'Number',
1903
+ bmp: '0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19',
1904
+ astral: '\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE47\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDE60-\uDE7E]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2]|\uD807[\uDC50-\uDC6C]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59\uDF5B-\uDF61]|\uD834[\uDF60-\uDF71]|\uD835[\uDFCE-\uDFFF]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83C[\uDD00-\uDD0C]'
1905
+ },
1906
+ {
1907
+ name: 'Nd',
1908
+ alias: 'Decimal_Number',
1909
+ bmp: '0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19',
1910
+ astral: '\uD801[\uDCA0-\uDCA9]|\uD804[\uDC66-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF39]|\uD806[\uDCE0-\uDCE9]|\uD807[\uDC50-\uDC59]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59]|\uD835[\uDFCE-\uDFFF]|\uD83A[\uDD50-\uDD59]'
1911
+ },
1912
+ {
1913
+ name: 'Nl',
1914
+ alias: 'Letter_Number',
1915
+ bmp: '\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF',
1916
+ astral: '\uD800[\uDD40-\uDD74\uDF41\uDF4A\uDFD1-\uDFD5]|\uD809[\uDC00-\uDC6E]'
1917
+ },
1918
+ {
1919
+ name: 'No',
1920
+ alias: 'Other_Number',
1921
+ bmp: '\xB2\xB3\xB9\xBC-\xBE\u09F4-\u09F9\u0B72-\u0B77\u0BF0-\u0BF2\u0C78-\u0C7E\u0D58-\u0D5E\u0D70-\u0D78\u0F2A-\u0F33\u1369-\u137C\u17F0-\u17F9\u19DA\u2070\u2074-\u2079\u2080-\u2089\u2150-\u215F\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA830-\uA835',
1922
+ astral: '\uD800[\uDD07-\uDD33\uDD75-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE47\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDE60-\uDE7E]|\uD804[\uDC52-\uDC65\uDDE1-\uDDF4]|\uD805[\uDF3A\uDF3B]|\uD806[\uDCEA-\uDCF2]|\uD807[\uDC5A-\uDC6C]|\uD81A[\uDF5B-\uDF61]|\uD834[\uDF60-\uDF71]|\uD83A[\uDCC7-\uDCCF]|\uD83C[\uDD00-\uDD0C]'
1923
+ },
1924
+ {
1925
+ name: 'P',
1926
+ alias: 'Punctuation',
1927
+ bmp: '\x21-\x23\x25-\\x2A\x2C-\x2F\x3A\x3B\\x3F\x40\\x5B-\\x5D\x5F\\x7B\x7D\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E44\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65',
1928
+ astral: '\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD807[\uDC41-\uDC45\uDC70\uDC71]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]'
1929
+ },
1930
+ {
1931
+ name: 'Pc',
1932
+ alias: 'Connector_Punctuation',
1933
+ bmp: '\x5F\u203F\u2040\u2054\uFE33\uFE34\uFE4D-\uFE4F\uFF3F'
1934
+ },
1935
+ {
1936
+ name: 'Pd',
1937
+ alias: 'Dash_Punctuation',
1938
+ bmp: '\\x2D\u058A\u05BE\u1400\u1806\u2010-\u2015\u2E17\u2E1A\u2E3A\u2E3B\u2E40\u301C\u3030\u30A0\uFE31\uFE32\uFE58\uFE63\uFF0D'
1939
+ },
1940
+ {
1941
+ name: 'Pe',
1942
+ alias: 'Close_Punctuation',
1943
+ bmp: '\\x29\\x5D\x7D\u0F3B\u0F3D\u169C\u2046\u207E\u208E\u2309\u230B\u232A\u2769\u276B\u276D\u276F\u2771\u2773\u2775\u27C6\u27E7\u27E9\u27EB\u27ED\u27EF\u2984\u2986\u2988\u298A\u298C\u298E\u2990\u2992\u2994\u2996\u2998\u29D9\u29DB\u29FD\u2E23\u2E25\u2E27\u2E29\u3009\u300B\u300D\u300F\u3011\u3015\u3017\u3019\u301B\u301E\u301F\uFD3E\uFE18\uFE36\uFE38\uFE3A\uFE3C\uFE3E\uFE40\uFE42\uFE44\uFE48\uFE5A\uFE5C\uFE5E\uFF09\uFF3D\uFF5D\uFF60\uFF63'
1944
+ },
1945
+ {
1946
+ name: 'Pf',
1947
+ alias: 'Final_Punctuation',
1948
+ bmp: '\xBB\u2019\u201D\u203A\u2E03\u2E05\u2E0A\u2E0D\u2E1D\u2E21'
1949
+ },
1950
+ {
1951
+ name: 'Pi',
1952
+ alias: 'Initial_Punctuation',
1953
+ bmp: '\xAB\u2018\u201B\u201C\u201F\u2039\u2E02\u2E04\u2E09\u2E0C\u2E1C\u2E20'
1954
+ },
1955
+ {
1956
+ name: 'Po',
1957
+ alias: 'Other_Punctuation',
1958
+ bmp: '\x21-\x23\x25-\x27\\x2A\x2C\\x2E\x2F\x3A\x3B\\x3F\x40\\x5C\xA1\xA7\xB6\xB7\xBF\u037E\u0387\u055A-\u055F\u0589\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u166D\u166E\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u1805\u1807-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203B-\u203E\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205E\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00\u2E01\u2E06-\u2E08\u2E0B\u2E0E-\u2E16\u2E18\u2E19\u2E1B\u2E1E\u2E1F\u2E2A-\u2E2E\u2E30-\u2E39\u2E3C-\u2E3F\u2E41\u2E43\u2E44\u3001-\u3003\u303D\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFE10-\uFE16\uFE19\uFE30\uFE45\uFE46\uFE49-\uFE4C\uFE50-\uFE52\uFE54-\uFE57\uFE5F-\uFE61\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF07\uFF0A\uFF0C\uFF0E\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3C\uFF61\uFF64\uFF65',
1959
+ astral: '\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD807[\uDC41-\uDC45\uDC70\uDC71]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]'
1960
+ },
1961
+ {
1962
+ name: 'Ps',
1963
+ alias: 'Open_Punctuation',
1964
+ bmp: '\\x28\\x5B\\x7B\u0F3A\u0F3C\u169B\u201A\u201E\u2045\u207D\u208D\u2308\u230A\u2329\u2768\u276A\u276C\u276E\u2770\u2772\u2774\u27C5\u27E6\u27E8\u27EA\u27EC\u27EE\u2983\u2985\u2987\u2989\u298B\u298D\u298F\u2991\u2993\u2995\u2997\u29D8\u29DA\u29FC\u2E22\u2E24\u2E26\u2E28\u2E42\u3008\u300A\u300C\u300E\u3010\u3014\u3016\u3018\u301A\u301D\uFD3F\uFE17\uFE35\uFE37\uFE39\uFE3B\uFE3D\uFE3F\uFE41\uFE43\uFE47\uFE59\uFE5B\uFE5D\uFF08\uFF3B\uFF5B\uFF5F\uFF62'
1965
+ },
1966
+ {
1967
+ name: 'S',
1968
+ alias: 'Symbol',
1969
+ bmp: '\\x24\\x2B\x3C-\x3E\\x5E\x60\\x7C\x7E\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BE\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u23FE\u2400-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B98-\u2BB9\u2BBD-\u2BC8\u2BCA-\u2BD1\u2BEC-\u2BEF\u2CE5-\u2CEA\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u32FE\u3300-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD',
1970
+ astral: '\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9B\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD83B[\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD10-\uDD2E\uDD30-\uDD6B\uDD70-\uDDAC\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED2\uDEE0-\uDEEC\uDEF0-\uDEF6\uDF00-\uDF73\uDF80-\uDFD4]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDD10-\uDD1E\uDD20-\uDD27\uDD30\uDD33-\uDD3E\uDD40-\uDD4B\uDD50-\uDD5E\uDD80-\uDD91\uDDC0]'
1971
+ },
1972
+ {
1973
+ name: 'Sc',
1974
+ alias: 'Currency_Symbol',
1975
+ bmp: '\\x24\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BE\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6'
1976
+ },
1977
+ {
1978
+ name: 'Sk',
1979
+ alias: 'Modifier_Symbol',
1980
+ bmp: '\\x5E\x60\xA8\xAF\xB4\xB8\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u309B\u309C\uA700-\uA716\uA720\uA721\uA789\uA78A\uAB5B\uFBB2-\uFBC1\uFF3E\uFF40\uFFE3',
1981
+ astral: '\uD83C[\uDFFB-\uDFFF]'
1982
+ },
1983
+ {
1984
+ name: 'Sm',
1985
+ alias: 'Math_Symbol',
1986
+ bmp: '\\x2B\x3C-\x3E\\x7C\x7E\xAC\xB1\xD7\xF7\u03F6\u0606-\u0608\u2044\u2052\u207A-\u207C\u208A-\u208C\u2118\u2140-\u2144\u214B\u2190-\u2194\u219A\u219B\u21A0\u21A3\u21A6\u21AE\u21CE\u21CF\u21D2\u21D4\u21F4-\u22FF\u2320\u2321\u237C\u239B-\u23B3\u23DC-\u23E1\u25B7\u25C1\u25F8-\u25FF\u266F\u27C0-\u27C4\u27C7-\u27E5\u27F0-\u27FF\u2900-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2AFF\u2B30-\u2B44\u2B47-\u2B4C\uFB29\uFE62\uFE64-\uFE66\uFF0B\uFF1C-\uFF1E\uFF5C\uFF5E\uFFE2\uFFE9-\uFFEC',
1987
+ astral: '\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD83B[\uDEF0\uDEF1]'
1988
+ },
1989
+ {
1990
+ name: 'So',
1991
+ alias: 'Other_Symbol',
1992
+ bmp: '\xA6\xA9\xAE\xB0\u0482\u058D\u058E\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u09FA\u0B70\u0BF3-\u0BF8\u0BFA\u0C7F\u0D4F\u0D79\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116\u2117\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u214A\u214C\u214D\u214F\u218A\u218B\u2195-\u2199\u219C-\u219F\u21A1\u21A2\u21A4\u21A5\u21A7-\u21AD\u21AF-\u21CD\u21D0\u21D1\u21D3\u21D5-\u21F3\u2300-\u2307\u230C-\u231F\u2322-\u2328\u232B-\u237B\u237D-\u239A\u23B4-\u23DB\u23E2-\u23FE\u2400-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u25B6\u25B8-\u25C0\u25C2-\u25F7\u2600-\u266E\u2670-\u2767\u2794-\u27BF\u2800-\u28FF\u2B00-\u2B2F\u2B45\u2B46\u2B4D-\u2B73\u2B76-\u2B95\u2B98-\u2BB9\u2BBD-\u2BC8\u2BCA-\u2BD1\u2BEC-\u2BEF\u2CE5-\u2CEA\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u32FE\u3300-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA828-\uA82B\uA836\uA837\uA839\uAA77-\uAA79\uFDFD\uFFE4\uFFE8\uFFED\uFFEE\uFFFC\uFFFD',
1993
+ astral: '\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9B\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD10-\uDD2E\uDD30-\uDD6B\uDD70-\uDDAC\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDF00-\uDFFA]|\uD83D[\uDC00-\uDED2\uDEE0-\uDEEC\uDEF0-\uDEF6\uDF00-\uDF73\uDF80-\uDFD4]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDD10-\uDD1E\uDD20-\uDD27\uDD30\uDD33-\uDD3E\uDD40-\uDD4B\uDD50-\uDD5E\uDD80-\uDD91\uDDC0]'
1994
+ },
1995
+ {
1996
+ name: 'Z',
1997
+ alias: 'Separator',
1998
+ bmp: '\x20\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000'
1999
+ },
2000
+ {
2001
+ name: 'Zl',
2002
+ alias: 'Line_Separator',
2003
+ bmp: '\u2028'
2004
+ },
2005
+ {
2006
+ name: 'Zp',
2007
+ alias: 'Paragraph_Separator',
2008
+ bmp: '\u2029'
2009
+ },
2010
+ {
2011
+ name: 'Zs',
2012
+ alias: 'Space_Separator',
2013
+ bmp: '\x20\xA0\u1680\u2000-\u200A\u202F\u205F\u3000'
2014
+ }
2015
+ ]);
2016
+
2017
+ };
2018
+
2019
+ },{}],6:[function(require,module,exports){
2020
+ /*!
2021
+ * XRegExp Unicode Properties 3.2.0
2022
+ * <xregexp.com>
2023
+ * Steven Levithan (c) 2012-2017 MIT License
2024
+ * Unicode data by Mathias Bynens <mathiasbynens.be>
2025
+ */
2026
+
2027
+ module.exports = function(XRegExp) {
2028
+ 'use strict';
2029
+
2030
+ /**
2031
+ * Adds properties to meet the UTS #18 Level 1 RL1.2 requirements for Unicode regex support. See
2032
+ * <http://unicode.org/reports/tr18/#RL1.2>. Following are definitions of these properties from
2033
+ * UAX #44 <http://unicode.org/reports/tr44/>:
2034
+ *
2035
+ * - Alphabetic
2036
+ * Characters with the Alphabetic property. Generated from: Lowercase + Uppercase + Lt + Lm +
2037
+ * Lo + Nl + Other_Alphabetic.
2038
+ *
2039
+ * - Default_Ignorable_Code_Point
2040
+ * For programmatic determination of default ignorable code points. New characters that should
2041
+ * be ignored in rendering (unless explicitly supported) will be assigned in these ranges,
2042
+ * permitting programs to correctly handle the default rendering of such characters when not
2043
+ * otherwise supported.
2044
+ *
2045
+ * - Lowercase
2046
+ * Characters with the Lowercase property. Generated from: Ll + Other_Lowercase.
2047
+ *
2048
+ * - Noncharacter_Code_Point
2049
+ * Code points permanently reserved for internal use.
2050
+ *
2051
+ * - Uppercase
2052
+ * Characters with the Uppercase property. Generated from: Lu + Other_Uppercase.
2053
+ *
2054
+ * - White_Space
2055
+ * Spaces, separator characters and other control characters which should be treated by
2056
+ * programming languages as "white space" for the purpose of parsing elements.
2057
+ *
2058
+ * The properties ASCII, Any, and Assigned are also included but are not defined in UAX #44. UTS
2059
+ * #18 RL1.2 additionally requires support for Unicode scripts and general categories. These are
2060
+ * included in XRegExp's Unicode Categories and Unicode Scripts addons.
2061
+ *
2062
+ * Token names are case insensitive, and any spaces, hyphens, and underscores are ignored.
2063
+ *
2064
+ * Uses Unicode 9.0.0.
2065
+ *
2066
+ * @requires XRegExp, Unicode Base
2067
+ */
2068
+
2069
+ if (!XRegExp.addUnicodeData) {
2070
+ throw new ReferenceError('Unicode Base must be loaded before Unicode Properties');
2071
+ }
2072
+
2073
+ var unicodeData = [
2074
+ {
2075
+ name: 'ASCII',
2076
+ bmp: '\0-\x7F'
2077
+ },
2078
+ {
2079
+ name: 'Alphabetic',
2080
+ bmp: 'A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0345\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05B0-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0657\u0659-\u065F\u066E-\u06D3\u06D5-\u06DC\u06E1-\u06E8\u06ED-\u06EF\u06FA-\u06FC\u06FF\u0710-\u073F\u074D-\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0817\u081A-\u082C\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08DF\u08E3-\u08E9\u08F0-\u093B\u093D-\u094C\u094E-\u0950\u0955-\u0963\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD-\u09C4\u09C7\u09C8\u09CB\u09CC\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09F0\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A42\u0A47\u0A48\u0A4B\u0A4C\u0A51\u0A59-\u0A5C\u0A5E\u0A70-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD-\u0AC5\u0AC7-\u0AC9\u0ACB\u0ACC\u0AD0\u0AE0-\u0AE3\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D-\u0B44\u0B47\u0B48\u0B4B\u0B4C\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD0\u0BD7\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4C\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCC\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4C\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E46\u0E4D\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0ECD\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F71-\u0F81\u0F88-\u0F97\u0F99-\u0FBC\u1000-\u1036\u1038\u103B-\u103F\u1050-\u1062\u1065-\u1068\u106E-\u1086\u108E\u109C\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1713\u1720-\u1733\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17B3\u17B6-\u17C8\u17D7\u17DC\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u1938\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A1B\u1A20-\u1A5E\u1A61-\u1A74\u1AA7\u1B00-\u1B33\u1B35-\u1B43\u1B45-\u1B4B\u1B80-\u1BA9\u1BAC-\u1BAF\u1BBA-\u1BE5\u1BE7-\u1BF1\u1C00-\u1C35\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1D00-\u1DBF\u1DE7-\u1DF4\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u24B6-\u24E9\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA674-\uA67B\uA67F-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA827\uA840-\uA873\uA880-\uA8C3\uA8C5\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA92A\uA930-\uA952\uA960-\uA97C\uA980-\uA9B2\uA9B4-\uA9BF\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA60-\uAA76\uAA7A\uAA7E-\uAABE\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF5\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC',
2081
+ astral: '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC45\uDC82-\uDCB8\uDCD0-\uDCE8\uDD00-\uDD32\uDD50-\uDD72\uDD76\uDD80-\uDDBF\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE34\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEE8\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D-\uDF44\uDF47\uDF48\uDF4B\uDF4C\uDF50\uDF57\uDF5D-\uDF63]|\uD805[\uDC00-\uDC41\uDC43-\uDC45\uDC47-\uDC4A\uDC80-\uDCC1\uDCC4\uDCC5\uDCC7\uDD80-\uDDB5\uDDB8-\uDDBE\uDDD8-\uDDDD\uDE00-\uDE3E\uDE40\uDE44\uDE80-\uDEB5\uDF00-\uDF19\uDF1D-\uDF2A]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC3E\uDC40\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF36\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9E]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD47]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD30-\uDD49\uDD50-\uDD69\uDD70-\uDD89]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]'
2082
+ },
2083
+ {
2084
+ name: 'Any',
2085
+ isBmpLast: true,
2086
+ bmp: '\0-\uFFFF',
2087
+ astral: '[\uD800-\uDBFF][\uDC00-\uDFFF]'
2088
+ },
2089
+ {
2090
+ name: 'Default_Ignorable_Code_Point',
2091
+ bmp: '\xAD\u034F\u061C\u115F\u1160\u17B4\u17B5\u180B-\u180E\u200B-\u200F\u202A-\u202E\u2060-\u206F\u3164\uFE00-\uFE0F\uFEFF\uFFA0\uFFF0-\uFFF8',
2092
+ astral: '\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|[\uDB40-\uDB43][\uDC00-\uDFFF]'
2093
+ },
2094
+ {
2095
+ name: 'Lowercase',
2096
+ bmp: 'a-z\xAA\xB5\xBA\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02B8\u02C0\u02C1\u02E0-\u02E4\u0345\u0371\u0373\u0377\u037A-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1DBF\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u2071\u207F\u2090-\u209C\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2170-\u217F\u2184\u24D0-\u24E9\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7D\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B-\uA69D\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7F8-\uA7FA\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A',
2097
+ astral: '\uD801[\uDC28-\uDC4F\uDCD8-\uDCFB]|\uD803[\uDCC0-\uDCF2]|\uD806[\uDCC0-\uDCDF]|\uD835[\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]|\uD83A[\uDD22-\uDD43]'
2098
+ },
2099
+ {
2100
+ name: 'Noncharacter_Code_Point',
2101
+ bmp: '\uFDD0-\uFDEF\uFFFE\uFFFF',
2102
+ astral: '[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]'
2103
+ },
2104
+ {
2105
+ name: 'Uppercase',
2106
+ bmp: 'A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2160-\u216F\u2183\u24B6-\u24CF\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A',
2107
+ astral: '\uD801[\uDC00-\uDC27\uDCB0-\uDCD3]|\uD803[\uDC80-\uDCB2]|\uD806[\uDCA0-\uDCBF]|\uD835[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA]|\uD83A[\uDD00-\uDD21]|\uD83C[\uDD30-\uDD49\uDD50-\uDD69\uDD70-\uDD89]'
2108
+ },
2109
+ {
2110
+ name: 'White_Space',
2111
+ bmp: '\x09-\x0D\x20\x85\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000'
2112
+ }
2113
+ ];
2114
+
2115
+ // Add non-generated data
2116
+ unicodeData.push({
2117
+ name: 'Assigned',
2118
+ // Since this is defined as the inverse of Unicode category Cn (Unassigned), the Unicode
2119
+ // Categories addon is required to use this property
2120
+ inverseOf: 'Cn'
2121
+ });
2122
+
2123
+ XRegExp.addUnicodeData(unicodeData);
2124
+
2125
+ };
2126
+
2127
+ },{}],7:[function(require,module,exports){
2128
+ /*!
2129
+ * XRegExp Unicode Scripts 3.2.0
2130
+ * <xregexp.com>
2131
+ * Steven Levithan (c) 2010-2017 MIT License
2132
+ * Unicode data by Mathias Bynens <mathiasbynens.be>
2133
+ */
2134
+
2135
+ module.exports = function(XRegExp) {
2136
+ 'use strict';
2137
+
2138
+ /**
2139
+ * Adds support for all Unicode scripts. E.g., `\p{Latin}`. Token names are case insensitive,
2140
+ * and any spaces, hyphens, and underscores are ignored.
2141
+ *
2142
+ * Uses Unicode 9.0.0.
2143
+ *
2144
+ * @requires XRegExp, Unicode Base
2145
+ */
2146
+
2147
+ if (!XRegExp.addUnicodeData) {
2148
+ throw new ReferenceError('Unicode Base must be loaded before Unicode Scripts');
2149
+ }
2150
+
2151
+ XRegExp.addUnicodeData([
2152
+ {
2153
+ name: 'Adlam',
2154
+ astral: '\uD83A[\uDD00-\uDD4A\uDD50-\uDD59\uDD5E\uDD5F]'
2155
+ },
2156
+ {
2157
+ name: 'Ahom',
2158
+ astral: '\uD805[\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF3F]'
2159
+ },
2160
+ {
2161
+ name: 'Anatolian_Hieroglyphs',
2162
+ astral: '\uD811[\uDC00-\uDE46]'
2163
+ },
2164
+ {
2165
+ name: 'Arabic',
2166
+ bmp: '\u0600-\u0604\u0606-\u060B\u060D-\u061A\u061E\u0620-\u063F\u0641-\u064A\u0656-\u066F\u0671-\u06DC\u06DE-\u06FF\u0750-\u077F\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u08FF\uFB50-\uFBC1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFD\uFE70-\uFE74\uFE76-\uFEFC',
2167
+ astral: '\uD803[\uDE60-\uDE7E]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB\uDEF0\uDEF1]'
2168
+ },
2169
+ {
2170
+ name: 'Armenian',
2171
+ bmp: '\u0531-\u0556\u0559-\u055F\u0561-\u0587\u058A\u058D-\u058F\uFB13-\uFB17'
2172
+ },
2173
+ {
2174
+ name: 'Avestan',
2175
+ astral: '\uD802[\uDF00-\uDF35\uDF39-\uDF3F]'
2176
+ },
2177
+ {
2178
+ name: 'Balinese',
2179
+ bmp: '\u1B00-\u1B4B\u1B50-\u1B7C'
2180
+ },
2181
+ {
2182
+ name: 'Bamum',
2183
+ bmp: '\uA6A0-\uA6F7',
2184
+ astral: '\uD81A[\uDC00-\uDE38]'
2185
+ },
2186
+ {
2187
+ name: 'Bassa_Vah',
2188
+ astral: '\uD81A[\uDED0-\uDEED\uDEF0-\uDEF5]'
2189
+ },
2190
+ {
2191
+ name: 'Batak',
2192
+ bmp: '\u1BC0-\u1BF3\u1BFC-\u1BFF'
2193
+ },
2194
+ {
2195
+ name: 'Bengali',
2196
+ bmp: '\u0980-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09FB'
2197
+ },
2198
+ {
2199
+ name: 'Bhaiksuki',
2200
+ astral: '\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC45\uDC50-\uDC6C]'
2201
+ },
2202
+ {
2203
+ name: 'Bopomofo',
2204
+ bmp: '\u02EA\u02EB\u3105-\u312D\u31A0-\u31BA'
2205
+ },
2206
+ {
2207
+ name: 'Brahmi',
2208
+ astral: '\uD804[\uDC00-\uDC4D\uDC52-\uDC6F\uDC7F]'
2209
+ },
2210
+ {
2211
+ name: 'Braille',
2212
+ bmp: '\u2800-\u28FF'
2213
+ },
2214
+ {
2215
+ name: 'Buginese',
2216
+ bmp: '\u1A00-\u1A1B\u1A1E\u1A1F'
2217
+ },
2218
+ {
2219
+ name: 'Buhid',
2220
+ bmp: '\u1740-\u1753'
2221
+ },
2222
+ {
2223
+ name: 'Canadian_Aboriginal',
2224
+ bmp: '\u1400-\u167F\u18B0-\u18F5'
2225
+ },
2226
+ {
2227
+ name: 'Carian',
2228
+ astral: '\uD800[\uDEA0-\uDED0]'
2229
+ },
2230
+ {
2231
+ name: 'Caucasian_Albanian',
2232
+ astral: '\uD801[\uDD30-\uDD63\uDD6F]'
2233
+ },
2234
+ {
2235
+ name: 'Chakma',
2236
+ astral: '\uD804[\uDD00-\uDD34\uDD36-\uDD43]'
2237
+ },
2238
+ {
2239
+ name: 'Cham',
2240
+ bmp: '\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA5C-\uAA5F'
2241
+ },
2242
+ {
2243
+ name: 'Cherokee',
2244
+ bmp: '\u13A0-\u13F5\u13F8-\u13FD\uAB70-\uABBF'
2245
+ },
2246
+ {
2247
+ name: 'Common',
2248
+ bmp: '\0-\x40\\x5B-\x60\\x7B-\xA9\xAB-\xB9\xBB-\xBF\xD7\xF7\u02B9-\u02DF\u02E5-\u02E9\u02EC-\u02FF\u0374\u037E\u0385\u0387\u0589\u0605\u060C\u061B\u061C\u061F\u0640\u06DD\u08E2\u0964\u0965\u0E3F\u0FD5-\u0FD8\u10FB\u16EB-\u16ED\u1735\u1736\u1802\u1803\u1805\u1CD3\u1CE1\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u2000-\u200B\u200E-\u2064\u2066-\u2070\u2074-\u207E\u2080-\u208E\u20A0-\u20BE\u2100-\u2125\u2127-\u2129\u212C-\u2131\u2133-\u214D\u214F-\u215F\u2189-\u218B\u2190-\u23FE\u2400-\u2426\u2440-\u244A\u2460-\u27FF\u2900-\u2B73\u2B76-\u2B95\u2B98-\u2BB9\u2BBD-\u2BC8\u2BCA-\u2BD1\u2BEC-\u2BEF\u2E00-\u2E44\u2FF0-\u2FFB\u3000-\u3004\u3006\u3008-\u3020\u3030-\u3037\u303C-\u303F\u309B\u309C\u30A0\u30FB\u30FC\u3190-\u319F\u31C0-\u31E3\u3220-\u325F\u327F-\u32CF\u3358-\u33FF\u4DC0-\u4DFF\uA700-\uA721\uA788-\uA78A\uA830-\uA839\uA92E\uA9CF\uAB5B\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFEFF\uFF01-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFF70\uFF9E\uFF9F\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFF9-\uFFFD',
2249
+ astral: '\uD800[\uDD00-\uDD02\uDD07-\uDD33\uDD37-\uDD3F\uDD90-\uDD9B\uDDD0-\uDDFC\uDEE1-\uDEFB]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD66\uDD6A-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDF00-\uDF56\uDF60-\uDF71]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDFCB\uDFCE-\uDFFF]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD00-\uDD0C\uDD10-\uDD2E\uDD30-\uDD6B\uDD70-\uDDAC\uDDE6-\uDDFF\uDE01\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED2\uDEE0-\uDEEC\uDEF0-\uDEF6\uDF00-\uDF73\uDF80-\uDFD4]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDD10-\uDD1E\uDD20-\uDD27\uDD30\uDD33-\uDD3E\uDD40-\uDD4B\uDD50-\uDD5E\uDD80-\uDD91\uDDC0]|\uDB40[\uDC01\uDC20-\uDC7F]'
2250
+ },
2251
+ {
2252
+ name: 'Coptic',
2253
+ bmp: '\u03E2-\u03EF\u2C80-\u2CF3\u2CF9-\u2CFF'
2254
+ },
2255
+ {
2256
+ name: 'Cuneiform',
2257
+ astral: '\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC70-\uDC74\uDC80-\uDD43]'
2258
+ },
2259
+ {
2260
+ name: 'Cypriot',
2261
+ astral: '\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F]'
2262
+ },
2263
+ {
2264
+ name: 'Cyrillic',
2265
+ bmp: '\u0400-\u0484\u0487-\u052F\u1C80-\u1C88\u1D2B\u1D78\u2DE0-\u2DFF\uA640-\uA69F\uFE2E\uFE2F'
2266
+ },
2267
+ {
2268
+ name: 'Deseret',
2269
+ astral: '\uD801[\uDC00-\uDC4F]'
2270
+ },
2271
+ {
2272
+ name: 'Devanagari',
2273
+ bmp: '\u0900-\u0950\u0953-\u0963\u0966-\u097F\uA8E0-\uA8FD'
2274
+ },
2275
+ {
2276
+ name: 'Duployan',
2277
+ astral: '\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9C-\uDC9F]'
2278
+ },
2279
+ {
2280
+ name: 'Egyptian_Hieroglyphs',
2281
+ astral: '\uD80C[\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]'
2282
+ },
2283
+ {
2284
+ name: 'Elbasan',
2285
+ astral: '\uD801[\uDD00-\uDD27]'
2286
+ },
2287
+ {
2288
+ name: 'Ethiopic',
2289
+ bmp: '\u1200-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u137C\u1380-\u1399\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E'
2290
+ },
2291
+ {
2292
+ name: 'Georgian',
2293
+ bmp: '\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u10FF\u2D00-\u2D25\u2D27\u2D2D'
2294
+ },
2295
+ {
2296
+ name: 'Glagolitic',
2297
+ bmp: '\u2C00-\u2C2E\u2C30-\u2C5E',
2298
+ astral: '\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]'
2299
+ },
2300
+ {
2301
+ name: 'Gothic',
2302
+ astral: '\uD800[\uDF30-\uDF4A]'
2303
+ },
2304
+ {
2305
+ name: 'Grantha',
2306
+ astral: '\uD804[\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]'
2307
+ },
2308
+ {
2309
+ name: 'Greek',
2310
+ bmp: '\u0370-\u0373\u0375-\u0377\u037A-\u037D\u037F\u0384\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03E1\u03F0-\u03FF\u1D26-\u1D2A\u1D5D-\u1D61\u1D66-\u1D6A\u1DBF\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u2126\uAB65',
2311
+ astral: '\uD800[\uDD40-\uDD8E\uDDA0]|\uD834[\uDE00-\uDE45]'
2312
+ },
2313
+ {
2314
+ name: 'Gujarati',
2315
+ bmp: '\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AF1\u0AF9'
2316
+ },
2317
+ {
2318
+ name: 'Gurmukhi',
2319
+ bmp: '\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75'
2320
+ },
2321
+ {
2322
+ name: 'Han',
2323
+ bmp: '\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3400-\u4DB5\u4E00-\u9FD5\uF900-\uFA6D\uFA70-\uFAD9',
2324
+ astral: '[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]'
2325
+ },
2326
+ {
2327
+ name: 'Hangul',
2328
+ bmp: '\u1100-\u11FF\u302E\u302F\u3131-\u318E\u3200-\u321E\u3260-\u327E\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC'
2329
+ },
2330
+ {
2331
+ name: 'Hanunoo',
2332
+ bmp: '\u1720-\u1734'
2333
+ },
2334
+ {
2335
+ name: 'Hatran',
2336
+ astral: '\uD802[\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDCFF]'
2337
+ },
2338
+ {
2339
+ name: 'Hebrew',
2340
+ bmp: '\u0591-\u05C7\u05D0-\u05EA\u05F0-\u05F4\uFB1D-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFB4F'
2341
+ },
2342
+ {
2343
+ name: 'Hiragana',
2344
+ bmp: '\u3041-\u3096\u309D-\u309F',
2345
+ astral: '\uD82C\uDC01|\uD83C\uDE00'
2346
+ },
2347
+ {
2348
+ name: 'Imperial_Aramaic',
2349
+ astral: '\uD802[\uDC40-\uDC55\uDC57-\uDC5F]'
2350
+ },
2351
+ {
2352
+ name: 'Inherited',
2353
+ bmp: '\u0300-\u036F\u0485\u0486\u064B-\u0655\u0670\u0951\u0952\u1AB0-\u1ABE\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u200C\u200D\u20D0-\u20F0\u302A-\u302D\u3099\u309A\uFE00-\uFE0F\uFE20-\uFE2D',
2354
+ astral: '\uD800[\uDDFD\uDEE0]|\uD834[\uDD67-\uDD69\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD]|\uDB40[\uDD00-\uDDEF]'
2355
+ },
2356
+ {
2357
+ name: 'Inscriptional_Pahlavi',
2358
+ astral: '\uD802[\uDF60-\uDF72\uDF78-\uDF7F]'
2359
+ },
2360
+ {
2361
+ name: 'Inscriptional_Parthian',
2362
+ astral: '\uD802[\uDF40-\uDF55\uDF58-\uDF5F]'
2363
+ },
2364
+ {
2365
+ name: 'Javanese',
2366
+ bmp: '\uA980-\uA9CD\uA9D0-\uA9D9\uA9DE\uA9DF'
2367
+ },
2368
+ {
2369
+ name: 'Kaithi',
2370
+ astral: '\uD804[\uDC80-\uDCC1]'
2371
+ },
2372
+ {
2373
+ name: 'Kannada',
2374
+ bmp: '\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2'
2375
+ },
2376
+ {
2377
+ name: 'Katakana',
2378
+ bmp: '\u30A1-\u30FA\u30FD-\u30FF\u31F0-\u31FF\u32D0-\u32FE\u3300-\u3357\uFF66-\uFF6F\uFF71-\uFF9D',
2379
+ astral: '\uD82C\uDC00'
2380
+ },
2381
+ {
2382
+ name: 'Kayah_Li',
2383
+ bmp: '\uA900-\uA92D\uA92F'
2384
+ },
2385
+ {
2386
+ name: 'Kharoshthi',
2387
+ astral: '\uD802[\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F-\uDE47\uDE50-\uDE58]'
2388
+ },
2389
+ {
2390
+ name: 'Khmer',
2391
+ bmp: '\u1780-\u17DD\u17E0-\u17E9\u17F0-\u17F9\u19E0-\u19FF'
2392
+ },
2393
+ {
2394
+ name: 'Khojki',
2395
+ astral: '\uD804[\uDE00-\uDE11\uDE13-\uDE3E]'
2396
+ },
2397
+ {
2398
+ name: 'Khudawadi',
2399
+ astral: '\uD804[\uDEB0-\uDEEA\uDEF0-\uDEF9]'
2400
+ },
2401
+ {
2402
+ name: 'Lao',
2403
+ bmp: '\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF'
2404
+ },
2405
+ {
2406
+ name: 'Latin',
2407
+ bmp: 'A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A'
2408
+ },
2409
+ {
2410
+ name: 'Lepcha',
2411
+ bmp: '\u1C00-\u1C37\u1C3B-\u1C49\u1C4D-\u1C4F'
2412
+ },
2413
+ {
2414
+ name: 'Limbu',
2415
+ bmp: '\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1940\u1944-\u194F'
2416
+ },
2417
+ {
2418
+ name: 'Linear_A',
2419
+ astral: '\uD801[\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]'
2420
+ },
2421
+ {
2422
+ name: 'Linear_B',
2423
+ astral: '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA]'
2424
+ },
2425
+ {
2426
+ name: 'Lisu',
2427
+ bmp: '\uA4D0-\uA4FF'
2428
+ },
2429
+ {
2430
+ name: 'Lycian',
2431
+ astral: '\uD800[\uDE80-\uDE9C]'
2432
+ },
2433
+ {
2434
+ name: 'Lydian',
2435
+ astral: '\uD802[\uDD20-\uDD39\uDD3F]'
2436
+ },
2437
+ {
2438
+ name: 'Mahajani',
2439
+ astral: '\uD804[\uDD50-\uDD76]'
2440
+ },
2441
+ {
2442
+ name: 'Malayalam',
2443
+ bmp: '\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4F\u0D54-\u0D63\u0D66-\u0D7F'
2444
+ },
2445
+ {
2446
+ name: 'Mandaic',
2447
+ bmp: '\u0840-\u085B\u085E'
2448
+ },
2449
+ {
2450
+ name: 'Manichaean',
2451
+ astral: '\uD802[\uDEC0-\uDEE6\uDEEB-\uDEF6]'
2452
+ },
2453
+ {
2454
+ name: 'Marchen',
2455
+ astral: '\uD807[\uDC70-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]'
2456
+ },
2457
+ {
2458
+ name: 'Meetei_Mayek',
2459
+ bmp: '\uAAE0-\uAAF6\uABC0-\uABED\uABF0-\uABF9'
2460
+ },
2461
+ {
2462
+ name: 'Mende_Kikakui',
2463
+ astral: '\uD83A[\uDC00-\uDCC4\uDCC7-\uDCD6]'
2464
+ },
2465
+ {
2466
+ name: 'Meroitic_Cursive',
2467
+ astral: '\uD802[\uDDA0-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDDFF]'
2468
+ },
2469
+ {
2470
+ name: 'Meroitic_Hieroglyphs',
2471
+ astral: '\uD802[\uDD80-\uDD9F]'
2472
+ },
2473
+ {
2474
+ name: 'Miao',
2475
+ astral: '\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]'
2476
+ },
2477
+ {
2478
+ name: 'Modi',
2479
+ astral: '\uD805[\uDE00-\uDE44\uDE50-\uDE59]'
2480
+ },
2481
+ {
2482
+ name: 'Mongolian',
2483
+ bmp: '\u1800\u1801\u1804\u1806-\u180E\u1810-\u1819\u1820-\u1877\u1880-\u18AA',
2484
+ astral: '\uD805[\uDE60-\uDE6C]'
2485
+ },
2486
+ {
2487
+ name: 'Mro',
2488
+ astral: '\uD81A[\uDE40-\uDE5E\uDE60-\uDE69\uDE6E\uDE6F]'
2489
+ },
2490
+ {
2491
+ name: 'Multani',
2492
+ astral: '\uD804[\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA9]'
2493
+ },
2494
+ {
2495
+ name: 'Myanmar',
2496
+ bmp: '\u1000-\u109F\uA9E0-\uA9FE\uAA60-\uAA7F'
2497
+ },
2498
+ {
2499
+ name: 'Nabataean',
2500
+ astral: '\uD802[\uDC80-\uDC9E\uDCA7-\uDCAF]'
2501
+ },
2502
+ {
2503
+ name: 'New_Tai_Lue',
2504
+ bmp: '\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u19DE\u19DF'
2505
+ },
2506
+ {
2507
+ name: 'Newa',
2508
+ astral: '\uD805[\uDC00-\uDC59\uDC5B\uDC5D]'
2509
+ },
2510
+ {
2511
+ name: 'Nko',
2512
+ bmp: '\u07C0-\u07FA'
2513
+ },
2514
+ {
2515
+ name: 'Ogham',
2516
+ bmp: '\u1680-\u169C'
2517
+ },
2518
+ {
2519
+ name: 'Ol_Chiki',
2520
+ bmp: '\u1C50-\u1C7F'
2521
+ },
2522
+ {
2523
+ name: 'Old_Hungarian',
2524
+ astral: '\uD803[\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDCFF]'
2525
+ },
2526
+ {
2527
+ name: 'Old_Italic',
2528
+ astral: '\uD800[\uDF00-\uDF23]'
2529
+ },
2530
+ {
2531
+ name: 'Old_North_Arabian',
2532
+ astral: '\uD802[\uDE80-\uDE9F]'
2533
+ },
2534
+ {
2535
+ name: 'Old_Permic',
2536
+ astral: '\uD800[\uDF50-\uDF7A]'
2537
+ },
2538
+ {
2539
+ name: 'Old_Persian',
2540
+ astral: '\uD800[\uDFA0-\uDFC3\uDFC8-\uDFD5]'
2541
+ },
2542
+ {
2543
+ name: 'Old_South_Arabian',
2544
+ astral: '\uD802[\uDE60-\uDE7F]'
2545
+ },
2546
+ {
2547
+ name: 'Old_Turkic',
2548
+ astral: '\uD803[\uDC00-\uDC48]'
2549
+ },
2550
+ {
2551
+ name: 'Oriya',
2552
+ bmp: '\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B77'
2553
+ },
2554
+ {
2555
+ name: 'Osage',
2556
+ astral: '\uD801[\uDCB0-\uDCD3\uDCD8-\uDCFB]'
2557
+ },
2558
+ {
2559
+ name: 'Osmanya',
2560
+ astral: '\uD801[\uDC80-\uDC9D\uDCA0-\uDCA9]'
2561
+ },
2562
+ {
2563
+ name: 'Pahawh_Hmong',
2564
+ astral: '\uD81A[\uDF00-\uDF45\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]'
2565
+ },
2566
+ {
2567
+ name: 'Palmyrene',
2568
+ astral: '\uD802[\uDC60-\uDC7F]'
2569
+ },
2570
+ {
2571
+ name: 'Pau_Cin_Hau',
2572
+ astral: '\uD806[\uDEC0-\uDEF8]'
2573
+ },
2574
+ {
2575
+ name: 'Phags_Pa',
2576
+ bmp: '\uA840-\uA877'
2577
+ },
2578
+ {
2579
+ name: 'Phoenician',
2580
+ astral: '\uD802[\uDD00-\uDD1B\uDD1F]'
2581
+ },
2582
+ {
2583
+ name: 'Psalter_Pahlavi',
2584
+ astral: '\uD802[\uDF80-\uDF91\uDF99-\uDF9C\uDFA9-\uDFAF]'
2585
+ },
2586
+ {
2587
+ name: 'Rejang',
2588
+ bmp: '\uA930-\uA953\uA95F'
2589
+ },
2590
+ {
2591
+ name: 'Runic',
2592
+ bmp: '\u16A0-\u16EA\u16EE-\u16F8'
2593
+ },
2594
+ {
2595
+ name: 'Samaritan',
2596
+ bmp: '\u0800-\u082D\u0830-\u083E'
2597
+ },
2598
+ {
2599
+ name: 'Saurashtra',
2600
+ bmp: '\uA880-\uA8C5\uA8CE-\uA8D9'
2601
+ },
2602
+ {
2603
+ name: 'Sharada',
2604
+ astral: '\uD804[\uDD80-\uDDCD\uDDD0-\uDDDF]'
2605
+ },
2606
+ {
2607
+ name: 'Shavian',
2608
+ astral: '\uD801[\uDC50-\uDC7F]'
2609
+ },
2610
+ {
2611
+ name: 'Siddham',
2612
+ astral: '\uD805[\uDD80-\uDDB5\uDDB8-\uDDDD]'
2613
+ },
2614
+ {
2615
+ name: 'SignWriting',
2616
+ astral: '\uD836[\uDC00-\uDE8B\uDE9B-\uDE9F\uDEA1-\uDEAF]'
2617
+ },
2618
+ {
2619
+ name: 'Sinhala',
2620
+ bmp: '\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4',
2621
+ astral: '\uD804[\uDDE1-\uDDF4]'
2622
+ },
2623
+ {
2624
+ name: 'Sora_Sompeng',
2625
+ astral: '\uD804[\uDCD0-\uDCE8\uDCF0-\uDCF9]'
2626
+ },
2627
+ {
2628
+ name: 'Sundanese',
2629
+ bmp: '\u1B80-\u1BBF\u1CC0-\u1CC7'
2630
+ },
2631
+ {
2632
+ name: 'Syloti_Nagri',
2633
+ bmp: '\uA800-\uA82B'
2634
+ },
2635
+ {
2636
+ name: 'Syriac',
2637
+ bmp: '\u0700-\u070D\u070F-\u074A\u074D-\u074F'
2638
+ },
2639
+ {
2640
+ name: 'Tagalog',
2641
+ bmp: '\u1700-\u170C\u170E-\u1714'
2642
+ },
2643
+ {
2644
+ name: 'Tagbanwa',
2645
+ bmp: '\u1760-\u176C\u176E-\u1770\u1772\u1773'
2646
+ },
2647
+ {
2648
+ name: 'Tai_Le',
2649
+ bmp: '\u1950-\u196D\u1970-\u1974'
2650
+ },
2651
+ {
2652
+ name: 'Tai_Tham',
2653
+ bmp: '\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA0-\u1AAD'
2654
+ },
2655
+ {
2656
+ name: 'Tai_Viet',
2657
+ bmp: '\uAA80-\uAAC2\uAADB-\uAADF'
2658
+ },
2659
+ {
2660
+ name: 'Takri',
2661
+ astral: '\uD805[\uDE80-\uDEB7\uDEC0-\uDEC9]'
2662
+ },
2663
+ {
2664
+ name: 'Tamil',
2665
+ bmp: '\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BFA'
2666
+ },
2667
+ {
2668
+ name: 'Tangut',
2669
+ astral: '\uD81B\uDFE0|[\uD81C-\uD820][\uDC00-\uDFFF]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]'
2670
+ },
2671
+ {
2672
+ name: 'Telugu',
2673
+ bmp: '\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C78-\u0C7F'
2674
+ },
2675
+ {
2676
+ name: 'Thaana',
2677
+ bmp: '\u0780-\u07B1'
2678
+ },
2679
+ {
2680
+ name: 'Thai',
2681
+ bmp: '\u0E01-\u0E3A\u0E40-\u0E5B'
2682
+ },
2683
+ {
2684
+ name: 'Tibetan',
2685
+ bmp: '\u0F00-\u0F47\u0F49-\u0F6C\u0F71-\u0F97\u0F99-\u0FBC\u0FBE-\u0FCC\u0FCE-\u0FD4\u0FD9\u0FDA'
2686
+ },
2687
+ {
2688
+ name: 'Tifinagh',
2689
+ bmp: '\u2D30-\u2D67\u2D6F\u2D70\u2D7F'
2690
+ },
2691
+ {
2692
+ name: 'Tirhuta',
2693
+ astral: '\uD805[\uDC80-\uDCC7\uDCD0-\uDCD9]'
2694
+ },
2695
+ {
2696
+ name: 'Ugaritic',
2697
+ astral: '\uD800[\uDF80-\uDF9D\uDF9F]'
2698
+ },
2699
+ {
2700
+ name: 'Vai',
2701
+ bmp: '\uA500-\uA62B'
2702
+ },
2703
+ {
2704
+ name: 'Warang_Citi',
2705
+ astral: '\uD806[\uDCA0-\uDCF2\uDCFF]'
2706
+ },
2707
+ {
2708
+ name: 'Yi',
2709
+ bmp: '\uA000-\uA48C\uA490-\uA4C6'
2710
+ }
2711
+ ]);
2712
+
2713
+ };
2714
+
2715
+ },{}],8:[function(require,module,exports){
2716
+ var XRegExp = require('./xregexp');
2717
+
2718
+ require('./addons/build')(XRegExp);
2719
+ require('./addons/matchrecursive')(XRegExp);
2720
+ require('./addons/unicode-base')(XRegExp);
2721
+ require('./addons/unicode-blocks')(XRegExp);
2722
+ require('./addons/unicode-categories')(XRegExp);
2723
+ require('./addons/unicode-properties')(XRegExp);
2724
+ require('./addons/unicode-scripts')(XRegExp);
2725
+
2726
+ module.exports = XRegExp;
2727
+
2728
+ },{"./addons/build":1,"./addons/matchrecursive":2,"./addons/unicode-base":3,"./addons/unicode-blocks":4,"./addons/unicode-categories":5,"./addons/unicode-properties":6,"./addons/unicode-scripts":7,"./xregexp":9}],9:[function(require,module,exports){
2729
+ /*!
2730
+ * XRegExp 3.2.0
2731
+ * <xregexp.com>
2732
+ * Steven Levithan (c) 2007-2017 MIT License
2733
+ */
2734
+
2735
+ 'use strict';
2736
+
2737
+ /**
2738
+ * XRegExp provides augmented, extensible regular expressions. You get additional regex syntax and
2739
+ * flags, beyond what browsers support natively. XRegExp is also a regex utility belt with tools to
2740
+ * make your client-side grepping simpler and more powerful, while freeing you from related
2741
+ * cross-browser inconsistencies.
2742
+ */
2743
+
2744
+ // ==--------------------------==
2745
+ // Private stuff
2746
+ // ==--------------------------==
2747
+
2748
+ // Property name used for extended regex instance data
2749
+ var REGEX_DATA = 'xregexp';
2750
+ // Optional features that can be installed and uninstalled
2751
+ var features = {
2752
+ astral: false,
2753
+ natives: false
2754
+ };
2755
+ // Native methods to use and restore ('native' is an ES3 reserved keyword)
2756
+ var nativ = {
2757
+ exec: RegExp.prototype.exec,
2758
+ test: RegExp.prototype.test,
2759
+ match: String.prototype.match,
2760
+ replace: String.prototype.replace,
2761
+ split: String.prototype.split
2762
+ };
2763
+ // Storage for fixed/extended native methods
2764
+ var fixed = {};
2765
+ // Storage for regexes cached by `XRegExp.cache`
2766
+ var regexCache = {};
2767
+ // Storage for pattern details cached by the `XRegExp` constructor
2768
+ var patternCache = {};
2769
+ // Storage for regex syntax tokens added internally or by `XRegExp.addToken`
2770
+ var tokens = [];
2771
+ // Token scopes
2772
+ var defaultScope = 'default';
2773
+ var classScope = 'class';
2774
+ // Regexes that match native regex syntax, including octals
2775
+ var nativeTokens = {
2776
+ // Any native multicharacter token in default scope, or any single character
2777
+ 'default': /\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|\(\?(?:[:=!]|<[=!])|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/,
2778
+ // Any native multicharacter token in character class scope, or any single character
2779
+ 'class': /\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|[\s\S]/
2780
+ };
2781
+ // Any backreference or dollar-prefixed character in replacement strings
2782
+ var replacementToken = /\$(?:{([\w$]+)}|(\d\d?|[\s\S]))/g;
2783
+ // Check for correct `exec` handling of nonparticipating capturing groups
2784
+ var correctExecNpcg = nativ.exec.call(/()??/, '')[1] === undefined;
2785
+ // Check for ES6 `flags` prop support
2786
+ var hasFlagsProp = /x/.flags !== undefined;
2787
+ // Shortcut to `Object.prototype.toString`
2788
+ var toString = {}.toString;
2789
+
2790
+ function hasNativeFlag(flag) {
2791
+ // Can't check based on the presence of properties/getters since browsers might support such
2792
+ // properties even when they don't support the corresponding flag in regex construction (tested
2793
+ // in Chrome 48, where `'unicode' in /x/` is true but trying to construct a regex with flag `u`
2794
+ // throws an error)
2795
+ var isSupported = true;
2796
+ try {
2797
+ // Can't use regex literals for testing even in a `try` because regex literals with
2798
+ // unsupported flags cause a compilation error in IE
2799
+ new RegExp('', flag);
2800
+ } catch (exception) {
2801
+ isSupported = false;
2802
+ }
2803
+ return isSupported;
2804
+ }
2805
+ // Check for ES6 `u` flag support
2806
+ var hasNativeU = hasNativeFlag('u');
2807
+ // Check for ES6 `y` flag support
2808
+ var hasNativeY = hasNativeFlag('y');
2809
+ // Tracker for known flags, including addon flags
2810
+ var registeredFlags = {
2811
+ g: true,
2812
+ i: true,
2813
+ m: true,
2814
+ u: hasNativeU,
2815
+ y: hasNativeY
2816
+ };
2817
+
2818
+ /**
2819
+ * Attaches extended data and `XRegExp.prototype` properties to a regex object.
2820
+ *
2821
+ * @private
2822
+ * @param {RegExp} regex Regex to augment.
2823
+ * @param {Array} captureNames Array with capture names, or `null`.
2824
+ * @param {String} xSource XRegExp pattern used to generate `regex`, or `null` if N/A.
2825
+ * @param {String} xFlags XRegExp flags used to generate `regex`, or `null` if N/A.
2826
+ * @param {Boolean} [isInternalOnly=false] Whether the regex will be used only for internal
2827
+ * operations, and never exposed to users. For internal-only regexes, we can improve perf by
2828
+ * skipping some operations like attaching `XRegExp.prototype` properties.
2829
+ * @returns {RegExp} Augmented regex.
2830
+ */
2831
+ function augment(regex, captureNames, xSource, xFlags, isInternalOnly) {
2832
+ var p;
2833
+
2834
+ regex[REGEX_DATA] = {
2835
+ captureNames: captureNames
2836
+ };
2837
+
2838
+ if (isInternalOnly) {
2839
+ return regex;
2840
+ }
2841
+
2842
+ // Can't auto-inherit these since the XRegExp constructor returns a nonprimitive value
2843
+ if (regex.__proto__) {
2844
+ regex.__proto__ = XRegExp.prototype;
2845
+ } else {
2846
+ for (p in XRegExp.prototype) {
2847
+ // An `XRegExp.prototype.hasOwnProperty(p)` check wouldn't be worth it here, since this
2848
+ // is performance sensitive, and enumerable `Object.prototype` or `RegExp.prototype`
2849
+ // extensions exist on `regex.prototype` anyway
2850
+ regex[p] = XRegExp.prototype[p];
2851
+ }
2852
+ }
2853
+
2854
+ regex[REGEX_DATA].source = xSource;
2855
+ // Emulate the ES6 `flags` prop by ensuring flags are in alphabetical order
2856
+ regex[REGEX_DATA].flags = xFlags ? xFlags.split('').sort().join('') : xFlags;
2857
+
2858
+ return regex;
2859
+ }
2860
+
2861
+ /**
2862
+ * Removes any duplicate characters from the provided string.
2863
+ *
2864
+ * @private
2865
+ * @param {String} str String to remove duplicate characters from.
2866
+ * @returns {String} String with any duplicate characters removed.
2867
+ */
2868
+ function clipDuplicates(str) {
2869
+ return nativ.replace.call(str, /([\s\S])(?=[\s\S]*\1)/g, '');
2870
+ }
2871
+
2872
+ /**
2873
+ * Copies a regex object while preserving extended data and augmenting with `XRegExp.prototype`
2874
+ * properties. The copy has a fresh `lastIndex` property (set to zero). Allows adding and removing
2875
+ * flags g and y while copying the regex.
2876
+ *
2877
+ * @private
2878
+ * @param {RegExp} regex Regex to copy.
2879
+ * @param {Object} [options] Options object with optional properties:
2880
+ * - `addG` {Boolean} Add flag g while copying the regex.
2881
+ * - `addY` {Boolean} Add flag y while copying the regex.
2882
+ * - `removeG` {Boolean} Remove flag g while copying the regex.
2883
+ * - `removeY` {Boolean} Remove flag y while copying the regex.
2884
+ * - `isInternalOnly` {Boolean} Whether the copied regex will be used only for internal
2885
+ * operations, and never exposed to users. For internal-only regexes, we can improve perf by
2886
+ * skipping some operations like attaching `XRegExp.prototype` properties.
2887
+ * - `source` {String} Overrides `<regex>.source`, for special cases.
2888
+ * @returns {RegExp} Copy of the provided regex, possibly with modified flags.
2889
+ */
2890
+ function copyRegex(regex, options) {
2891
+ if (!XRegExp.isRegExp(regex)) {
2892
+ throw new TypeError('Type RegExp expected');
2893
+ }
2894
+
2895
+ var xData = regex[REGEX_DATA] || {};
2896
+ var flags = getNativeFlags(regex);
2897
+ var flagsToAdd = '';
2898
+ var flagsToRemove = '';
2899
+ var xregexpSource = null;
2900
+ var xregexpFlags = null;
2901
+
2902
+ options = options || {};
2903
+
2904
+ if (options.removeG) {flagsToRemove += 'g';}
2905
+ if (options.removeY) {flagsToRemove += 'y';}
2906
+ if (flagsToRemove) {
2907
+ flags = nativ.replace.call(flags, new RegExp('[' + flagsToRemove + ']+', 'g'), '');
2908
+ }
2909
+
2910
+ if (options.addG) {flagsToAdd += 'g';}
2911
+ if (options.addY) {flagsToAdd += 'y';}
2912
+ if (flagsToAdd) {
2913
+ flags = clipDuplicates(flags + flagsToAdd);
2914
+ }
2915
+
2916
+ if (!options.isInternalOnly) {
2917
+ if (xData.source !== undefined) {
2918
+ xregexpSource = xData.source;
2919
+ }
2920
+ // null or undefined; don't want to add to `flags` if the previous value was null, since
2921
+ // that indicates we're not tracking original precompilation flags
2922
+ if (xData.flags != null) {
2923
+ // Flags are only added for non-internal regexes by `XRegExp.globalize`. Flags are never
2924
+ // removed for non-internal regexes, so don't need to handle it
2925
+ xregexpFlags = flagsToAdd ? clipDuplicates(xData.flags + flagsToAdd) : xData.flags;
2926
+ }
2927
+ }
2928
+
2929
+ // Augment with `XRegExp.prototype` properties, but use the native `RegExp` constructor to avoid
2930
+ // searching for special tokens. That would be wrong for regexes constructed by `RegExp`, and
2931
+ // unnecessary for regexes constructed by `XRegExp` because the regex has already undergone the
2932
+ // translation to native regex syntax
2933
+ regex = augment(
2934
+ new RegExp(options.source || regex.source, flags),
2935
+ hasNamedCapture(regex) ? xData.captureNames.slice(0) : null,
2936
+ xregexpSource,
2937
+ xregexpFlags,
2938
+ options.isInternalOnly
2939
+ );
2940
+
2941
+ return regex;
2942
+ }
2943
+
2944
+ /**
2945
+ * Converts hexadecimal to decimal.
2946
+ *
2947
+ * @private
2948
+ * @param {String} hex
2949
+ * @returns {Number}
2950
+ */
2951
+ function dec(hex) {
2952
+ return parseInt(hex, 16);
2953
+ }
2954
+
2955
+ /**
2956
+ * Returns a pattern that can be used in a native RegExp in place of an ignorable token such as an
2957
+ * inline comment or whitespace with flag x. This is used directly as a token handler function
2958
+ * passed to `XRegExp.addToken`.
2959
+ *
2960
+ * @private
2961
+ * @param {String} match Match arg of `XRegExp.addToken` handler
2962
+ * @param {String} scope Scope arg of `XRegExp.addToken` handler
2963
+ * @param {String} flags Flags arg of `XRegExp.addToken` handler
2964
+ * @returns {String} Either '' or '(?:)', depending on which is needed in the context of the match.
2965
+ */
2966
+ function getContextualTokenSeparator(match, scope, flags) {
2967
+ if (
2968
+ // No need to separate tokens if at the beginning or end of a group
2969
+ match.input.charAt(match.index - 1) === '(' ||
2970
+ match.input.charAt(match.index + match[0].length) === ')' ||
2971
+ // Avoid separating tokens when the following token is a quantifier
2972
+ isPatternNext(match.input, match.index + match[0].length, flags, '[?*+]|{\\d+(?:,\\d*)?}')
2973
+ ) {
2974
+ return '';
2975
+ }
2976
+ // Keep tokens separated. This avoids e.g. inadvertedly changing `\1 1` or `\1(?#)1` to `\11`.
2977
+ // This also ensures all tokens remain as discrete atoms, e.g. it avoids converting the syntax
2978
+ // error `(? :` into `(?:`.
2979
+ return '(?:)';
2980
+ }
2981
+
2982
+ /**
2983
+ * Returns native `RegExp` flags used by a regex object.
2984
+ *
2985
+ * @private
2986
+ * @param {RegExp} regex Regex to check.
2987
+ * @returns {String} Native flags in use.
2988
+ */
2989
+ function getNativeFlags(regex) {
2990
+ return hasFlagsProp ?
2991
+ regex.flags :
2992
+ // Explicitly using `RegExp.prototype.toString` (rather than e.g. `String` or concatenation
2993
+ // with an empty string) allows this to continue working predictably when
2994
+ // `XRegExp.proptotype.toString` is overridden
2995
+ nativ.exec.call(/\/([a-z]*)$/i, RegExp.prototype.toString.call(regex))[1];
2996
+ }
2997
+
2998
+ /**
2999
+ * Determines whether a regex has extended instance data used to track capture names.
3000
+ *
3001
+ * @private
3002
+ * @param {RegExp} regex Regex to check.
3003
+ * @returns {Boolean} Whether the regex uses named capture.
3004
+ */
3005
+ function hasNamedCapture(regex) {
3006
+ return !!(regex[REGEX_DATA] && regex[REGEX_DATA].captureNames);
3007
+ }
3008
+
3009
+ /**
3010
+ * Converts decimal to hexadecimal.
3011
+ *
3012
+ * @private
3013
+ * @param {Number|String} dec
3014
+ * @returns {String}
3015
+ */
3016
+ function hex(dec) {
3017
+ return parseInt(dec, 10).toString(16);
3018
+ }
3019
+
3020
+ /**
3021
+ * Returns the first index at which a given value can be found in an array.
3022
+ *
3023
+ * @private
3024
+ * @param {Array} array Array to search.
3025
+ * @param {*} value Value to locate in the array.
3026
+ * @returns {Number} Zero-based index at which the item is found, or -1.
3027
+ */
3028
+ function indexOf(array, value) {
3029
+ var len = array.length;
3030
+ var i;
3031
+
3032
+ for (i = 0; i < len; ++i) {
3033
+ if (array[i] === value) {
3034
+ return i;
3035
+ }
3036
+ }
3037
+
3038
+ return -1;
3039
+ }
3040
+
3041
+ /**
3042
+ * Checks whether the next nonignorable token after the specified position matches the
3043
+ * `needlePattern`
3044
+ *
3045
+ * @private
3046
+ * @param {String} pattern Pattern to search within.
3047
+ * @param {Number} pos Index in `pattern` to search at.
3048
+ * @param {String} flags Flags used by the pattern.
3049
+ * @param {String} needlePattern Pattern to match the next token against.
3050
+ * @returns {Boolean} Whether the next nonignorable token matches `needlePattern`
3051
+ */
3052
+ function isPatternNext(pattern, pos, flags, needlePattern) {
3053
+ var inlineCommentPattern = '\\(\\?#[^)]*\\)';
3054
+ var lineCommentPattern = '#[^#\\n]*';
3055
+ var patternsToIgnore = flags.indexOf('x') > -1 ?
3056
+ // Ignore any leading whitespace, line comments, and inline comments
3057
+ ['\\s', lineCommentPattern, inlineCommentPattern] :
3058
+ // Ignore any leading inline comments
3059
+ [inlineCommentPattern];
3060
+ return nativ.test.call(
3061
+ new RegExp('^(?:' + patternsToIgnore.join('|') + ')*(?:' + needlePattern + ')'),
3062
+ pattern.slice(pos)
3063
+ );
3064
+ }
3065
+
3066
+ /**
3067
+ * Determines whether a value is of the specified type, by resolving its internal [[Class]].
3068
+ *
3069
+ * @private
3070
+ * @param {*} value Object to check.
3071
+ * @param {String} type Type to check for, in TitleCase.
3072
+ * @returns {Boolean} Whether the object matches the type.
3073
+ */
3074
+ function isType(value, type) {
3075
+ return toString.call(value) === '[object ' + type + ']';
3076
+ }
3077
+
3078
+ /**
3079
+ * Adds leading zeros if shorter than four characters. Used for fixed-length hexadecimal values.
3080
+ *
3081
+ * @private
3082
+ * @param {String} str
3083
+ * @returns {String}
3084
+ */
3085
+ function pad4(str) {
3086
+ while (str.length < 4) {
3087
+ str = '0' + str;
3088
+ }
3089
+ return str;
3090
+ }
3091
+
3092
+ /**
3093
+ * Checks for flag-related errors, and strips/applies flags in a leading mode modifier. Offloads
3094
+ * the flag preparation logic from the `XRegExp` constructor.
3095
+ *
3096
+ * @private
3097
+ * @param {String} pattern Regex pattern, possibly with a leading mode modifier.
3098
+ * @param {String} flags Any combination of flags.
3099
+ * @returns {Object} Object with properties `pattern` and `flags`.
3100
+ */
3101
+ function prepareFlags(pattern, flags) {
3102
+ var i;
3103
+
3104
+ // Recent browsers throw on duplicate flags, so copy this behavior for nonnative flags
3105
+ if (clipDuplicates(flags) !== flags) {
3106
+ throw new SyntaxError('Invalid duplicate regex flag ' + flags);
3107
+ }
3108
+
3109
+ // Strip and apply a leading mode modifier with any combination of flags except g or y
3110
+ pattern = nativ.replace.call(pattern, /^\(\?([\w$]+)\)/, function($0, $1) {
3111
+ if (nativ.test.call(/[gy]/, $1)) {
3112
+ throw new SyntaxError('Cannot use flag g or y in mode modifier ' + $0);
3113
+ }
3114
+ // Allow duplicate flags within the mode modifier
3115
+ flags = clipDuplicates(flags + $1);
3116
+ return '';
3117
+ });
3118
+
3119
+ // Throw on unknown native or nonnative flags
3120
+ for (i = 0; i < flags.length; ++i) {
3121
+ if (!registeredFlags[flags.charAt(i)]) {
3122
+ throw new SyntaxError('Unknown regex flag ' + flags.charAt(i));
3123
+ }
3124
+ }
3125
+
3126
+ return {
3127
+ pattern: pattern,
3128
+ flags: flags
3129
+ };
3130
+ }
3131
+
3132
+ /**
3133
+ * Prepares an options object from the given value.
3134
+ *
3135
+ * @private
3136
+ * @param {String|Object} value Value to convert to an options object.
3137
+ * @returns {Object} Options object.
3138
+ */
3139
+ function prepareOptions(value) {
3140
+ var options = {};
3141
+
3142
+ if (isType(value, 'String')) {
3143
+ XRegExp.forEach(value, /[^\s,]+/, function(match) {
3144
+ options[match] = true;
3145
+ });
3146
+
3147
+ return options;
3148
+ }
3149
+
3150
+ return value;
3151
+ }
3152
+
3153
+ /**
3154
+ * Registers a flag so it doesn't throw an 'unknown flag' error.
3155
+ *
3156
+ * @private
3157
+ * @param {String} flag Single-character flag to register.
3158
+ */
3159
+ function registerFlag(flag) {
3160
+ if (!/^[\w$]$/.test(flag)) {
3161
+ throw new Error('Flag must be a single character A-Za-z0-9_$');
3162
+ }
3163
+
3164
+ registeredFlags[flag] = true;
3165
+ }
3166
+
3167
+ /**
3168
+ * Runs built-in and custom regex syntax tokens in reverse insertion order at the specified
3169
+ * position, until a match is found.
3170
+ *
3171
+ * @private
3172
+ * @param {String} pattern Original pattern from which an XRegExp object is being built.
3173
+ * @param {String} flags Flags being used to construct the regex.
3174
+ * @param {Number} pos Position to search for tokens within `pattern`.
3175
+ * @param {Number} scope Regex scope to apply: 'default' or 'class'.
3176
+ * @param {Object} context Context object to use for token handler functions.
3177
+ * @returns {Object} Object with properties `matchLength`, `output`, and `reparse`; or `null`.
3178
+ */
3179
+ function runTokens(pattern, flags, pos, scope, context) {
3180
+ var i = tokens.length;
3181
+ var leadChar = pattern.charAt(pos);
3182
+ var result = null;
3183
+ var match;
3184
+ var t;
3185
+
3186
+ // Run in reverse insertion order
3187
+ while (i--) {
3188
+ t = tokens[i];
3189
+ if (
3190
+ (t.leadChar && t.leadChar !== leadChar) ||
3191
+ (t.scope !== scope && t.scope !== 'all') ||
3192
+ (t.flag && flags.indexOf(t.flag) === -1)
3193
+ ) {
3194
+ continue;
3195
+ }
3196
+
3197
+ match = XRegExp.exec(pattern, t.regex, pos, 'sticky');
3198
+ if (match) {
3199
+ result = {
3200
+ matchLength: match[0].length,
3201
+ output: t.handler.call(context, match, scope, flags),
3202
+ reparse: t.reparse
3203
+ };
3204
+ // Finished with token tests
3205
+ break;
3206
+ }
3207
+ }
3208
+
3209
+ return result;
3210
+ }
3211
+
3212
+ /**
3213
+ * Enables or disables implicit astral mode opt-in. When enabled, flag A is automatically added to
3214
+ * all new regexes created by XRegExp. This causes an error to be thrown when creating regexes if
3215
+ * the Unicode Base addon is not available, since flag A is registered by that addon.
3216
+ *
3217
+ * @private
3218
+ * @param {Boolean} on `true` to enable; `false` to disable.
3219
+ */
3220
+ function setAstral(on) {
3221
+ features.astral = on;
3222
+ }
3223
+
3224
+ /**
3225
+ * Enables or disables native method overrides.
3226
+ *
3227
+ * @private
3228
+ * @param {Boolean} on `true` to enable; `false` to disable.
3229
+ */
3230
+ function setNatives(on) {
3231
+ RegExp.prototype.exec = (on ? fixed : nativ).exec;
3232
+ RegExp.prototype.test = (on ? fixed : nativ).test;
3233
+ String.prototype.match = (on ? fixed : nativ).match;
3234
+ String.prototype.replace = (on ? fixed : nativ).replace;
3235
+ String.prototype.split = (on ? fixed : nativ).split;
3236
+
3237
+ features.natives = on;
3238
+ }
3239
+
3240
+ /**
3241
+ * Returns the object, or throws an error if it is `null` or `undefined`. This is used to follow
3242
+ * the ES5 abstract operation `ToObject`.
3243
+ *
3244
+ * @private
3245
+ * @param {*} value Object to check and return.
3246
+ * @returns {*} The provided object.
3247
+ */
3248
+ function toObject(value) {
3249
+ // null or undefined
3250
+ if (value == null) {
3251
+ throw new TypeError('Cannot convert null or undefined to object');
3252
+ }
3253
+
3254
+ return value;
3255
+ }
3256
+
3257
+ // ==--------------------------==
3258
+ // Constructor
3259
+ // ==--------------------------==
3260
+
3261
+ /**
3262
+ * Creates an extended regular expression object for matching text with a pattern. Differs from a
3263
+ * native regular expression in that additional syntax and flags are supported. The returned object
3264
+ * is in fact a native `RegExp` and works with all native methods.
3265
+ *
3266
+ * @class XRegExp
3267
+ * @constructor
3268
+ * @param {String|RegExp} pattern Regex pattern string, or an existing regex object to copy.
3269
+ * @param {String} [flags] Any combination of flags.
3270
+ * Native flags:
3271
+ * - `g` - global
3272
+ * - `i` - ignore case
3273
+ * - `m` - multiline anchors
3274
+ * - `u` - unicode (ES6)
3275
+ * - `y` - sticky (Firefox 3+, ES6)
3276
+ * Additional XRegExp flags:
3277
+ * - `n` - explicit capture
3278
+ * - `s` - dot matches all (aka singleline)
3279
+ * - `x` - free-spacing and line comments (aka extended)
3280
+ * - `A` - astral (requires the Unicode Base addon)
3281
+ * Flags cannot be provided when constructing one `RegExp` from another.
3282
+ * @returns {RegExp} Extended regular expression object.
3283
+ * @example
3284
+ *
3285
+ * // With named capture and flag x
3286
+ * XRegExp('(?<year> [0-9]{4} ) -? # year \n\
3287
+ * (?<month> [0-9]{2} ) -? # month \n\
3288
+ * (?<day> [0-9]{2} ) # day ', 'x');
3289
+ *
3290
+ * // Providing a regex object copies it. Native regexes are recompiled using native (not XRegExp)
3291
+ * // syntax. Copies maintain extended data, are augmented with `XRegExp.prototype` properties, and
3292
+ * // have fresh `lastIndex` properties (set to zero).
3293
+ * XRegExp(/regex/);
3294
+ */
3295
+ function XRegExp(pattern, flags) {
3296
+ if (XRegExp.isRegExp(pattern)) {
3297
+ if (flags !== undefined) {
3298
+ throw new TypeError('Cannot supply flags when copying a RegExp');
3299
+ }
3300
+ return copyRegex(pattern);
3301
+ }
3302
+
3303
+ // Copy the argument behavior of `RegExp`
3304
+ pattern = pattern === undefined ? '' : String(pattern);
3305
+ flags = flags === undefined ? '' : String(flags);
3306
+
3307
+ if (XRegExp.isInstalled('astral') && flags.indexOf('A') === -1) {
3308
+ // This causes an error to be thrown if the Unicode Base addon is not available
3309
+ flags += 'A';
3310
+ }
3311
+
3312
+ if (!patternCache[pattern]) {
3313
+ patternCache[pattern] = {};
3314
+ }
3315
+
3316
+ if (!patternCache[pattern][flags]) {
3317
+ var context = {
3318
+ hasNamedCapture: false,
3319
+ captureNames: []
3320
+ };
3321
+ var scope = defaultScope;
3322
+ var output = '';
3323
+ var pos = 0;
3324
+ var result;
3325
+
3326
+ // Check for flag-related errors, and strip/apply flags in a leading mode modifier
3327
+ var applied = prepareFlags(pattern, flags);
3328
+ var appliedPattern = applied.pattern;
3329
+ var appliedFlags = applied.flags;
3330
+
3331
+ // Use XRegExp's tokens to translate the pattern to a native regex pattern.
3332
+ // `appliedPattern.length` may change on each iteration if tokens use `reparse`
3333
+ while (pos < appliedPattern.length) {
3334
+ do {
3335
+ // Check for custom tokens at the current position
3336
+ result = runTokens(appliedPattern, appliedFlags, pos, scope, context);
3337
+ // If the matched token used the `reparse` option, splice its output into the
3338
+ // pattern before running tokens again at the same position
3339
+ if (result && result.reparse) {
3340
+ appliedPattern = appliedPattern.slice(0, pos) +
3341
+ result.output +
3342
+ appliedPattern.slice(pos + result.matchLength);
3343
+ }
3344
+ } while (result && result.reparse);
3345
+
3346
+ if (result) {
3347
+ output += result.output;
3348
+ pos += (result.matchLength || 1);
3349
+ } else {
3350
+ // Get the native token at the current position
3351
+ var token = XRegExp.exec(appliedPattern, nativeTokens[scope], pos, 'sticky')[0];
3352
+ output += token;
3353
+ pos += token.length;
3354
+ if (token === '[' && scope === defaultScope) {
3355
+ scope = classScope;
3356
+ } else if (token === ']' && scope === classScope) {
3357
+ scope = defaultScope;
3358
+ }
3359
+ }
3360
+ }
3361
+
3362
+ patternCache[pattern][flags] = {
3363
+ // Use basic cleanup to collapse repeated empty groups like `(?:)(?:)` to `(?:)`. Empty
3364
+ // groups are sometimes inserted during regex transpilation in order to keep tokens
3365
+ // separated. However, more than one empty group in a row is never needed.
3366
+ pattern: nativ.replace.call(output, /(?:\(\?:\))+/g, '(?:)'),
3367
+ // Strip all but native flags
3368
+ flags: nativ.replace.call(appliedFlags, /[^gimuy]+/g, ''),
3369
+ // `context.captureNames` has an item for each capturing group, even if unnamed
3370
+ captures: context.hasNamedCapture ? context.captureNames : null
3371
+ };
3372
+ }
3373
+
3374
+ var generated = patternCache[pattern][flags];
3375
+ return augment(
3376
+ new RegExp(generated.pattern, generated.flags),
3377
+ generated.captures,
3378
+ pattern,
3379
+ flags
3380
+ );
3381
+ }
3382
+
3383
+ // Add `RegExp.prototype` to the prototype chain
3384
+ XRegExp.prototype = new RegExp();
3385
+
3386
+ // ==--------------------------==
3387
+ // Public properties
3388
+ // ==--------------------------==
3389
+
3390
+ /**
3391
+ * The XRegExp version number as a string containing three dot-separated parts. For example,
3392
+ * '2.0.0-beta-3'.
3393
+ *
3394
+ * @static
3395
+ * @memberOf XRegExp
3396
+ * @type String
3397
+ */
3398
+ XRegExp.version = '3.2.0';
3399
+
3400
+ // ==--------------------------==
3401
+ // Public methods
3402
+ // ==--------------------------==
3403
+
3404
+ // Intentionally undocumented; used in tests and addons
3405
+ XRegExp._clipDuplicates = clipDuplicates;
3406
+ XRegExp._hasNativeFlag = hasNativeFlag;
3407
+ XRegExp._dec = dec;
3408
+ XRegExp._hex = hex;
3409
+ XRegExp._pad4 = pad4;
3410
+
3411
+ /**
3412
+ * Extends XRegExp syntax and allows custom flags. This is used internally and can be used to
3413
+ * create XRegExp addons. If more than one token can match the same string, the last added wins.
3414
+ *
3415
+ * @memberOf XRegExp
3416
+ * @param {RegExp} regex Regex object that matches the new token.
3417
+ * @param {Function} handler Function that returns a new pattern string (using native regex syntax)
3418
+ * to replace the matched token within all future XRegExp regexes. Has access to persistent
3419
+ * properties of the regex being built, through `this`. Invoked with three arguments:
3420
+ * - The match array, with named backreference properties.
3421
+ * - The regex scope where the match was found: 'default' or 'class'.
3422
+ * - The flags used by the regex, including any flags in a leading mode modifier.
3423
+ * The handler function becomes part of the XRegExp construction process, so be careful not to
3424
+ * construct XRegExps within the function or you will trigger infinite recursion.
3425
+ * @param {Object} [options] Options object with optional properties:
3426
+ * - `scope` {String} Scope where the token applies: 'default', 'class', or 'all'.
3427
+ * - `flag` {String} Single-character flag that triggers the token. This also registers the
3428
+ * flag, which prevents XRegExp from throwing an 'unknown flag' error when the flag is used.
3429
+ * - `optionalFlags` {String} Any custom flags checked for within the token `handler` that are
3430
+ * not required to trigger the token. This registers the flags, to prevent XRegExp from
3431
+ * throwing an 'unknown flag' error when any of the flags are used.
3432
+ * - `reparse` {Boolean} Whether the `handler` function's output should not be treated as
3433
+ * final, and instead be reparseable by other tokens (including the current token). Allows
3434
+ * token chaining or deferring.
3435
+ * - `leadChar` {String} Single character that occurs at the beginning of any successful match
3436
+ * of the token (not always applicable). This doesn't change the behavior of the token unless
3437
+ * you provide an erroneous value. However, providing it can increase the token's performance
3438
+ * since the token can be skipped at any positions where this character doesn't appear.
3439
+ * @example
3440
+ *
3441
+ * // Basic usage: Add \a for the ALERT control code
3442
+ * XRegExp.addToken(
3443
+ * /\\a/,
3444
+ * function() {return '\\x07';},
3445
+ * {scope: 'all'}
3446
+ * );
3447
+ * XRegExp('\\a[\\a-\\n]+').test('\x07\n\x07'); // -> true
3448
+ *
3449
+ * // Add the U (ungreedy) flag from PCRE and RE2, which reverses greedy and lazy quantifiers.
3450
+ * // Since `scope` is not specified, it uses 'default' (i.e., transformations apply outside of
3451
+ * // character classes only)
3452
+ * XRegExp.addToken(
3453
+ * /([?*+]|{\d+(?:,\d*)?})(\??)/,
3454
+ * function(match) {return match[1] + (match[2] ? '' : '?');},
3455
+ * {flag: 'U'}
3456
+ * );
3457
+ * XRegExp('a+', 'U').exec('aaa')[0]; // -> 'a'
3458
+ * XRegExp('a+?', 'U').exec('aaa')[0]; // -> 'aaa'
3459
+ */
3460
+ XRegExp.addToken = function(regex, handler, options) {
3461
+ options = options || {};
3462
+ var optionalFlags = options.optionalFlags;
3463
+ var i;
3464
+
3465
+ if (options.flag) {
3466
+ registerFlag(options.flag);
3467
+ }
3468
+
3469
+ if (optionalFlags) {
3470
+ optionalFlags = nativ.split.call(optionalFlags, '');
3471
+ for (i = 0; i < optionalFlags.length; ++i) {
3472
+ registerFlag(optionalFlags[i]);
3473
+ }
3474
+ }
3475
+
3476
+ // Add to the private list of syntax tokens
3477
+ tokens.push({
3478
+ regex: copyRegex(regex, {
3479
+ addG: true,
3480
+ addY: hasNativeY,
3481
+ isInternalOnly: true
3482
+ }),
3483
+ handler: handler,
3484
+ scope: options.scope || defaultScope,
3485
+ flag: options.flag,
3486
+ reparse: options.reparse,
3487
+ leadChar: options.leadChar
3488
+ });
3489
+
3490
+ // Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and flags
3491
+ // might now produce different results
3492
+ XRegExp.cache.flush('patterns');
3493
+ };
3494
+
3495
+ /**
3496
+ * Caches and returns the result of calling `XRegExp(pattern, flags)`. On any subsequent call with
3497
+ * the same pattern and flag combination, the cached copy of the regex is returned.
3498
+ *
3499
+ * @memberOf XRegExp
3500
+ * @param {String} pattern Regex pattern string.
3501
+ * @param {String} [flags] Any combination of XRegExp flags.
3502
+ * @returns {RegExp} Cached XRegExp object.
3503
+ * @example
3504
+ *
3505
+ * while (match = XRegExp.cache('.', 'gs').exec(str)) {
3506
+ * // The regex is compiled once only
3507
+ * }
3508
+ */
3509
+ XRegExp.cache = function(pattern, flags) {
3510
+ if (!regexCache[pattern]) {
3511
+ regexCache[pattern] = {};
3512
+ }
3513
+ return regexCache[pattern][flags] || (
3514
+ regexCache[pattern][flags] = XRegExp(pattern, flags)
3515
+ );
3516
+ };
3517
+
3518
+ // Intentionally undocumented; used in tests
3519
+ XRegExp.cache.flush = function(cacheName) {
3520
+ if (cacheName === 'patterns') {
3521
+ // Flush the pattern cache used by the `XRegExp` constructor
3522
+ patternCache = {};
3523
+ } else {
3524
+ // Flush the regex cache populated by `XRegExp.cache`
3525
+ regexCache = {};
3526
+ }
3527
+ };
3528
+
3529
+ /**
3530
+ * Escapes any regular expression metacharacters, for use when matching literal strings. The result
3531
+ * can safely be used at any point within a regex that uses any flags.
3532
+ *
3533
+ * @memberOf XRegExp
3534
+ * @param {String} str String to escape.
3535
+ * @returns {String} String with regex metacharacters escaped.
3536
+ * @example
3537
+ *
3538
+ * XRegExp.escape('Escaped? <.>');
3539
+ * // -> 'Escaped\?\ <\.>'
3540
+ */
3541
+ XRegExp.escape = function(str) {
3542
+ return nativ.replace.call(toObject(str), /[-\[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
3543
+ };
3544
+
3545
+ /**
3546
+ * Executes a regex search in a specified string. Returns a match array or `null`. If the provided
3547
+ * regex uses named capture, named backreference properties are included on the match array.
3548
+ * Optional `pos` and `sticky` arguments specify the search start position, and whether the match
3549
+ * must start at the specified position only. The `lastIndex` property of the provided regex is not
3550
+ * used, but is updated for compatibility. Also fixes browser bugs compared to the native
3551
+ * `RegExp.prototype.exec` and can be used reliably cross-browser.
3552
+ *
3553
+ * @memberOf XRegExp
3554
+ * @param {String} str String to search.
3555
+ * @param {RegExp} regex Regex to search with.
3556
+ * @param {Number} [pos=0] Zero-based index at which to start the search.
3557
+ * @param {Boolean|String} [sticky=false] Whether the match must start at the specified position
3558
+ * only. The string `'sticky'` is accepted as an alternative to `true`.
3559
+ * @returns {Array} Match array with named backreference properties, or `null`.
3560
+ * @example
3561
+ *
3562
+ * // Basic use, with named backreference
3563
+ * var match = XRegExp.exec('U+2620', XRegExp('U\\+(?<hex>[0-9A-F]{4})'));
3564
+ * match.hex; // -> '2620'
3565
+ *
3566
+ * // With pos and sticky, in a loop
3567
+ * var pos = 2, result = [], match;
3568
+ * while (match = XRegExp.exec('<1><2><3><4>5<6>', /<(\d)>/, pos, 'sticky')) {
3569
+ * result.push(match[1]);
3570
+ * pos = match.index + match[0].length;
3571
+ * }
3572
+ * // result -> ['2', '3', '4']
3573
+ */
3574
+ XRegExp.exec = function(str, regex, pos, sticky) {
3575
+ var cacheKey = 'g';
3576
+ var addY = false;
3577
+ var fakeY = false;
3578
+ var match;
3579
+ var r2;
3580
+
3581
+ addY = hasNativeY && !!(sticky || (regex.sticky && sticky !== false));
3582
+ if (addY) {
3583
+ cacheKey += 'y';
3584
+ } else if (sticky) {
3585
+ // Simulate sticky matching by appending an empty capture to the original regex. The
3586
+ // resulting regex will succeed no matter what at the current index (set with `lastIndex`),
3587
+ // and will not search the rest of the subject string. We'll know that the original regex
3588
+ // has failed if that last capture is `''` rather than `undefined` (i.e., if that last
3589
+ // capture participated in the match).
3590
+ fakeY = true;
3591
+ cacheKey += 'FakeY';
3592
+ }
3593
+
3594
+ regex[REGEX_DATA] = regex[REGEX_DATA] || {};
3595
+
3596
+ // Shares cached copies with `XRegExp.match`/`replace`
3597
+ r2 = regex[REGEX_DATA][cacheKey] || (
3598
+ regex[REGEX_DATA][cacheKey] = copyRegex(regex, {
3599
+ addG: true,
3600
+ addY: addY,
3601
+ source: fakeY ? regex.source + '|()' : undefined,
3602
+ removeY: sticky === false,
3603
+ isInternalOnly: true
3604
+ })
3605
+ );
3606
+
3607
+ pos = pos || 0;
3608
+ r2.lastIndex = pos;
3609
+
3610
+ // Fixed `exec` required for `lastIndex` fix, named backreferences, etc.
3611
+ match = fixed.exec.call(r2, str);
3612
+
3613
+ // Get rid of the capture added by the pseudo-sticky matcher if needed. An empty string means
3614
+ // the original regexp failed (see above).
3615
+ if (fakeY && match && match.pop() === '') {
3616
+ match = null;
3617
+ }
3618
+
3619
+ if (regex.global) {
3620
+ regex.lastIndex = match ? r2.lastIndex : 0;
3621
+ }
3622
+
3623
+ return match;
3624
+ };
3625
+
3626
+ /**
3627
+ * Executes a provided function once per regex match. Searches always start at the beginning of the
3628
+ * string and continue until the end, regardless of the state of the regex's `global` property and
3629
+ * initial `lastIndex`.
3630
+ *
3631
+ * @memberOf XRegExp
3632
+ * @param {String} str String to search.
3633
+ * @param {RegExp} regex Regex to search with.
3634
+ * @param {Function} callback Function to execute for each match. Invoked with four arguments:
3635
+ * - The match array, with named backreference properties.
3636
+ * - The zero-based match index.
3637
+ * - The string being traversed.
3638
+ * - The regex object being used to traverse the string.
3639
+ * @example
3640
+ *
3641
+ * // Extracts every other digit from a string
3642
+ * var evens = [];
3643
+ * XRegExp.forEach('1a2345', /\d/, function(match, i) {
3644
+ * if (i % 2) evens.push(+match[0]);
3645
+ * });
3646
+ * // evens -> [2, 4]
3647
+ */
3648
+ XRegExp.forEach = function(str, regex, callback) {
3649
+ var pos = 0;
3650
+ var i = -1;
3651
+ var match;
3652
+
3653
+ while ((match = XRegExp.exec(str, regex, pos))) {
3654
+ // Because `regex` is provided to `callback`, the function could use the deprecated/
3655
+ // nonstandard `RegExp.prototype.compile` to mutate the regex. However, since `XRegExp.exec`
3656
+ // doesn't use `lastIndex` to set the search position, this can't lead to an infinite loop,
3657
+ // at least. Actually, because of the way `XRegExp.exec` caches globalized versions of
3658
+ // regexes, mutating the regex will not have any effect on the iteration or matched strings,
3659
+ // which is a nice side effect that brings extra safety.
3660
+ callback(match, ++i, str, regex);
3661
+
3662
+ pos = match.index + (match[0].length || 1);
3663
+ }
3664
+ };
3665
+
3666
+ /**
3667
+ * Copies a regex object and adds flag `g`. The copy maintains extended data, is augmented with
3668
+ * `XRegExp.prototype` properties, and has a fresh `lastIndex` property (set to zero). Native
3669
+ * regexes are not recompiled using XRegExp syntax.
3670
+ *
3671
+ * @memberOf XRegExp
3672
+ * @param {RegExp} regex Regex to globalize.
3673
+ * @returns {RegExp} Copy of the provided regex with flag `g` added.
3674
+ * @example
3675
+ *
3676
+ * var globalCopy = XRegExp.globalize(/regex/);
3677
+ * globalCopy.global; // -> true
3678
+ */
3679
+ XRegExp.globalize = function(regex) {
3680
+ return copyRegex(regex, {addG: true});
3681
+ };
3682
+
3683
+ /**
3684
+ * Installs optional features according to the specified options. Can be undone using
3685
+ * `XRegExp.uninstall`.
3686
+ *
3687
+ * @memberOf XRegExp
3688
+ * @param {Object|String} options Options object or string.
3689
+ * @example
3690
+ *
3691
+ * // With an options object
3692
+ * XRegExp.install({
3693
+ * // Enables support for astral code points in Unicode addons (implicitly sets flag A)
3694
+ * astral: true,
3695
+ *
3696
+ * // DEPRECATED: Overrides native regex methods with fixed/extended versions
3697
+ * natives: true
3698
+ * });
3699
+ *
3700
+ * // With an options string
3701
+ * XRegExp.install('astral natives');
3702
+ */
3703
+ XRegExp.install = function(options) {
3704
+ options = prepareOptions(options);
3705
+
3706
+ if (!features.astral && options.astral) {
3707
+ setAstral(true);
3708
+ }
3709
+
3710
+ if (!features.natives && options.natives) {
3711
+ setNatives(true);
3712
+ }
3713
+ };
3714
+
3715
+ /**
3716
+ * Checks whether an individual optional feature is installed.
3717
+ *
3718
+ * @memberOf XRegExp
3719
+ * @param {String} feature Name of the feature to check. One of:
3720
+ * - `astral`
3721
+ * - `natives`
3722
+ * @returns {Boolean} Whether the feature is installed.
3723
+ * @example
3724
+ *
3725
+ * XRegExp.isInstalled('astral');
3726
+ */
3727
+ XRegExp.isInstalled = function(feature) {
3728
+ return !!(features[feature]);
3729
+ };
3730
+
3731
+ /**
3732
+ * Returns `true` if an object is a regex; `false` if it isn't. This works correctly for regexes
3733
+ * created in another frame, when `instanceof` and `constructor` checks would fail.
3734
+ *
3735
+ * @memberOf XRegExp
3736
+ * @param {*} value Object to check.
3737
+ * @returns {Boolean} Whether the object is a `RegExp` object.
3738
+ * @example
3739
+ *
3740
+ * XRegExp.isRegExp('string'); // -> false
3741
+ * XRegExp.isRegExp(/regex/i); // -> true
3742
+ * XRegExp.isRegExp(RegExp('^', 'm')); // -> true
3743
+ * XRegExp.isRegExp(XRegExp('(?s).')); // -> true
3744
+ */
3745
+ XRegExp.isRegExp = function(value) {
3746
+ return toString.call(value) === '[object RegExp]';
3747
+ //return isType(value, 'RegExp');
3748
+ };
3749
+
3750
+ /**
3751
+ * Returns the first matched string, or in global mode, an array containing all matched strings.
3752
+ * This is essentially a more convenient re-implementation of `String.prototype.match` that gives
3753
+ * the result types you actually want (string instead of `exec`-style array in match-first mode,
3754
+ * and an empty array instead of `null` when no matches are found in match-all mode). It also lets
3755
+ * you override flag g and ignore `lastIndex`, and fixes browser bugs.
3756
+ *
3757
+ * @memberOf XRegExp
3758
+ * @param {String} str String to search.
3759
+ * @param {RegExp} regex Regex to search with.
3760
+ * @param {String} [scope='one'] Use 'one' to return the first match as a string. Use 'all' to
3761
+ * return an array of all matched strings. If not explicitly specified and `regex` uses flag g,
3762
+ * `scope` is 'all'.
3763
+ * @returns {String|Array} In match-first mode: First match as a string, or `null`. In match-all
3764
+ * mode: Array of all matched strings, or an empty array.
3765
+ * @example
3766
+ *
3767
+ * // Match first
3768
+ * XRegExp.match('abc', /\w/); // -> 'a'
3769
+ * XRegExp.match('abc', /\w/g, 'one'); // -> 'a'
3770
+ * XRegExp.match('abc', /x/g, 'one'); // -> null
3771
+ *
3772
+ * // Match all
3773
+ * XRegExp.match('abc', /\w/g); // -> ['a', 'b', 'c']
3774
+ * XRegExp.match('abc', /\w/, 'all'); // -> ['a', 'b', 'c']
3775
+ * XRegExp.match('abc', /x/, 'all'); // -> []
3776
+ */
3777
+ XRegExp.match = function(str, regex, scope) {
3778
+ var global = (regex.global && scope !== 'one') || scope === 'all';
3779
+ var cacheKey = ((global ? 'g' : '') + (regex.sticky ? 'y' : '')) || 'noGY';
3780
+ var result;
3781
+ var r2;
3782
+
3783
+ regex[REGEX_DATA] = regex[REGEX_DATA] || {};
3784
+
3785
+ // Shares cached copies with `XRegExp.exec`/`replace`
3786
+ r2 = regex[REGEX_DATA][cacheKey] || (
3787
+ regex[REGEX_DATA][cacheKey] = copyRegex(regex, {
3788
+ addG: !!global,
3789
+ removeG: scope === 'one',
3790
+ isInternalOnly: true
3791
+ })
3792
+ );
3793
+
3794
+ result = nativ.match.call(toObject(str), r2);
3795
+
3796
+ if (regex.global) {
3797
+ regex.lastIndex = (
3798
+ (scope === 'one' && result) ?
3799
+ // Can't use `r2.lastIndex` since `r2` is nonglobal in this case
3800
+ (result.index + result[0].length) : 0
3801
+ );
3802
+ }
3803
+
3804
+ return global ? (result || []) : (result && result[0]);
3805
+ };
3806
+
3807
+ /**
3808
+ * Retrieves the matches from searching a string using a chain of regexes that successively search
3809
+ * within previous matches. The provided `chain` array can contain regexes and or objects with
3810
+ * `regex` and `backref` properties. When a backreference is specified, the named or numbered
3811
+ * backreference is passed forward to the next regex or returned.
3812
+ *
3813
+ * @memberOf XRegExp
3814
+ * @param {String} str String to search.
3815
+ * @param {Array} chain Regexes that each search for matches within preceding results.
3816
+ * @returns {Array} Matches by the last regex in the chain, or an empty array.
3817
+ * @example
3818
+ *
3819
+ * // Basic usage; matches numbers within <b> tags
3820
+ * XRegExp.matchChain('1 <b>2</b> 3 <b>4 a 56</b>', [
3821
+ * XRegExp('(?is)<b>.*?</b>'),
3822
+ * /\d+/
3823
+ * ]);
3824
+ * // -> ['2', '4', '56']
3825
+ *
3826
+ * // Passing forward and returning specific backreferences
3827
+ * html = '<a href="http://xregexp.com/api/">XRegExp</a>\
3828
+ * <a href="http://www.google.com/">Google</a>';
3829
+ * XRegExp.matchChain(html, [
3830
+ * {regex: /<a href="([^"]+)">/i, backref: 1},
3831
+ * {regex: XRegExp('(?i)^https?://(?<domain>[^/?#]+)'), backref: 'domain'}
3832
+ * ]);
3833
+ * // -> ['xregexp.com', 'www.google.com']
3834
+ */
3835
+ XRegExp.matchChain = function(str, chain) {
3836
+ return (function recurseChain(values, level) {
3837
+ var item = chain[level].regex ? chain[level] : {regex: chain[level]};
3838
+ var matches = [];
3839
+
3840
+ function addMatch(match) {
3841
+ if (item.backref) {
3842
+ // Safari 4.0.5 (but not 5.0.5+) inappropriately uses sparse arrays to hold the
3843
+ // `undefined`s for backreferences to nonparticipating capturing groups. In such
3844
+ // cases, a `hasOwnProperty` or `in` check on its own would inappropriately throw
3845
+ // the exception, so also check if the backreference is a number that is within the
3846
+ // bounds of the array.
3847
+ if (!(match.hasOwnProperty(item.backref) || +item.backref < match.length)) {
3848
+ throw new ReferenceError('Backreference to undefined group: ' + item.backref);
3849
+ }
3850
+
3851
+ matches.push(match[item.backref] || '');
3852
+ } else {
3853
+ matches.push(match[0]);
3854
+ }
3855
+ }
3856
+
3857
+ for (var i = 0; i < values.length; ++i) {
3858
+ XRegExp.forEach(values[i], item.regex, addMatch);
3859
+ }
3860
+
3861
+ return ((level === chain.length - 1) || !matches.length) ?
3862
+ matches :
3863
+ recurseChain(matches, level + 1);
3864
+ }([str], 0));
3865
+ };
3866
+
3867
+ /**
3868
+ * Returns a new string with one or all matches of a pattern replaced. The pattern can be a string
3869
+ * or regex, and the replacement can be a string or a function to be called for each match. To
3870
+ * perform a global search and replace, use the optional `scope` argument or include flag g if using
3871
+ * a regex. Replacement strings can use `${n}` for named and numbered backreferences. Replacement
3872
+ * functions can use named backreferences via `arguments[0].name`. Also fixes browser bugs compared
3873
+ * to the native `String.prototype.replace` and can be used reliably cross-browser.
3874
+ *
3875
+ * @memberOf XRegExp
3876
+ * @param {String} str String to search.
3877
+ * @param {RegExp|String} search Search pattern to be replaced.
3878
+ * @param {String|Function} replacement Replacement string or a function invoked to create it.
3879
+ * Replacement strings can include special replacement syntax:
3880
+ * - $$ - Inserts a literal $ character.
3881
+ * - $&, $0 - Inserts the matched substring.
3882
+ * - $` - Inserts the string that precedes the matched substring (left context).
3883
+ * - $' - Inserts the string that follows the matched substring (right context).
3884
+ * - $n, $nn - Where n/nn are digits referencing an existent capturing group, inserts
3885
+ * backreference n/nn.
3886
+ * - ${n} - Where n is a name or any number of digits that reference an existent capturing
3887
+ * group, inserts backreference n.
3888
+ * Replacement functions are invoked with three or more arguments:
3889
+ * - The matched substring (corresponds to $& above). Named backreferences are accessible as
3890
+ * properties of this first argument.
3891
+ * - 0..n arguments, one for each backreference (corresponding to $1, $2, etc. above).
3892
+ * - The zero-based index of the match within the total search string.
3893
+ * - The total string being searched.
3894
+ * @param {String} [scope='one'] Use 'one' to replace the first match only, or 'all'. If not
3895
+ * explicitly specified and using a regex with flag g, `scope` is 'all'.
3896
+ * @returns {String} New string with one or all matches replaced.
3897
+ * @example
3898
+ *
3899
+ * // Regex search, using named backreferences in replacement string
3900
+ * var name = XRegExp('(?<first>\\w+) (?<last>\\w+)');
3901
+ * XRegExp.replace('John Smith', name, '${last}, ${first}');
3902
+ * // -> 'Smith, John'
3903
+ *
3904
+ * // Regex search, using named backreferences in replacement function
3905
+ * XRegExp.replace('John Smith', name, function(match) {
3906
+ * return match.last + ', ' + match.first;
3907
+ * });
3908
+ * // -> 'Smith, John'
3909
+ *
3910
+ * // String search, with replace-all
3911
+ * XRegExp.replace('RegExp builds RegExps', 'RegExp', 'XRegExp', 'all');
3912
+ * // -> 'XRegExp builds XRegExps'
3913
+ */
3914
+ XRegExp.replace = function(str, search, replacement, scope) {
3915
+ var isRegex = XRegExp.isRegExp(search);
3916
+ var global = (search.global && scope !== 'one') || scope === 'all';
3917
+ var cacheKey = ((global ? 'g' : '') + (search.sticky ? 'y' : '')) || 'noGY';
3918
+ var s2 = search;
3919
+ var result;
3920
+
3921
+ if (isRegex) {
3922
+ search[REGEX_DATA] = search[REGEX_DATA] || {};
3923
+
3924
+ // Shares cached copies with `XRegExp.exec`/`match`. Since a copy is used, `search`'s
3925
+ // `lastIndex` isn't updated *during* replacement iterations
3926
+ s2 = search[REGEX_DATA][cacheKey] || (
3927
+ search[REGEX_DATA][cacheKey] = copyRegex(search, {
3928
+ addG: !!global,
3929
+ removeG: scope === 'one',
3930
+ isInternalOnly: true
3931
+ })
3932
+ );
3933
+ } else if (global) {
3934
+ s2 = new RegExp(XRegExp.escape(String(search)), 'g');
3935
+ }
3936
+
3937
+ // Fixed `replace` required for named backreferences, etc.
3938
+ result = fixed.replace.call(toObject(str), s2, replacement);
3939
+
3940
+ if (isRegex && search.global) {
3941
+ // Fixes IE, Safari bug (last tested IE 9, Safari 5.1)
3942
+ search.lastIndex = 0;
3943
+ }
3944
+
3945
+ return result;
3946
+ };
3947
+
3948
+ /**
3949
+ * Performs batch processing of string replacements. Used like `XRegExp.replace`, but accepts an
3950
+ * array of replacement details. Later replacements operate on the output of earlier replacements.
3951
+ * Replacement details are accepted as an array with a regex or string to search for, the
3952
+ * replacement string or function, and an optional scope of 'one' or 'all'. Uses the XRegExp
3953
+ * replacement text syntax, which supports named backreference properties via `${name}`.
3954
+ *
3955
+ * @memberOf XRegExp
3956
+ * @param {String} str String to search.
3957
+ * @param {Array} replacements Array of replacement detail arrays.
3958
+ * @returns {String} New string with all replacements.
3959
+ * @example
3960
+ *
3961
+ * str = XRegExp.replaceEach(str, [
3962
+ * [XRegExp('(?<name>a)'), 'z${name}'],
3963
+ * [/b/gi, 'y'],
3964
+ * [/c/g, 'x', 'one'], // scope 'one' overrides /g
3965
+ * [/d/, 'w', 'all'], // scope 'all' overrides lack of /g
3966
+ * ['e', 'v', 'all'], // scope 'all' allows replace-all for strings
3967
+ * [/f/g, function($0) {
3968
+ * return $0.toUpperCase();
3969
+ * }]
3970
+ * ]);
3971
+ */
3972
+ XRegExp.replaceEach = function(str, replacements) {
3973
+ var i;
3974
+ var r;
3975
+
3976
+ for (i = 0; i < replacements.length; ++i) {
3977
+ r = replacements[i];
3978
+ str = XRegExp.replace(str, r[0], r[1], r[2]);
3979
+ }
3980
+
3981
+ return str;
3982
+ };
3983
+
3984
+ /**
3985
+ * Splits a string into an array of strings using a regex or string separator. Matches of the
3986
+ * separator are not included in the result array. However, if `separator` is a regex that contains
3987
+ * capturing groups, backreferences are spliced into the result each time `separator` is matched.
3988
+ * Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably
3989
+ * cross-browser.
3990
+ *
3991
+ * @memberOf XRegExp
3992
+ * @param {String} str String to split.
3993
+ * @param {RegExp|String} separator Regex or string to use for separating the string.
3994
+ * @param {Number} [limit] Maximum number of items to include in the result array.
3995
+ * @returns {Array} Array of substrings.
3996
+ * @example
3997
+ *
3998
+ * // Basic use
3999
+ * XRegExp.split('a b c', ' ');
4000
+ * // -> ['a', 'b', 'c']
4001
+ *
4002
+ * // With limit
4003
+ * XRegExp.split('a b c', ' ', 2);
4004
+ * // -> ['a', 'b']
4005
+ *
4006
+ * // Backreferences in result array
4007
+ * XRegExp.split('..word1..', /([a-z]+)(\d+)/i);
4008
+ * // -> ['..', 'word', '1', '..']
4009
+ */
4010
+ XRegExp.split = function(str, separator, limit) {
4011
+ return fixed.split.call(toObject(str), separator, limit);
4012
+ };
4013
+
4014
+ /**
4015
+ * Executes a regex search in a specified string. Returns `true` or `false`. Optional `pos` and
4016
+ * `sticky` arguments specify the search start position, and whether the match must start at the
4017
+ * specified position only. The `lastIndex` property of the provided regex is not used, but is
4018
+ * updated for compatibility. Also fixes browser bugs compared to the native
4019
+ * `RegExp.prototype.test` and can be used reliably cross-browser.
4020
+ *
4021
+ * @memberOf XRegExp
4022
+ * @param {String} str String to search.
4023
+ * @param {RegExp} regex Regex to search with.
4024
+ * @param {Number} [pos=0] Zero-based index at which to start the search.
4025
+ * @param {Boolean|String} [sticky=false] Whether the match must start at the specified position
4026
+ * only. The string `'sticky'` is accepted as an alternative to `true`.
4027
+ * @returns {Boolean} Whether the regex matched the provided value.
4028
+ * @example
4029
+ *
4030
+ * // Basic use
4031
+ * XRegExp.test('abc', /c/); // -> true
4032
+ *
4033
+ * // With pos and sticky
4034
+ * XRegExp.test('abc', /c/, 0, 'sticky'); // -> false
4035
+ * XRegExp.test('abc', /c/, 2, 'sticky'); // -> true
4036
+ */
4037
+ XRegExp.test = function(str, regex, pos, sticky) {
4038
+ // Do this the easy way :-)
4039
+ return !!XRegExp.exec(str, regex, pos, sticky);
4040
+ };
4041
+
4042
+ /**
4043
+ * Uninstalls optional features according to the specified options. All optional features start out
4044
+ * uninstalled, so this is used to undo the actions of `XRegExp.install`.
4045
+ *
4046
+ * @memberOf XRegExp
4047
+ * @param {Object|String} options Options object or string.
4048
+ * @example
4049
+ *
4050
+ * // With an options object
4051
+ * XRegExp.uninstall({
4052
+ * // Disables support for astral code points in Unicode addons
4053
+ * astral: true,
4054
+ *
4055
+ * // DEPRECATED: Restores native regex methods
4056
+ * natives: true
4057
+ * });
4058
+ *
4059
+ * // With an options string
4060
+ * XRegExp.uninstall('astral natives');
4061
+ */
4062
+ XRegExp.uninstall = function(options) {
4063
+ options = prepareOptions(options);
4064
+
4065
+ if (features.astral && options.astral) {
4066
+ setAstral(false);
4067
+ }
4068
+
4069
+ if (features.natives && options.natives) {
4070
+ setNatives(false);
4071
+ }
4072
+ };
4073
+
4074
+ /**
4075
+ * Returns an XRegExp object that is the union of the given patterns. Patterns can be provided as
4076
+ * regex objects or strings. Metacharacters are escaped in patterns provided as strings.
4077
+ * Backreferences in provided regex objects are automatically renumbered to work correctly within
4078
+ * the larger combined pattern. Native flags used by provided regexes are ignored in favor of the
4079
+ * `flags` argument.
4080
+ *
4081
+ * @memberOf XRegExp
4082
+ * @param {Array} patterns Regexes and strings to combine.
4083
+ * @param {String} [flags] Any combination of XRegExp flags.
4084
+ * @param {Object} [options] Options object with optional properties:
4085
+ * - `conjunction` {String} Type of conjunction to use: 'or' (default) or 'none'.
4086
+ * @returns {RegExp} Union of the provided regexes and strings.
4087
+ * @example
4088
+ *
4089
+ * XRegExp.union(['a+b*c', /(dogs)\1/, /(cats)\1/], 'i');
4090
+ * // -> /a\+b\*c|(dogs)\1|(cats)\2/i
4091
+ *
4092
+ * XRegExp.union([/man/, /bear/, /pig/], 'i', {conjunction: 'none'});
4093
+ * // -> /manbearpig/i
4094
+ */
4095
+ XRegExp.union = function(patterns, flags, options) {
4096
+ options = options || {};
4097
+ var conjunction = options.conjunction || 'or';
4098
+ var numCaptures = 0;
4099
+ var numPriorCaptures;
4100
+ var captureNames;
4101
+
4102
+ function rewrite(match, paren, backref) {
4103
+ var name = captureNames[numCaptures - numPriorCaptures];
4104
+
4105
+ // Capturing group
4106
+ if (paren) {
4107
+ ++numCaptures;
4108
+ // If the current capture has a name, preserve the name
4109
+ if (name) {
4110
+ return '(?<' + name + '>';
4111
+ }
4112
+ // Backreference
4113
+ } else if (backref) {
4114
+ // Rewrite the backreference
4115
+ return '\\' + (+backref + numPriorCaptures);
4116
+ }
4117
+
4118
+ return match;
4119
+ }
4120
+
4121
+ if (!(isType(patterns, 'Array') && patterns.length)) {
4122
+ throw new TypeError('Must provide a nonempty array of patterns to merge');
4123
+ }
4124
+
4125
+ var parts = /(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*\]/g;
4126
+ var output = [];
4127
+ var pattern;
4128
+ for (var i = 0; i < patterns.length; ++i) {
4129
+ pattern = patterns[i];
4130
+
4131
+ if (XRegExp.isRegExp(pattern)) {
4132
+ numPriorCaptures = numCaptures;
4133
+ captureNames = (pattern[REGEX_DATA] && pattern[REGEX_DATA].captureNames) || [];
4134
+
4135
+ // Rewrite backreferences. Passing to XRegExp dies on octals and ensures patterns are
4136
+ // independently valid; helps keep this simple. Named captures are put back
4137
+ output.push(nativ.replace.call(XRegExp(pattern.source).source, parts, rewrite));
4138
+ } else {
4139
+ output.push(XRegExp.escape(pattern));
4140
+ }
4141
+ }
4142
+
4143
+ var separator = conjunction === 'none' ? '' : '|';
4144
+ return XRegExp(output.join(separator), flags);
4145
+ };
4146
+
4147
+ // ==--------------------------==
4148
+ // Fixed/extended native methods
4149
+ // ==--------------------------==
4150
+
4151
+ /**
4152
+ * Adds named capture support (with backreferences returned as `result.name`), and fixes browser
4153
+ * bugs in the native `RegExp.prototype.exec`. Calling `XRegExp.install('natives')` uses this to
4154
+ * override the native method. Use via `XRegExp.exec` without overriding natives.
4155
+ *
4156
+ * @memberOf RegExp
4157
+ * @param {String} str String to search.
4158
+ * @returns {Array} Match array with named backreference properties, or `null`.
4159
+ */
4160
+ fixed.exec = function(str) {
4161
+ var origLastIndex = this.lastIndex;
4162
+ var match = nativ.exec.apply(this, arguments);
4163
+ var name;
4164
+ var r2;
4165
+ var i;
4166
+
4167
+ if (match) {
4168
+ // Fix browsers whose `exec` methods don't return `undefined` for nonparticipating capturing
4169
+ // groups. This fixes IE 5.5-8, but not IE 9's quirks mode or emulation of older IEs. IE 9
4170
+ // in standards mode follows the spec.
4171
+ if (!correctExecNpcg && match.length > 1 && indexOf(match, '') > -1) {
4172
+ r2 = copyRegex(this, {
4173
+ removeG: true,
4174
+ isInternalOnly: true
4175
+ });
4176
+ // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed
4177
+ // matching due to characters outside the match
4178
+ nativ.replace.call(String(str).slice(match.index), r2, function() {
4179
+ var len = arguments.length;
4180
+ var i;
4181
+ // Skip index 0 and the last 2
4182
+ for (i = 1; i < len - 2; ++i) {
4183
+ if (arguments[i] === undefined) {
4184
+ match[i] = undefined;
4185
+ }
4186
+ }
4187
+ });
4188
+ }
4189
+
4190
+ // Attach named capture properties
4191
+ if (this[REGEX_DATA] && this[REGEX_DATA].captureNames) {
4192
+ // Skip index 0
4193
+ for (i = 1; i < match.length; ++i) {
4194
+ name = this[REGEX_DATA].captureNames[i - 1];
4195
+ if (name) {
4196
+ match[name] = match[i];
4197
+ }
4198
+ }
4199
+ }
4200
+
4201
+ // Fix browsers that increment `lastIndex` after zero-length matches
4202
+ if (this.global && !match[0].length && (this.lastIndex > match.index)) {
4203
+ this.lastIndex = match.index;
4204
+ }
4205
+ }
4206
+
4207
+ if (!this.global) {
4208
+ // Fixes IE, Opera bug (last tested IE 9, Opera 11.6)
4209
+ this.lastIndex = origLastIndex;
4210
+ }
4211
+
4212
+ return match;
4213
+ };
4214
+
4215
+ /**
4216
+ * Fixes browser bugs in the native `RegExp.prototype.test`. Calling `XRegExp.install('natives')`
4217
+ * uses this to override the native method.
4218
+ *
4219
+ * @memberOf RegExp
4220
+ * @param {String} str String to search.
4221
+ * @returns {Boolean} Whether the regex matched the provided value.
4222
+ */
4223
+ fixed.test = function(str) {
4224
+ // Do this the easy way :-)
4225
+ return !!fixed.exec.call(this, str);
4226
+ };
4227
+
4228
+ /**
4229
+ * Adds named capture support (with backreferences returned as `result.name`), and fixes browser
4230
+ * bugs in the native `String.prototype.match`. Calling `XRegExp.install('natives')` uses this to
4231
+ * override the native method.
4232
+ *
4233
+ * @memberOf String
4234
+ * @param {RegExp|*} regex Regex to search with. If not a regex object, it is passed to `RegExp`.
4235
+ * @returns {Array} If `regex` uses flag g, an array of match strings or `null`. Without flag g,
4236
+ * the result of calling `regex.exec(this)`.
4237
+ */
4238
+ fixed.match = function(regex) {
4239
+ var result;
4240
+
4241
+ if (!XRegExp.isRegExp(regex)) {
4242
+ // Use the native `RegExp` rather than `XRegExp`
4243
+ regex = new RegExp(regex);
4244
+ } else if (regex.global) {
4245
+ result = nativ.match.apply(this, arguments);
4246
+ // Fixes IE bug
4247
+ regex.lastIndex = 0;
4248
+
4249
+ return result;
4250
+ }
4251
+
4252
+ return fixed.exec.call(regex, toObject(this));
4253
+ };
4254
+
4255
+ /**
4256
+ * Adds support for `${n}` tokens for named and numbered backreferences in replacement text, and
4257
+ * provides named backreferences to replacement functions as `arguments[0].name`. Also fixes browser
4258
+ * bugs in replacement text syntax when performing a replacement using a nonregex search value, and
4259
+ * the value of a replacement regex's `lastIndex` property during replacement iterations and upon
4260
+ * completion. Calling `XRegExp.install('natives')` uses this to override the native method. Note
4261
+ * that this doesn't support SpiderMonkey's proprietary third (`flags`) argument. Use via
4262
+ * `XRegExp.replace` without overriding natives.
4263
+ *
4264
+ * @memberOf String
4265
+ * @param {RegExp|String} search Search pattern to be replaced.
4266
+ * @param {String|Function} replacement Replacement string or a function invoked to create it.
4267
+ * @returns {String} New string with one or all matches replaced.
4268
+ */
4269
+ fixed.replace = function(search, replacement) {
4270
+ var isRegex = XRegExp.isRegExp(search);
4271
+ var origLastIndex;
4272
+ var captureNames;
4273
+ var result;
4274
+
4275
+ if (isRegex) {
4276
+ if (search[REGEX_DATA]) {
4277
+ captureNames = search[REGEX_DATA].captureNames;
4278
+ }
4279
+ // Only needed if `search` is nonglobal
4280
+ origLastIndex = search.lastIndex;
4281
+ } else {
4282
+ search += ''; // Type-convert
4283
+ }
4284
+
4285
+ // Don't use `typeof`; some older browsers return 'function' for regex objects
4286
+ if (isType(replacement, 'Function')) {
4287
+ // Stringifying `this` fixes a bug in IE < 9 where the last argument in replacement
4288
+ // functions isn't type-converted to a string
4289
+ result = nativ.replace.call(String(this), search, function() {
4290
+ var args = arguments;
4291
+ var i;
4292
+ if (captureNames) {
4293
+ // Change the `arguments[0]` string primitive to a `String` object that can store
4294
+ // properties. This really does need to use `String` as a constructor
4295
+ args[0] = new String(args[0]);
4296
+ // Store named backreferences on the first argument
4297
+ for (i = 0; i < captureNames.length; ++i) {
4298
+ if (captureNames[i]) {
4299
+ args[0][captureNames[i]] = args[i + 1];
4300
+ }
4301
+ }
4302
+ }
4303
+ // Update `lastIndex` before calling `replacement`. Fixes IE, Chrome, Firefox, Safari
4304
+ // bug (last tested IE 9, Chrome 17, Firefox 11, Safari 5.1)
4305
+ if (isRegex && search.global) {
4306
+ search.lastIndex = args[args.length - 2] + args[0].length;
4307
+ }
4308
+ // ES6 specs the context for replacement functions as `undefined`
4309
+ return replacement.apply(undefined, args);
4310
+ });
4311
+ } else {
4312
+ // Ensure that the last value of `args` will be a string when given nonstring `this`,
4313
+ // while still throwing on null or undefined context
4314
+ result = nativ.replace.call(this == null ? this : String(this), search, function() {
4315
+ // Keep this function's `arguments` available through closure
4316
+ var args = arguments;
4317
+ return nativ.replace.call(String(replacement), replacementToken, function($0, $1, $2) {
4318
+ var n;
4319
+ // Named or numbered backreference with curly braces
4320
+ if ($1) {
4321
+ // XRegExp behavior for `${n}`:
4322
+ // 1. Backreference to numbered capture, if `n` is an integer. Use `0` for the
4323
+ // entire match. Any number of leading zeros may be used.
4324
+ // 2. Backreference to named capture `n`, if it exists and is not an integer
4325
+ // overridden by numbered capture. In practice, this does not overlap with
4326
+ // numbered capture since XRegExp does not allow named capture to use a bare
4327
+ // integer as the name.
4328
+ // 3. If the name or number does not refer to an existing capturing group, it's
4329
+ // an error.
4330
+ n = +$1; // Type-convert; drop leading zeros
4331
+ if (n <= args.length - 3) {
4332
+ return args[n] || '';
4333
+ }
4334
+ // Groups with the same name is an error, else would need `lastIndexOf`
4335
+ n = captureNames ? indexOf(captureNames, $1) : -1;
4336
+ if (n < 0) {
4337
+ throw new SyntaxError('Backreference to undefined group ' + $0);
4338
+ }
4339
+ return args[n + 1] || '';
4340
+ }
4341
+ // Else, special variable or numbered backreference without curly braces
4342
+ if ($2 === '$') { // $$
4343
+ return '$';
4344
+ }
4345
+ if ($2 === '&' || +$2 === 0) { // $&, $0 (not followed by 1-9), $00
4346
+ return args[0];
4347
+ }
4348
+ if ($2 === '`') { // $` (left context)
4349
+ return args[args.length - 1].slice(0, args[args.length - 2]);
4350
+ }
4351
+ if ($2 === "'") { // $' (right context)
4352
+ return args[args.length - 1].slice(args[args.length - 2] + args[0].length);
4353
+ }
4354
+ // Else, numbered backreference without curly braces
4355
+ $2 = +$2; // Type-convert; drop leading zero
4356
+ // XRegExp behavior for `$n` and `$nn`:
4357
+ // - Backrefs end after 1 or 2 digits. Use `${..}` for more digits.
4358
+ // - `$1` is an error if no capturing groups.
4359
+ // - `$10` is an error if less than 10 capturing groups. Use `${1}0` instead.
4360
+ // - `$01` is `$1` if at least one capturing group, else it's an error.
4361
+ // - `$0` (not followed by 1-9) and `$00` are the entire match.
4362
+ // Native behavior, for comparison:
4363
+ // - Backrefs end after 1 or 2 digits. Cannot reference capturing group 100+.
4364
+ // - `$1` is a literal `$1` if no capturing groups.
4365
+ // - `$10` is `$1` followed by a literal `0` if less than 10 capturing groups.
4366
+ // - `$01` is `$1` if at least one capturing group, else it's a literal `$01`.
4367
+ // - `$0` is a literal `$0`.
4368
+ if (!isNaN($2)) {
4369
+ if ($2 > args.length - 3) {
4370
+ throw new SyntaxError('Backreference to undefined group ' + $0);
4371
+ }
4372
+ return args[$2] || '';
4373
+ }
4374
+ // `$` followed by an unsupported char is an error, unlike native JS
4375
+ throw new SyntaxError('Invalid token ' + $0);
4376
+ });
4377
+ });
4378
+ }
4379
+
4380
+ if (isRegex) {
4381
+ if (search.global) {
4382
+ // Fixes IE, Safari bug (last tested IE 9, Safari 5.1)
4383
+ search.lastIndex = 0;
4384
+ } else {
4385
+ // Fixes IE, Opera bug (last tested IE 9, Opera 11.6)
4386
+ search.lastIndex = origLastIndex;
4387
+ }
4388
+ }
4389
+
4390
+ return result;
4391
+ };
4392
+
4393
+ /**
4394
+ * Fixes browser bugs in the native `String.prototype.split`. Calling `XRegExp.install('natives')`
4395
+ * uses this to override the native method. Use via `XRegExp.split` without overriding natives.
4396
+ *
4397
+ * @memberOf String
4398
+ * @param {RegExp|String} separator Regex or string to use for separating the string.
4399
+ * @param {Number} [limit] Maximum number of items to include in the result array.
4400
+ * @returns {Array} Array of substrings.
4401
+ */
4402
+ fixed.split = function(separator, limit) {
4403
+ if (!XRegExp.isRegExp(separator)) {
4404
+ // Browsers handle nonregex split correctly, so use the faster native method
4405
+ return nativ.split.apply(this, arguments);
4406
+ }
4407
+
4408
+ var str = String(this);
4409
+ var output = [];
4410
+ var origLastIndex = separator.lastIndex;
4411
+ var lastLastIndex = 0;
4412
+ var lastLength;
4413
+
4414
+ // Values for `limit`, per the spec:
4415
+ // If undefined: pow(2,32) - 1
4416
+ // If 0, Infinity, or NaN: 0
4417
+ // If positive number: limit = floor(limit); if (limit >= pow(2,32)) limit -= pow(2,32);
4418
+ // If negative number: pow(2,32) - floor(abs(limit))
4419
+ // If other: Type-convert, then use the above rules
4420
+ // This line fails in very strange ways for some values of `limit` in Opera 10.5-10.63, unless
4421
+ // Opera Dragonfly is open (go figure). It works in at least Opera 9.5-10.1 and 11+
4422
+ limit = (limit === undefined ? -1 : limit) >>> 0;
4423
+
4424
+ XRegExp.forEach(str, separator, function(match) {
4425
+ // This condition is not the same as `if (match[0].length)`
4426
+ if ((match.index + match[0].length) > lastLastIndex) {
4427
+ output.push(str.slice(lastLastIndex, match.index));
4428
+ if (match.length > 1 && match.index < str.length) {
4429
+ Array.prototype.push.apply(output, match.slice(1));
4430
+ }
4431
+ lastLength = match[0].length;
4432
+ lastLastIndex = match.index + lastLength;
4433
+ }
4434
+ });
4435
+
4436
+ if (lastLastIndex === str.length) {
4437
+ if (!nativ.test.call(separator, '') || lastLength) {
4438
+ output.push('');
4439
+ }
4440
+ } else {
4441
+ output.push(str.slice(lastLastIndex));
4442
+ }
4443
+
4444
+ separator.lastIndex = origLastIndex;
4445
+ return output.length > limit ? output.slice(0, limit) : output;
4446
+ };
4447
+
4448
+ // ==--------------------------==
4449
+ // Built-in syntax/flag tokens
4450
+ // ==--------------------------==
4451
+
4452
+ /*
4453
+ * Letter escapes that natively match literal characters: `\a`, `\A`, etc. These should be
4454
+ * SyntaxErrors but are allowed in web reality. XRegExp makes them errors for cross-browser
4455
+ * consistency and to reserve their syntax, but lets them be superseded by addons.
4456
+ */
4457
+ XRegExp.addToken(
4458
+ /\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4}|{[\dA-Fa-f]+})|x(?![\dA-Fa-f]{2}))/,
4459
+ function(match, scope) {
4460
+ // \B is allowed in default scope only
4461
+ if (match[1] === 'B' && scope === defaultScope) {
4462
+ return match[0];
4463
+ }
4464
+ throw new SyntaxError('Invalid escape ' + match[0]);
4465
+ },
4466
+ {
4467
+ scope: 'all',
4468
+ leadChar: '\\'
4469
+ }
4470
+ );
4471
+
4472
+ /*
4473
+ * Unicode code point escape with curly braces: `\u{N..}`. `N..` is any one or more digit
4474
+ * hexadecimal number from 0-10FFFF, and can include leading zeros. Requires the native ES6 `u` flag
4475
+ * to support code points greater than U+FFFF. Avoids converting code points above U+FFFF to
4476
+ * surrogate pairs (which could be done without flag `u`), since that could lead to broken behavior
4477
+ * if you follow a `\u{N..}` token that references a code point above U+FFFF with a quantifier, or
4478
+ * if you use the same in a character class.
4479
+ */
4480
+ XRegExp.addToken(
4481
+ /\\u{([\dA-Fa-f]+)}/,
4482
+ function(match, scope, flags) {
4483
+ var code = dec(match[1]);
4484
+ if (code > 0x10FFFF) {
4485
+ throw new SyntaxError('Invalid Unicode code point ' + match[0]);
4486
+ }
4487
+ if (code <= 0xFFFF) {
4488
+ // Converting to \uNNNN avoids needing to escape the literal character and keep it
4489
+ // separate from preceding tokens
4490
+ return '\\u' + pad4(hex(code));
4491
+ }
4492
+ // If `code` is between 0xFFFF and 0x10FFFF, require and defer to native handling
4493
+ if (hasNativeU && flags.indexOf('u') > -1) {
4494
+ return match[0];
4495
+ }
4496
+ throw new SyntaxError('Cannot use Unicode code point above \\u{FFFF} without flag u');
4497
+ },
4498
+ {
4499
+ scope: 'all',
4500
+ leadChar: '\\'
4501
+ }
4502
+ );
4503
+
4504
+ /*
4505
+ * Empty character class: `[]` or `[^]`. This fixes a critical cross-browser syntax inconsistency.
4506
+ * Unless this is standardized (per the ES spec), regex syntax can't be accurately parsed because
4507
+ * character class endings can't be determined.
4508
+ */
4509
+ XRegExp.addToken(
4510
+ /\[(\^?)\]/,
4511
+ function(match) {
4512
+ // For cross-browser compatibility with ES3, convert [] to \b\B and [^] to [\s\S].
4513
+ // (?!) should work like \b\B, but is unreliable in some versions of Firefox
4514
+ return match[1] ? '[\\s\\S]' : '\\b\\B';
4515
+ },
4516
+ {leadChar: '['}
4517
+ );
4518
+
4519
+ /*
4520
+ * Comment pattern: `(?# )`. Inline comments are an alternative to the line comments allowed in
4521
+ * free-spacing mode (flag x).
4522
+ */
4523
+ XRegExp.addToken(
4524
+ /\(\?#[^)]*\)/,
4525
+ getContextualTokenSeparator,
4526
+ {leadChar: '('}
4527
+ );
4528
+
4529
+ /*
4530
+ * Whitespace and line comments, in free-spacing mode (aka extended mode, flag x) only.
4531
+ */
4532
+ XRegExp.addToken(
4533
+ /\s+|#[^\n]*\n?/,
4534
+ getContextualTokenSeparator,
4535
+ {flag: 'x'}
4536
+ );
4537
+
4538
+ /*
4539
+ * Dot, in dotall mode (aka singleline mode, flag s) only.
4540
+ */
4541
+ XRegExp.addToken(
4542
+ /\./,
4543
+ function() {
4544
+ return '[\\s\\S]';
4545
+ },
4546
+ {
4547
+ flag: 's',
4548
+ leadChar: '.'
4549
+ }
4550
+ );
4551
+
4552
+ /*
4553
+ * Named backreference: `\k<name>`. Backreference names can use the characters A-Z, a-z, 0-9, _,
4554
+ * and $ only. Also allows numbered backreferences as `\k<n>`.
4555
+ */
4556
+ XRegExp.addToken(
4557
+ /\\k<([\w$]+)>/,
4558
+ function(match) {
4559
+ // Groups with the same name is an error, else would need `lastIndexOf`
4560
+ var index = isNaN(match[1]) ? (indexOf(this.captureNames, match[1]) + 1) : +match[1];
4561
+ var endIndex = match.index + match[0].length;
4562
+ if (!index || index > this.captureNames.length) {
4563
+ throw new SyntaxError('Backreference to undefined group ' + match[0]);
4564
+ }
4565
+ // Keep backreferences separate from subsequent literal numbers. This avoids e.g.
4566
+ // inadvertedly changing `(?<n>)\k<n>1` to `()\11`.
4567
+ return '\\' + index + (
4568
+ endIndex === match.input.length || isNaN(match.input.charAt(endIndex)) ?
4569
+ '' : '(?:)'
4570
+ );
4571
+ },
4572
+ {leadChar: '\\'}
4573
+ );
4574
+
4575
+ /*
4576
+ * Numbered backreference or octal, plus any following digits: `\0`, `\11`, etc. Octals except `\0`
4577
+ * not followed by 0-9 and backreferences to unopened capture groups throw an error. Other matches
4578
+ * are returned unaltered. IE < 9 doesn't support backreferences above `\99` in regex syntax.
4579
+ */
4580
+ XRegExp.addToken(
4581
+ /\\(\d+)/,
4582
+ function(match, scope) {
4583
+ if (
4584
+ !(
4585
+ scope === defaultScope &&
4586
+ /^[1-9]/.test(match[1]) &&
4587
+ +match[1] <= this.captureNames.length
4588
+ ) &&
4589
+ match[1] !== '0'
4590
+ ) {
4591
+ throw new SyntaxError('Cannot use octal escape or backreference to undefined group ' +
4592
+ match[0]);
4593
+ }
4594
+ return match[0];
4595
+ },
4596
+ {
4597
+ scope: 'all',
4598
+ leadChar: '\\'
4599
+ }
4600
+ );
4601
+
4602
+ /*
4603
+ * Named capturing group; match the opening delimiter only: `(?<name>`. Capture names can use the
4604
+ * characters A-Z, a-z, 0-9, _, and $ only. Names can't be integers. Supports Python-style
4605
+ * `(?P<name>` as an alternate syntax to avoid issues in some older versions of Opera which natively
4606
+ * supported the Python-style syntax. Otherwise, XRegExp might treat numbered backreferences to
4607
+ * Python-style named capture as octals.
4608
+ */
4609
+ XRegExp.addToken(
4610
+ /\(\?P?<([\w$]+)>/,
4611
+ function(match) {
4612
+ // Disallow bare integers as names because named backreferences are added to match arrays
4613
+ // and therefore numeric properties may lead to incorrect lookups
4614
+ if (!isNaN(match[1])) {
4615
+ throw new SyntaxError('Cannot use integer as capture name ' + match[0]);
4616
+ }
4617
+ if (match[1] === 'length' || match[1] === '__proto__') {
4618
+ throw new SyntaxError('Cannot use reserved word as capture name ' + match[0]);
4619
+ }
4620
+ if (indexOf(this.captureNames, match[1]) > -1) {
4621
+ throw new SyntaxError('Cannot use same name for multiple groups ' + match[0]);
4622
+ }
4623
+ this.captureNames.push(match[1]);
4624
+ this.hasNamedCapture = true;
4625
+ return '(';
4626
+ },
4627
+ {leadChar: '('}
4628
+ );
4629
+
4630
+ /*
4631
+ * Capturing group; match the opening parenthesis only. Required for support of named capturing
4632
+ * groups. Also adds explicit capture mode (flag n).
4633
+ */
4634
+ XRegExp.addToken(
4635
+ /\((?!\?)/,
4636
+ function(match, scope, flags) {
4637
+ if (flags.indexOf('n') > -1) {
4638
+ return '(?:';
4639
+ }
4640
+ this.captureNames.push(null);
4641
+ return '(';
4642
+ },
4643
+ {
4644
+ optionalFlags: 'n',
4645
+ leadChar: '('
4646
+ }
4647
+ );
4648
+
4649
+ module.exports = XRegExp;
4650
+
4651
+ },{}]},{},[8])(8)
4652
+ });