{"version":3,"file":"pdf.worker.js","mappings":"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ARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,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","sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/util.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf.worker/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pdf_manager.js","webpack://pdfjs-dist/build/pdf.worker/src/core/chunked_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/core_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/base_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/calibri_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/helvetica_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/liberationsans_widths.js","webpack://pdfjs-dist/build/pdf.worker/src/core/myriadpro_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/segoeui_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/default_appearance.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_85_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decode_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_hex_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt.js","webpack://pdfjs-dist/build/pdf.worker/src/core/flate_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2.js","webpack://pdfjs-dist/build/pdf.worker/src/core/arithmetic_decoder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpeg_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpg.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx.js","webpack://pdfjs-dist/build/pdf.worker/src/core/lzw_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/predictor_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/run_length_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/to_unicode_map.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyf.js","webpack://pdfjs-dist/build/pdf.worker/src/core/opentype_file_builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/core/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/core/catalog.js","webpack://pdfjs-dist/build/pdf.worker/src/core/name_number_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cleanup_helper.js","webpack://pdfjs-dist/build/pdf.worker/src/core/file_spec.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metadata_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xml_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/struct_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/object_loader.js","webpack://pdfjs-dist/build/pdf.worker/src/core/writer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decrypt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/factory.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xfa_object.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/namespaces.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/som.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/bind.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/template.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/layout.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/html_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/text.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/data.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/setup.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/config.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/connection_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/datasets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/locale_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/signature.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/stylesheet.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xdp.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xhtml.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/unknown.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xref.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/define property getters","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/hasOwnProperty shorthand","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/make namespace object","webpack://pdfjs-dist/build/pdf.worker/src/pdf.worker.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(this, function() {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  arrayByteLength,\n  arraysToBytes,\n  createPromiseCapability,\n  getVerbosityLevel,\n  info,\n  InvalidPDFException,\n  MissingPDFException,\n  PasswordException,\n  setVerbosityLevel,\n  stringToPDFString,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  UNSUPPORTED_FEATURES,\n  VerbosityLevel,\n  warn,\n} from \"../shared/util.js\";\nimport { Dict, Ref } from \"./primitives.js\";\nimport { LocalPdfManager, NetworkPdfManager } from \"./pdf_manager.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { incrementalUpdate } from \"./writer.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { PDFWorkerStream } from \"./worker_stream.js\";\nimport { XRefParseException } from \"./core_utils.js\";\n\nclass WorkerTask {\n  constructor(name) {\n    this.name = name;\n    this.terminated = false;\n    this._capability = createPromiseCapability();\n  }\n\n  get finished() {\n    return this._capability.promise;\n  }\n\n  finish() {\n    this._capability.resolve();\n  }\n\n  terminate() {\n    this.terminated = true;\n  }\n\n  ensureNotTerminated() {\n    if (this.terminated) {\n      throw new Error(\"Worker task was terminated\");\n    }\n  }\n}\n\nclass WorkerMessageHandler {\n  static setup(handler, port) {\n    let testMessageProcessed = false;\n    handler.on(\"test\", function wphSetupTest(data) {\n      if (testMessageProcessed) {\n        return; // we already processed 'test' message once\n      }\n      testMessageProcessed = true;\n\n      // Ensure that `TypedArray`s can be sent to the worker,\n      // and that `postMessage` transfers are supported.\n      handler.send(\"test\", data instanceof Uint8Array && data[0] === 255);\n    });\n\n    handler.on(\"configure\", function wphConfigure(data) {\n      setVerbosityLevel(data.verbosity);\n    });\n\n    handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n      return WorkerMessageHandler.createDocumentHandler(data, port);\n    });\n  }\n\n  static createDocumentHandler(docParams, port) {\n    // This context is actually holds references on pdfManager and handler,\n    // until the latter is destroyed.\n    let pdfManager;\n    let terminated = false;\n    let cancelXHRs = null;\n    const WorkerTasks = [];\n    const verbosity = getVerbosityLevel();\n\n    const apiVersion = docParams.apiVersion;\n    const workerVersion =\n      typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n        ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n        : null;\n    if (apiVersion !== workerVersion) {\n      throw new Error(\n        `The API version \"${apiVersion}\" does not match ` +\n          `the Worker version \"${workerVersion}\".`\n      );\n    }\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n      // Fail early, and predictably, rather than having (some) fonts fail to\n      // load/render with slightly cryptic error messages in environments where\n      // the `Array.prototype` has been *incorrectly* extended.\n      //\n      // PLEASE NOTE: We do *not* want to slow down font parsing by adding\n      //              `hasOwnProperty` checks all over the code-base.\n      const enumerableProperties = [];\n      for (const property in []) {\n        enumerableProperties.push(property);\n      }\n      if (enumerableProperties.length) {\n        throw new Error(\n          \"The `Array.prototype` contains unexpected enumerable properties: \" +\n            enumerableProperties.join(\", \") +\n            \"; thus breaking e.g. `for...in` iteration of `Array`s.\"\n        );\n      }\n\n      // Ensure that (primarily) Node.js users won't accidentally attempt to use\n      // a non-translated/non-polyfilled build of the library, since that would\n      // quickly fail anyway because of missing functionality.\n      if (typeof ReadableStream === \"undefined\") {\n        const partialMsg =\n          \"The browser/environment lacks native support for critical \" +\n          \"functionality used by the PDF.js library (e.g. `ReadableStream`); \";\n\n        if (isNodeJS) {\n          throw new Error(partialMsg + \"please use a `legacy`-build instead.\");\n        }\n        throw new Error(partialMsg + \"please update to a supported browser.\");\n      }\n    }\n\n    const docId = docParams.docId;\n    const docBaseUrl = docParams.docBaseUrl;\n    const workerHandlerName = docParams.docId + \"_worker\";\n    let handler = new MessageHandler(workerHandlerName, docId, port);\n\n    function ensureNotTerminated() {\n      if (terminated) {\n        throw new Error(\"Worker was terminated\");\n      }\n    }\n\n    function startWorkerTask(task) {\n      WorkerTasks.push(task);\n    }\n\n    function finishWorkerTask(task) {\n      task.finish();\n      const i = WorkerTasks.indexOf(task);\n      WorkerTasks.splice(i, 1);\n    }\n\n    async function loadDocument(recoveryMode) {\n      await pdfManager.ensureDoc(\"checkHeader\");\n      await pdfManager.ensureDoc(\"parseStartXRef\");\n      await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n      // Check that at least the first page can be successfully loaded,\n      // since otherwise the XRef table is definitely not valid.\n      await pdfManager.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n      // Check that the last page can be sucessfully loaded, to ensure that\n      // `numPages` is correct, and fallback to walking the entire /Pages-tree.\n      await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n\n      const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n      if (isPureXfa) {\n        const task = new WorkerTask(\"loadXfaFonts\");\n        startWorkerTask(task);\n        await Promise.all([\n          pdfManager\n            .loadXfaFonts(handler, task)\n            .catch(reason => {\n              // Ignore errors, to allow the document to load.\n            })\n            .then(() => finishWorkerTask(task)),\n          pdfManager.loadXfaImages(),\n        ]);\n      }\n\n      const [numPages, fingerprints] = await Promise.all([\n        pdfManager.ensureDoc(\"numPages\"),\n        pdfManager.ensureDoc(\"fingerprints\"),\n      ]);\n\n      // Get htmlForXfa after numPages to avoid to create HTML twice.\n      const htmlForXfa = isPureXfa\n        ? await pdfManager.ensureDoc(\"htmlForXfa\")\n        : null;\n\n      return { numPages, fingerprints, htmlForXfa };\n    }\n\n    function getPdfManager(data, evaluatorOptions, enableXfa) {\n      const pdfManagerCapability = createPromiseCapability();\n      let newPdfManager;\n\n      const source = data.source;\n      if (source.data) {\n        try {\n          newPdfManager = new LocalPdfManager(\n            docId,\n            source.data,\n            source.password,\n            handler,\n            evaluatorOptions,\n            enableXfa,\n            docBaseUrl\n          );\n          pdfManagerCapability.resolve(newPdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        return pdfManagerCapability.promise;\n      }\n\n      let pdfStream,\n        cachedChunks = [];\n      try {\n        pdfStream = new PDFWorkerStream(handler);\n      } catch (ex) {\n        pdfManagerCapability.reject(ex);\n        return pdfManagerCapability.promise;\n      }\n\n      const fullRequest = pdfStream.getFullReader();\n      fullRequest.headersReady\n        .then(function () {\n          if (!fullRequest.isRangeSupported) {\n            return;\n          }\n\n          // We don't need auto-fetch when streaming is enabled.\n          const disableAutoFetch =\n            source.disableAutoFetch || fullRequest.isStreamingSupported;\n          newPdfManager = new NetworkPdfManager(\n            docId,\n            pdfStream,\n            {\n              msgHandler: handler,\n              password: source.password,\n              length: fullRequest.contentLength,\n              disableAutoFetch,\n              rangeChunkSize: source.rangeChunkSize,\n            },\n            evaluatorOptions,\n            enableXfa,\n            docBaseUrl\n          );\n          // There may be a chance that `newPdfManager` is not initialized for\n          // the first few runs of `readchunk` block of code. Be sure to send\n          // all cached chunks, if any, to chunked_stream via pdf_manager.\n          for (let i = 0; i < cachedChunks.length; i++) {\n            newPdfManager.sendProgressiveData(cachedChunks[i]);\n          }\n\n          cachedChunks = [];\n          pdfManagerCapability.resolve(newPdfManager);\n          cancelXHRs = null;\n        })\n        .catch(function (reason) {\n          pdfManagerCapability.reject(reason);\n          cancelXHRs = null;\n        });\n\n      let loaded = 0;\n      const flushChunks = function () {\n        const pdfFile = arraysToBytes(cachedChunks);\n        if (source.length && pdfFile.length !== source.length) {\n          warn(\"reported HTTP length is different from actual\");\n        }\n        // the data is array, instantiating directly from it\n        try {\n          newPdfManager = new LocalPdfManager(\n            docId,\n            pdfFile,\n            source.password,\n            handler,\n            evaluatorOptions,\n            enableXfa,\n            docBaseUrl\n          );\n          pdfManagerCapability.resolve(newPdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        cachedChunks = [];\n      };\n      const readPromise = new Promise(function (resolve, reject) {\n        const readChunk = function ({ value, done }) {\n          try {\n            ensureNotTerminated();\n            if (done) {\n              if (!newPdfManager) {\n                flushChunks();\n              }\n              cancelXHRs = null;\n              return;\n            }\n\n            loaded += arrayByteLength(value);\n            if (!fullRequest.isStreamingSupported) {\n              handler.send(\"DocProgress\", {\n                loaded,\n                total: Math.max(loaded, fullRequest.contentLength || 0),\n              });\n            }\n\n            if (newPdfManager) {\n              newPdfManager.sendProgressiveData(value);\n            } else {\n              cachedChunks.push(value);\n            }\n\n            fullRequest.read().then(readChunk, reject);\n          } catch (e) {\n            reject(e);\n          }\n        };\n        fullRequest.read().then(readChunk, reject);\n      });\n      readPromise.catch(function (e) {\n        pdfManagerCapability.reject(e);\n        cancelXHRs = null;\n      });\n\n      cancelXHRs = function (reason) {\n        pdfStream.cancelAllRequests(reason);\n      };\n\n      return pdfManagerCapability.promise;\n    }\n\n    function setupDoc(data) {\n      function onSuccess(doc) {\n        ensureNotTerminated();\n        handler.send(\"GetDoc\", { pdfInfo: doc });\n      }\n\n      function onFailure(ex) {\n        ensureNotTerminated();\n\n        if (ex instanceof PasswordException) {\n          const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n          startWorkerTask(task);\n\n          handler\n            .sendWithPromise(\"PasswordRequest\", ex)\n            .then(function ({ password }) {\n              finishWorkerTask(task);\n              pdfManager.updatePassword(password);\n              pdfManagerReady();\n            })\n            .catch(function () {\n              finishWorkerTask(task);\n              handler.send(\"DocException\", ex);\n            });\n        } else if (\n          ex instanceof InvalidPDFException ||\n          ex instanceof MissingPDFException ||\n          ex instanceof UnexpectedResponseException ||\n          ex instanceof UnknownErrorException\n        ) {\n          handler.send(\"DocException\", ex);\n        } else {\n          handler.send(\n            \"DocException\",\n            new UnknownErrorException(ex.message, ex.toString())\n          );\n        }\n      }\n\n      function pdfManagerReady() {\n        ensureNotTerminated();\n\n        loadDocument(false).then(onSuccess, function (reason) {\n          ensureNotTerminated();\n\n          // Try again with recoveryMode == true\n          if (!(reason instanceof XRefParseException)) {\n            onFailure(reason);\n            return;\n          }\n          pdfManager.requestLoadedStream();\n          pdfManager.onLoadedStream().then(function () {\n            ensureNotTerminated();\n\n            loadDocument(true).then(onSuccess, onFailure);\n          });\n        });\n      }\n\n      ensureNotTerminated();\n\n      const evaluatorOptions = {\n        maxImageSize: data.maxImageSize,\n        disableFontFace: data.disableFontFace,\n        ignoreErrors: data.ignoreErrors,\n        isEvalSupported: data.isEvalSupported,\n        fontExtraProperties: data.fontExtraProperties,\n        useSystemFonts: data.useSystemFonts,\n        cMapUrl: data.cMapUrl,\n        standardFontDataUrl: data.standardFontDataUrl,\n      };\n\n      getPdfManager(data, evaluatorOptions, data.enableXfa)\n        .then(function (newPdfManager) {\n          if (terminated) {\n            // We were in a process of setting up the manager, but it got\n            // terminated in the middle.\n            newPdfManager.terminate(\n              new AbortException(\"Worker was terminated.\")\n            );\n            throw new Error(\"Worker was terminated\");\n          }\n          pdfManager = newPdfManager;\n\n          pdfManager.onLoadedStream().then(function (stream) {\n            handler.send(\"DataLoaded\", { length: stream.bytes.byteLength });\n          });\n        })\n        .then(pdfManagerReady, onFailure);\n    }\n\n    handler.on(\"GetPage\", function wphSetupGetPage(data) {\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\n        return Promise.all([\n          pdfManager.ensure(page, \"rotate\"),\n          pdfManager.ensure(page, \"ref\"),\n          pdfManager.ensure(page, \"userUnit\"),\n          pdfManager.ensure(page, \"view\"),\n        ]).then(function ([rotate, ref, userUnit, view]) {\n          return {\n            rotate,\n            ref,\n            userUnit,\n            view,\n          };\n        });\n      });\n    });\n\n    handler.on(\"GetPageIndex\", function wphSetupGetPageIndex(data) {\n      const pageRef = Ref.get(data.num, data.gen);\n      return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n    });\n\n    handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n      return pdfManager.ensureCatalog(\"destinations\");\n    });\n\n    handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n      return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n    });\n\n    handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n      return pdfManager.ensureCatalog(\"pageLabels\");\n    });\n\n    handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n      return pdfManager.ensureCatalog(\"pageLayout\");\n    });\n\n    handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n      return pdfManager.ensureCatalog(\"pageMode\");\n    });\n\n    handler.on(\"GetViewerPreferences\", function (data) {\n      return pdfManager.ensureCatalog(\"viewerPreferences\");\n    });\n\n    handler.on(\"GetOpenAction\", function (data) {\n      return pdfManager.ensureCatalog(\"openAction\");\n    });\n\n    handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n      return pdfManager.ensureCatalog(\"attachments\");\n    });\n\n    handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n      return pdfManager.ensureCatalog(\"javaScript\");\n    });\n\n    handler.on(\"GetDocJSActions\", function wphSetupGetDocJSActions(data) {\n      return pdfManager.ensureCatalog(\"jsActions\");\n    });\n\n    handler.on(\"GetPageJSActions\", function ({ pageIndex }) {\n      return pdfManager.getPage(pageIndex).then(function (page) {\n        return pdfManager.ensure(page, \"jsActions\");\n      });\n    });\n\n    handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n      return pdfManager.ensureCatalog(\"documentOutline\");\n    });\n\n    handler.on(\"GetOptionalContentConfig\", function (data) {\n      return pdfManager.ensureCatalog(\"optionalContentConfig\");\n    });\n\n    handler.on(\"GetPermissions\", function (data) {\n      return pdfManager.ensureCatalog(\"permissions\");\n    });\n\n    handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n      return Promise.all([\n        pdfManager.ensureDoc(\"documentInfo\"),\n        pdfManager.ensureCatalog(\"metadata\"),\n      ]);\n    });\n\n    handler.on(\"GetMarkInfo\", function wphSetupGetMarkInfo(data) {\n      return pdfManager.ensureCatalog(\"markInfo\");\n    });\n\n    handler.on(\"GetData\", function wphSetupGetData(data) {\n      pdfManager.requestLoadedStream();\n      return pdfManager.onLoadedStream().then(function (stream) {\n        return stream.bytes;\n      });\n    });\n\n    handler.on(\"GetAnnotations\", function ({ pageIndex, intent }) {\n      return pdfManager.getPage(pageIndex).then(function (page) {\n        return page.getAnnotationsData(intent);\n      });\n    });\n\n    handler.on(\"GetFieldObjects\", function (data) {\n      return pdfManager.ensureDoc(\"fieldObjects\");\n    });\n\n    handler.on(\"HasJSActions\", function (data) {\n      return pdfManager.ensureDoc(\"hasJSActions\");\n    });\n\n    handler.on(\"GetCalculationOrderIds\", function (data) {\n      return pdfManager.ensureDoc(\"calculationOrderIds\");\n    });\n\n    handler.on(\n      \"SaveDocument\",\n      function ({ isPureXfa, numPages, annotationStorage, filename }) {\n        pdfManager.requestLoadedStream();\n\n        const promises = [\n          pdfManager.onLoadedStream(),\n          pdfManager.ensureCatalog(\"acroForm\"),\n          pdfManager.ensureCatalog(\"acroFormRef\"),\n          pdfManager.ensureDoc(\"xref\"),\n          pdfManager.ensureDoc(\"startXRef\"),\n        ];\n\n        if (isPureXfa) {\n          promises.push(pdfManager.serializeXfaData(annotationStorage));\n        } else {\n          for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n            promises.push(\n              pdfManager.getPage(pageIndex).then(function (page) {\n                const task = new WorkerTask(`Save: page ${pageIndex}`);\n                return page\n                  .save(handler, task, annotationStorage)\n                  .finally(function () {\n                    finishWorkerTask(task);\n                  });\n              })\n            );\n          }\n        }\n\n        return Promise.all(promises).then(function ([\n          stream,\n          acroForm,\n          acroFormRef,\n          xref,\n          startXRef,\n          ...refs\n        ]) {\n          let newRefs = [];\n          let xfaData = null;\n          if (isPureXfa) {\n            xfaData = refs[0];\n            if (!xfaData) {\n              return stream.bytes;\n            }\n          } else {\n            for (const ref of refs) {\n              newRefs = ref\n                .filter(x => x !== null)\n                .reduce((a, b) => a.concat(b), newRefs);\n            }\n\n            if (newRefs.length === 0) {\n              // No new refs so just return the initial bytes\n              return stream.bytes;\n            }\n          }\n\n          const xfa = (acroForm instanceof Dict && acroForm.get(\"XFA\")) || null;\n          let xfaDatasetsRef = null;\n          let hasXfaDatasetsEntry = false;\n          if (Array.isArray(xfa)) {\n            for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n              if (xfa[i] === \"datasets\") {\n                xfaDatasetsRef = xfa[i + 1];\n                acroFormRef = null;\n                hasXfaDatasetsEntry = true;\n              }\n            }\n            if (xfaDatasetsRef === null) {\n              xfaDatasetsRef = xref.getNewRef();\n            }\n          } else if (xfa) {\n            acroFormRef = null;\n            // TODO: Support XFA streams.\n            warn(\"Unsupported XFA type.\");\n          }\n\n          let newXrefInfo = Object.create(null);\n          if (xref.trailer) {\n            // Get string info from Info in order to compute fileId.\n            const infoObj = Object.create(null);\n            const xrefInfo = xref.trailer.get(\"Info\") || null;\n            if (xrefInfo instanceof Dict) {\n              xrefInfo.forEach((key, value) => {\n                if (typeof value === \"string\") {\n                  infoObj[key] = stringToPDFString(value);\n                }\n              });\n            }\n\n            newXrefInfo = {\n              rootRef: xref.trailer.getRaw(\"Root\") || null,\n              encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n              newRef: xref.getNewRef(),\n              infoRef: xref.trailer.getRaw(\"Info\") || null,\n              info: infoObj,\n              fileIds: xref.trailer.get(\"ID\") || null,\n              startXRef,\n              filename,\n            };\n          }\n          xref.resetNewRef();\n\n          return incrementalUpdate({\n            originalData: stream.bytes,\n            xrefInfo: newXrefInfo,\n            newRefs,\n            xref,\n            hasXfa: !!xfa,\n            xfaDatasetsRef,\n            hasXfaDatasetsEntry,\n            acroFormRef,\n            acroForm,\n            xfaData,\n          });\n        });\n      }\n    );\n\n    handler.on(\"GetOperatorList\", function wphSetupRenderPage(data, sink) {\n      const pageIndex = data.pageIndex;\n      pdfManager.getPage(pageIndex).then(function (page) {\n        const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n        startWorkerTask(task);\n\n        // NOTE: Keep this condition in sync with the `info` helper function.\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n        // Pre compile the pdf page and fetch the fonts/images.\n        page\n          .getOperatorList({\n            handler,\n            sink,\n            task,\n            intent: data.intent,\n            cacheKey: data.cacheKey,\n            annotationStorage: data.annotationStorage,\n          })\n          .then(\n            function (operatorListInfo) {\n              finishWorkerTask(task);\n\n              if (start) {\n                info(\n                  `page=${pageIndex + 1} - getOperatorList: time=` +\n                    `${Date.now() - start}ms, len=${operatorListInfo.length}`\n                );\n              }\n              sink.close();\n            },\n            function (reason) {\n              finishWorkerTask(task);\n              if (task.terminated) {\n                return; // ignoring errors from the terminated thread\n              }\n              // For compatibility with older behavior, generating unknown\n              // unsupported feature notification on errors.\n              handler.send(\"UnsupportedFeature\", {\n                featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n              });\n\n              sink.error(reason);\n\n              // TODO: Should `reason` be re-thrown here (currently that casues\n              //       \"Uncaught exception: ...\" messages in the console)?\n            }\n          );\n      });\n    });\n\n    handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n      const pageIndex = data.pageIndex;\n\n      pdfManager.getPage(pageIndex).then(function (page) {\n        const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n        startWorkerTask(task);\n\n        // NOTE: Keep this condition in sync with the `info` helper function.\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n        page\n          .extractTextContent({\n            handler,\n            task,\n            sink,\n            includeMarkedContent: data.includeMarkedContent,\n            combineTextItems: data.combineTextItems,\n          })\n          .then(\n            function () {\n              finishWorkerTask(task);\n\n              if (start) {\n                info(\n                  `page=${pageIndex + 1} - getTextContent: time=` +\n                    `${Date.now() - start}ms`\n                );\n              }\n              sink.close();\n            },\n            function (reason) {\n              finishWorkerTask(task);\n              if (task.terminated) {\n                return; // ignoring errors from the terminated thread\n              }\n              sink.error(reason);\n\n              // TODO: Should `reason` be re-thrown here (currently that casues\n              //       \"Uncaught exception: ...\" messages in the console)?\n            }\n          );\n      });\n    });\n\n    handler.on(\"GetStructTree\", function wphGetStructTree(data) {\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\n        return pdfManager.ensure(page, \"getStructTree\");\n      });\n    });\n\n    handler.on(\"FontFallback\", function (data) {\n      return pdfManager.fontFallback(data.id, handler);\n    });\n\n    handler.on(\"Cleanup\", function wphCleanup(data) {\n      return pdfManager.cleanup(/* manuallyTriggered = */ true);\n    });\n\n    handler.on(\"Terminate\", function wphTerminate(data) {\n      terminated = true;\n\n      const waitOn = [];\n      if (pdfManager) {\n        pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n\n        const cleanupPromise = pdfManager.cleanup();\n        waitOn.push(cleanupPromise);\n\n        pdfManager = null;\n      } else {\n        clearGlobalCaches();\n      }\n      if (cancelXHRs) {\n        cancelXHRs(new AbortException(\"Worker was terminated.\"));\n      }\n\n      for (const task of WorkerTasks) {\n        waitOn.push(task.finished);\n        task.terminate();\n      }\n\n      return Promise.all(waitOn).then(function () {\n        // Notice that even if we destroying handler, resolved response promise\n        // must be sent back.\n        handler.destroy();\n        handler = null;\n      });\n    });\n\n    handler.on(\"Ready\", function wphReady(data) {\n      setupDoc(docParams);\n      docParams = null; // we don't need docParams anymore -- saving memory.\n    });\n    return workerHandlerName;\n  }\n\n  static initializeFromPort(port) {\n    const handler = new MessageHandler(\"worker\", \"main\", port);\n    WorkerMessageHandler.setup(handler, port);\n    handler.send(\"ready\", null);\n  }\n}\n\nfunction isMessagePort(maybePort) {\n  return (\n    typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort\n  );\n}\n\n// Worker thread (and not Node.js)?\nif (\n  typeof window === \"undefined\" &&\n  !isNodeJS &&\n  typeof self !== \"undefined\" &&\n  isMessagePort(self)\n) {\n  WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport { WorkerMessageHandler, WorkerTask };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n *    annotations are rendered onto the canvas (i.e. by being included in the\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n *    and their `annotationMode`-option.\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n *    `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n  ANY: 0x01,\n  DISPLAY: 0x02,\n  PRINT: 0x04,\n  ANNOTATIONS_FORMS: 0x10,\n  ANNOTATIONS_STORAGE: 0x20,\n  ANNOTATIONS_DISABLE: 0x40,\n  OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n  MARKED: \"Marked\",\n  REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n  MARKED: \"Marked\",\n  UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n  ACCEPTED: \"Accepted\",\n  REJECTED: \"Rejected\",\n  CANCELLED: \"Cancelled\",\n  COMPLETED: \"Completed\",\n  NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n  E: \"Mouse Enter\",\n  X: \"Mouse Exit\",\n  D: \"Mouse Down\",\n  U: \"Mouse Up\",\n  Fo: \"Focus\",\n  Bl: \"Blur\",\n  PO: \"PageOpen\",\n  PC: \"PageClose\",\n  PV: \"PageVisible\",\n  PI: \"PageInvisible\",\n  K: \"Keystroke\",\n  F: \"Format\",\n  V: \"Validate\",\n  C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\",\n};\n\nconst StreamType = {\n  UNKNOWN: \"UNKNOWN\",\n  FLATE: \"FLATE\",\n  LZW: \"LZW\",\n  DCT: \"DCT\",\n  JPX: \"JPX\",\n  JBIG: \"JBIG\",\n  A85: \"A85\",\n  AHX: \"AHX\",\n  CCF: \"CCF\",\n  RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n  UNKNOWN: \"UNKNOWN\",\n  TYPE1: \"TYPE1\",\n  TYPE1STANDARD: \"TYPE1STANDARD\",\n  TYPE1C: \"TYPE1C\",\n  CIDFONTTYPE0: \"CIDFONTTYPE0\",\n  CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n  TRUETYPE: \"TRUETYPE\",\n  CIDFONTTYPE2: \"CIDFONTTYPE2\",\n  TYPE3: \"TYPE3\",\n  OPENTYPE: \"OPENTYPE\",\n  TYPE0: \"TYPE0\",\n  MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotations: 78,\n  endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  /** @deprecated unused */\n  paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n  /** @deprecated unused */\n  unknown: \"unknown\",\n  forms: \"forms\",\n  javaScript: \"javaScript\",\n  signatures: \"signatures\",\n  smask: \"smask\",\n  shadingPattern: \"shadingPattern\",\n  /** @deprecated unused */\n  font: \"font\",\n  errorTilingPattern: \"errorTilingPattern\",\n  errorExtGState: \"errorExtGState\",\n  errorXObject: \"errorXObject\",\n  errorFontLoadType3: \"errorFontLoadType3\",\n  errorFontState: \"errorFontState\",\n  errorFontMissing: \"errorFontMissing\",\n  errorFontTranslate: \"errorFontTranslate\",\n  errorColorSpace: \"errorColorSpace\",\n  errorOperatorList: \"errorOperatorList\",\n  errorFontToUnicode: \"errorFontToUnicode\",\n  errorFontLoadNative: \"errorFontLoadNative\",\n  errorFontBuildPath: \"errorFontBuildPath\",\n  errorFontGetPath: \"errorFontGetPath\",\n  errorMarkedContent: \"errorMarkedContent\",\n  errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n  let base;\n  try {\n    base = new URL(baseUrl);\n    if (!base.origin || base.origin === \"null\") {\n      return false; // non-HTTP url\n    }\n  } catch (e) {\n    return false;\n  }\n\n  const other = new URL(otherUrl, base);\n  return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\n  switch (url.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  try {\n    if (options && typeof url === \"string\") {\n      // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n        const dots = url.match(/\\./g);\n        // Avoid accidentally matching a *relative* URL pointing to a file named\n        // e.g. \"www.pdf\" or similar.\n        if (dots && dots.length >= 2) {\n          url = `http://${url}`;\n        }\n      }\n\n      // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n      // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n      if (options.tryConvertEncoding) {\n        try {\n          url = stringToUTF8String(url);\n        } catch (ex) {}\n      }\n    }\n\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) {\n    /* `new URL()` will throw on incorrect data. */\n  }\n  return null;\n}\n\nfunction shadow(obj, prop, value) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      prop in obj,\n      `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n    );\n  }\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: true,\n    configurable: true,\n    writable: false,\n  });\n  return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n  // eslint-disable-next-line no-shadow\n  function BaseException(message, name) {\n    if (this.constructor === BaseException) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n\n  return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\n\nclass MissingPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"MissingPDFException\");\n  }\n}\n\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg, \"UnexpectedResponseException\");\n    this.status = status;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\n}\n\nfunction bytesToString(bytes) {\n  if (\n    typeof bytes !== \"object\" ||\n    bytes === null ||\n    bytes.length === undefined\n  ) {\n    unreachable(\"Invalid argument for bytesToString\");\n  }\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n  if (typeof str !== \"string\") {\n    unreachable(\"Invalid argument for stringToBytes\");\n  }\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n  if (arr.byteLength !== undefined) {\n    return arr.byteLength;\n  }\n  unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n *   (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n  const length = arr.length;\n  // Shortcut: if first and only item is Uint8Array, return it.\n  if (length === 1 && arr[0] instanceof Uint8Array) {\n    return arr[0];\n  }\n  let resultLength = 0;\n  for (let i = 0; i < length; i++) {\n    resultLength += arrayByteLength(arr[i]);\n  }\n  let pos = 0;\n  const data = new Uint8Array(resultLength);\n  for (let i = 0; i < length; i++) {\n    let item = arr[i];\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === \"string\") {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n    const itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n  return data;\n}\n\nfunction string32(value) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n      `string32: Unexpected input \"${value}\".`\n    );\n  }\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\n}\n\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n  const obj = Object.create(null);\n  for (const [key, value] of map) {\n    obj[key] = value;\n  }\n  return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n  get value() {\n    return shadow(this, \"value\", isLittleEndian());\n  },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(\"\"); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nconst IsEvalSupportedCached = {\n  get value() {\n    return shadow(this, \"value\", isEvalSupported());\n  },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n  n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n\n  // Concatenates two transformation matrices together and returns the result.\n  static transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n    ];\n  }\n\n  // For 2d affine transforms\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = Util.applyTransform(r, m);\n    const p2 = Util.applyTransform(r.slice(2, 4), m);\n    const p3 = Util.applyTransform([r[0], r[3]], m);\n    const p4 = Util.applyTransform([r[2], r[1]], m);\n    return [\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\n      Math.max(p1[1], p2[1], p3[1], p4[1]),\n    ];\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [\n      m[3] / d,\n      -m[1] / d,\n      -m[2] / d,\n      m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d,\n      (m[4] * m[1] - m[5] * m[0]) / d,\n    ];\n  }\n\n  // Apply a generic 3d matrix M on a 3-vector v:\n  //   | a b c |   | X |\n  //   | d e f | x | Y |\n  //   | g h i |   | Z |\n  // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n  // with v as [X,Y,Z]\n  static apply3dTransform(m, v) {\n    return [\n      m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n      m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n      m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n    ];\n  }\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n\n    // Multiply matrix m with its transpose.\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n    // Solve the second degree polynomial to get roots.\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n\n    // Scale values are the square roots of the eigenvalues.\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  static normalizeRect(rect) {\n    const r = rect.slice(0); // clone rect\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'false'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    function compare(a, b) {\n      return a - b;\n    }\n\n    // Order points along the axes\n    const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n    const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n    const result = [];\n\n    rect1 = Util.normalizeRect(rect1);\n    rect2 = Util.normalizeRect(rect2);\n\n    // X: first and second points belong to different rectangles?\n    if (\n      (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n      (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n    ) {\n      // Intersection must be between second and third points\n      result[0] = orderedX[1];\n      result[2] = orderedX[2];\n    } else {\n      return null;\n    }\n\n    // Y: first and second points belong to different rectangles?\n    if (\n      (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n      (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n    ) {\n      // Intersection must be between second and third points\n      result[1] = orderedY[1];\n      result[3] = orderedY[2];\n    } else {\n      return null;\n    }\n\n    return result;\n  }\n\n  // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n    const tvalues = [],\n      bounds = [[], []];\n    let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n    for (let i = 0; i < 2; ++i) {\n      if (i === 0) {\n        b = 6 * x0 - 12 * x1 + 6 * x2;\n        a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n        c = 3 * x1 - 3 * x0;\n      } else {\n        b = 6 * y0 - 12 * y1 + 6 * y2;\n        a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n        c = 3 * y1 - 3 * y0;\n      }\n      if (Math.abs(a) < 1e-12) {\n        if (Math.abs(b) < 1e-12) {\n          continue;\n        }\n        t = -c / b;\n        if (0 < t && t < 1) {\n          tvalues.push(t);\n        }\n        continue;\n      }\n      b2ac = b * b - 4 * c * a;\n      sqrtb2ac = Math.sqrt(b2ac);\n      if (b2ac < 0) {\n        continue;\n      }\n      t1 = (-b + sqrtb2ac) / (2 * a);\n      if (0 < t1 && t1 < 1) {\n        tvalues.push(t1);\n      }\n      t2 = (-b - sqrtb2ac) / (2 * a);\n      if (0 < t2 && t2 < 1) {\n        tvalues.push(t2);\n      }\n    }\n\n    let j = tvalues.length,\n      mt;\n    const jlen = j;\n    while (j--) {\n      t = tvalues[j];\n      mt = 1 - t;\n      bounds[0][j] =\n        mt * mt * mt * x0 +\n        3 * mt * mt * t * x1 +\n        3 * mt * t * t * x2 +\n        t * t * t * x3;\n      bounds[1][j] =\n        mt * mt * mt * y0 +\n        3 * mt * mt * t * y1 +\n        3 * mt * t * t * y2 +\n        t * t * t * y3;\n    }\n\n    bounds[0][jlen] = x0;\n    bounds[1][jlen] = y0;\n    bounds[0][jlen + 1] = x3;\n    bounds[1][jlen + 1] = y3;\n    bounds[0].length = bounds[1].length = jlen + 2;\n\n    return [\n      Math.min(...bounds[0]),\n      Math.min(...bounds[1]),\n      Math.max(...bounds[0]),\n      Math.max(...bounds[1]),\n    ];\n  }\n}\n\nconst PDFStringTranslateTable = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n  if (str[0] >= \"\\xEF\") {\n    let encoding;\n    if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n      encoding = \"utf-16be\";\n    } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n      encoding = \"utf-16le\";\n    } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n      encoding = \"utf-8\";\n    }\n\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, { fatal: true });\n        const buffer = stringToBytes(str);\n        return decoder.decode(buffer);\n      } catch (ex) {\n        warn(`stringToPDFString: \"${ex}\".`);\n      }\n    }\n  }\n  // ISO Latin 1\n  const strBuf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const code = PDFStringTranslateTable[str.charCodeAt(i)];\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n  // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n  // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n  // in order to write it in a PDF file.\n  return str.replace(/([()\\\\\\n\\r])/g, match => {\n    if (match === \"\\n\") {\n      return \"\\\\n\";\n    } else if (match === \"\\r\") {\n      return \"\\\\r\";\n    }\n    return `\\\\${match}`;\n  });\n}\n\nfunction isAscii(str) {\n  return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n  const buf = [\"\\xFE\\xFF\"];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    buf.push(\n      String.fromCharCode((char >> 8) & 0xff),\n      String.fromCharCode(char & 0xff)\n    );\n  }\n  return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n  return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  for (let i = 0, ii = arr1.length; i < ii; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n  const buffer = [\n    date.getUTCFullYear().toString(),\n    (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n    date.getUTCDate().toString().padStart(2, \"0\"),\n    date.getUTCHours().toString().padStart(2, \"0\"),\n    date.getUTCMinutes().toString().padStart(2, \"0\"),\n    date.getUTCSeconds().toString().padStart(2, \"0\"),\n  ];\n\n  return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n  const capability = Object.create(null);\n  let isSettled = false;\n\n  Object.defineProperty(capability, \"settled\", {\n    get() {\n      return isSettled;\n    },\n  });\n  capability.promise = new Promise(function (resolve, reject) {\n    capability.resolve = function (data) {\n      isSettled = true;\n      resolve(data);\n    };\n    capability.reject = function (reason) {\n      isSettled = true;\n      reject(reason);\n    };\n  });\n  return capability;\n}\n\nexport {\n  AbortException,\n  AnnotationActionEventType,\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMarkedState,\n  AnnotationMode,\n  AnnotationReplyType,\n  AnnotationReviewState,\n  AnnotationStateModelType,\n  AnnotationType,\n  arrayByteLength,\n  arraysToBytes,\n  assert,\n  BaseException,\n  bytesToString,\n  CMapCompressionType,\n  createPromiseCapability,\n  createValidAbsoluteUrl,\n  DocumentActionEventType,\n  escapeString,\n  FONT_IDENTITY_MATRIX,\n  FontType,\n  FormatError,\n  getModificationDate,\n  getVerbosityLevel,\n  IDENTITY_MATRIX,\n  ImageKind,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isArrayEqual,\n  isAscii,\n  IsEvalSupportedCached,\n  IsLittleEndianCached,\n  isSameOrigin,\n  MissingPDFException,\n  objectFromMap,\n  objectSize,\n  OPS,\n  PageActionEventType,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  RenderingIntentFlag,\n  setVerbosityLevel,\n  shadow,\n  StreamType,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF16BEString,\n  stringToUTF8String,\n  TextRenderingMode,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n  UNSUPPORTED_FEATURES,\n  utf8StringToString,\n  Util,\n  VerbosityLevel,\n  warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n  (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n  !globalThis._pdfjsCompatibilityChecked\n) {\n  globalThis._pdfjsCompatibilityChecked = true;\n\n  // Support: Node.js\n  (function checkNodeBtoa() {\n    if (globalThis.btoa || !isNodeJS) {\n      return;\n    }\n    globalThis.btoa = function (chars) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(chars, \"binary\").toString(\"base64\");\n    };\n  })();\n\n  // Support: Node.js\n  (function checkNodeAtob() {\n    if (globalThis.atob || !isNodeJS) {\n      return;\n    }\n    globalThis.atob = function (input) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(input, \"base64\").toString(\"binary\");\n    };\n  })();\n\n  // Support: Node.js\n  (function checkDOMMatrix() {\n    if (globalThis.DOMMatrix || !isNodeJS) {\n      return;\n    }\n    globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n  })();\n\n  // Provides support for *recent* additions to the Promise specification,\n  // however basic Promise support is assumed to be available natively.\n  // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n  (function checkPromise() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `Promise` shouldn't\n      // need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    if (globalThis.Promise.allSettled) {\n      return;\n    }\n    globalThis.Promise = require(\"core-js/es/promise/index.js\");\n  })();\n\n  // Support: Node.js\n  (function checkReadableStream() {\n    if (globalThis.ReadableStream || !isNodeJS) {\n      return;\n    }\n    globalThis.ReadableStream = __non_webpack_require__(\n      \"web-streams-polyfill/dist/ponyfill.js\"\n    ).ReadableStream;\n  })();\n\n  // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n  (function checkStructuredClone() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `structuredClone`\n      // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    if (globalThis.structuredClone) {\n      return;\n    }\n    require(\"core-js/web/structured-clone.js\");\n  })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n  typeof process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions.nw &&\n  !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable } from \"../shared/util.js\";\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\n\nconst Name = (function NameClosure() {\n  let nameCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  class Name {\n    constructor(name) {\n      if (\n        (typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n        typeof name !== \"string\"\n      ) {\n        unreachable('Name: The \"name\" must be a string.');\n      }\n      this.name = name;\n    }\n\n    static get(name) {\n      const nameValue = nameCache[name];\n      // eslint-disable-next-line no-restricted-syntax\n      return nameValue ? nameValue : (nameCache[name] = new Name(name));\n    }\n\n    static _clearCache() {\n      nameCache = Object.create(null);\n    }\n  }\n\n  return Name;\n})();\n\nconst Cmd = (function CmdClosure() {\n  let cmdCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  class Cmd {\n    constructor(cmd) {\n      if (\n        (typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n        typeof cmd !== \"string\"\n      ) {\n        unreachable('Cmd: The \"cmd\" must be a string.');\n      }\n      this.cmd = cmd;\n    }\n\n    static get(cmd) {\n      const cmdValue = cmdCache[cmd];\n      // eslint-disable-next-line no-restricted-syntax\n      return cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd));\n    }\n\n    static _clearCache() {\n      cmdCache = Object.create(null);\n    }\n  }\n\n  return Cmd;\n})();\n\nconst nonSerializable = function nonSerializableClosure() {\n  return nonSerializable; // Creating closure on some variable.\n};\n\nclass Dict {\n  constructor(xref = null) {\n    // Map should only be used internally, use functions below to access.\n    this._map = Object.create(null);\n    this.xref = xref;\n    this.objId = null;\n    this.suppressEncryption = false;\n    this.__nonSerializable__ = nonSerializable; // Disable cloning of the Dict.\n  }\n\n  assignXref(newXref) {\n    this.xref = newXref;\n  }\n\n  get size() {\n    return Object.keys(this._map).length;\n  }\n\n  // Automatically dereferences Ref objects.\n  get(key1, key2, key3) {\n    let value = this._map[key1];\n    if (value === undefined && key2 !== undefined) {\n      if (\n        (typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n        key2.length < key1.length\n      ) {\n        unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n      }\n      value = this._map[key2];\n      if (value === undefined && key3 !== undefined) {\n        if (\n          (typeof PDFJSDev === \"undefined\" ||\n            PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n          key3.length < key2.length\n        ) {\n          unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n        }\n        value = this._map[key3];\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      return this.xref.fetch(value, this.suppressEncryption);\n    }\n    return value;\n  }\n\n  // Same as get(), but returns a promise and uses fetchIfRefAsync().\n  async getAsync(key1, key2, key3) {\n    let value = this._map[key1];\n    if (value === undefined && key2 !== undefined) {\n      if (\n        (typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n        key2.length < key1.length\n      ) {\n        unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n      }\n      value = this._map[key2];\n      if (value === undefined && key3 !== undefined) {\n        if (\n          (typeof PDFJSDev === \"undefined\" ||\n            PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n          key3.length < key2.length\n        ) {\n          unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n        }\n        value = this._map[key3];\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      return this.xref.fetchAsync(value, this.suppressEncryption);\n    }\n    return value;\n  }\n\n  // Same as get(), but dereferences all elements if the result is an Array.\n  getArray(key1, key2, key3) {\n    let value = this._map[key1];\n    if (value === undefined && key2 !== undefined) {\n      if (\n        (typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n        key2.length < key1.length\n      ) {\n        unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n      }\n      value = this._map[key2];\n      if (value === undefined && key3 !== undefined) {\n        if (\n          (typeof PDFJSDev === \"undefined\" ||\n            PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n          key3.length < key2.length\n        ) {\n          unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n        }\n        value = this._map[key3];\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      value = this.xref.fetch(value, this.suppressEncryption);\n    }\n\n    if (Array.isArray(value)) {\n      value = value.slice(); // Ensure that we don't modify the Dict data.\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        if (value[i] instanceof Ref && this.xref) {\n          value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n        }\n      }\n    }\n    return value;\n  }\n\n  // No dereferencing.\n  getRaw(key) {\n    return this._map[key];\n  }\n\n  getKeys() {\n    return Object.keys(this._map);\n  }\n\n  // No dereferencing.\n  getRawValues() {\n    return Object.values(this._map);\n  }\n\n  set(key, value) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      if (typeof key !== \"string\") {\n        unreachable('Dict.set: The \"key\" must be a string.');\n      } else if (value === undefined) {\n        unreachable('Dict.set: The \"value\" cannot be undefined.');\n      }\n    }\n    this._map[key] = value;\n  }\n\n  has(key) {\n    return this._map[key] !== undefined;\n  }\n\n  forEach(callback) {\n    for (const key in this._map) {\n      callback(key, this.get(key));\n    }\n  }\n\n  static get empty() {\n    const emptyDict = new Dict(null);\n\n    emptyDict.set = (key, value) => {\n      unreachable(\"Should not call `set` on the empty dictionary.\");\n    };\n    return shadow(this, \"empty\", emptyDict);\n  }\n\n  static merge({ xref, dictArray, mergeSubDicts = false }) {\n    const mergedDict = new Dict(xref),\n      properties = new Map();\n\n    for (const dict of dictArray) {\n      if (!(dict instanceof Dict)) {\n        continue;\n      }\n      for (const [key, value] of Object.entries(dict._map)) {\n        let property = properties.get(key);\n        if (property === undefined) {\n          property = [];\n          properties.set(key, property);\n        } else if (!mergeSubDicts || !(value instanceof Dict)) {\n          // Ignore additional entries, if either:\n          //  - This is a \"shallow\" merge, where only the first element matters.\n          //  - The value is *not* a `Dict`, since other types cannot be merged.\n          continue;\n        }\n        property.push(value);\n      }\n    }\n    for (const [name, values] of properties) {\n      if (values.length === 1 || !(values[0] instanceof Dict)) {\n        mergedDict._map[name] = values[0];\n        continue;\n      }\n      const subDict = new Dict(xref);\n\n      for (const dict of values) {\n        for (const [key, value] of Object.entries(dict._map)) {\n          if (subDict._map[key] === undefined) {\n            subDict._map[key] = value;\n          }\n        }\n      }\n      if (subDict.size > 0) {\n        mergedDict._map[name] = subDict;\n      }\n    }\n    properties.clear();\n\n    return mergedDict.size > 0 ? mergedDict : Dict.empty;\n  }\n}\n\nconst Ref = (function RefClosure() {\n  let refCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  class Ref {\n    constructor(num, gen) {\n      this.num = num;\n      this.gen = gen;\n    }\n\n    toString() {\n      // This function is hot, so we make the string as compact as possible.\n      // |this.gen| is almost always zero, so we treat that case specially.\n      if (this.gen === 0) {\n        return `${this.num}R`;\n      }\n      return `${this.num}R${this.gen}`;\n    }\n\n    static get(num, gen) {\n      const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n      const refValue = refCache[key];\n      // eslint-disable-next-line no-restricted-syntax\n      return refValue ? refValue : (refCache[key] = new Ref(num, gen));\n    }\n\n    static _clearCache() {\n      refCache = Object.create(null);\n    }\n  }\n\n  return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n  constructor(parent = null) {\n    if (\n      (typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n      parent &&\n      !(parent instanceof RefSet)\n    ) {\n      unreachable('RefSet: Invalid \"parent\" value.');\n    }\n    this._set = new Set(parent && parent._set);\n  }\n\n  has(ref) {\n    return this._set.has(ref.toString());\n  }\n\n  put(ref) {\n    this._set.add(ref.toString());\n  }\n\n  remove(ref) {\n    this._set.delete(ref.toString());\n  }\n\n  forEach(callback) {\n    for (const ref of this._set.values()) {\n      callback(ref);\n    }\n  }\n\n  clear() {\n    this._set.clear();\n  }\n}\n\nclass RefSetCache {\n  constructor() {\n    this._map = new Map();\n  }\n\n  get size() {\n    return this._map.size;\n  }\n\n  get(ref) {\n    return this._map.get(ref.toString());\n  }\n\n  has(ref) {\n    return this._map.has(ref.toString());\n  }\n\n  put(ref, obj) {\n    this._map.set(ref.toString(), obj);\n  }\n\n  putAlias(ref, aliasRef) {\n    this._map.set(ref.toString(), this.get(aliasRef));\n  }\n\n  forEach(callback) {\n    for (const value of this._map.values()) {\n      callback(value);\n    }\n  }\n\n  clear() {\n    this._map.clear();\n  }\n}\n\nfunction isName(v, name) {\n  return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n  return (\n    v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n  );\n}\n\nfunction isRefsEqual(v1, v2) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      v1 instanceof Ref && v2 instanceof Ref,\n      \"isRefsEqual: Both parameters should be `Ref`s.\"\n    );\n  }\n  return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction clearPrimitiveCaches() {\n  Cmd._clearCache();\n  Name._clearCache();\n  Ref._clearCache();\n}\n\nexport {\n  CIRCULAR_REF,\n  clearPrimitiveCaches,\n  Cmd,\n  Dict,\n  EOF,\n  isCmd,\n  isDict,\n  isName,\n  isRefsEqual,\n  Name,\n  Ref,\n  RefSet,\n  RefSetCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createValidAbsoluteUrl, unreachable, warn } from \"../shared/util.js\";\nimport { ChunkedStreamManager } from \"./chunked_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { PDFDocument } from \"./document.js\";\nimport { Stream } from \"./stream.js\";\n\nfunction parseDocBaseUrl(url) {\n  if (url) {\n    const absoluteUrl = createValidAbsoluteUrl(url);\n    if (absoluteUrl) {\n      return absoluteUrl.href;\n    }\n    warn(`Invalid absolute docBaseUrl: \"${url}\".`);\n  }\n  return null;\n}\n\nclass BasePdfManager {\n  constructor() {\n    if (this.constructor === BasePdfManager) {\n      unreachable(\"Cannot initialize BasePdfManager.\");\n    }\n  }\n\n  get docId() {\n    return this._docId;\n  }\n\n  get password() {\n    return this._password;\n  }\n\n  get docBaseUrl() {\n    return this._docBaseUrl;\n  }\n\n  onLoadedStream() {\n    unreachable(\"Abstract method `onLoadedStream` called\");\n  }\n\n  ensureDoc(prop, args) {\n    return this.ensure(this.pdfDocument, prop, args);\n  }\n\n  ensureXRef(prop, args) {\n    return this.ensure(this.pdfDocument.xref, prop, args);\n  }\n\n  ensureCatalog(prop, args) {\n    return this.ensure(this.pdfDocument.catalog, prop, args);\n  }\n\n  getPage(pageIndex) {\n    return this.pdfDocument.getPage(pageIndex);\n  }\n\n  fontFallback(id, handler) {\n    return this.pdfDocument.fontFallback(id, handler);\n  }\n\n  loadXfaFonts(handler, task) {\n    return this.pdfDocument.loadXfaFonts(handler, task);\n  }\n\n  loadXfaImages() {\n    return this.pdfDocument.loadXfaImages();\n  }\n\n  serializeXfaData(annotationStorage) {\n    return this.pdfDocument.serializeXfaData(annotationStorage);\n  }\n\n  cleanup(manuallyTriggered = false) {\n    return this.pdfDocument.cleanup(manuallyTriggered);\n  }\n\n  async ensure(obj, prop, args) {\n    unreachable(\"Abstract method `ensure` called\");\n  }\n\n  requestRange(begin, end) {\n    unreachable(\"Abstract method `requestRange` called\");\n  }\n\n  requestLoadedStream() {\n    unreachable(\"Abstract method `requestLoadedStream` called\");\n  }\n\n  sendProgressiveData(chunk) {\n    unreachable(\"Abstract method `sendProgressiveData` called\");\n  }\n\n  updatePassword(password) {\n    this._password = password;\n  }\n\n  terminate(reason) {\n    unreachable(\"Abstract method `terminate` called\");\n  }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n  constructor(\n    docId,\n    data,\n    password,\n    msgHandler,\n    evaluatorOptions,\n    enableXfa,\n    docBaseUrl\n  ) {\n    super();\n\n    this._docId = docId;\n    this._password = password;\n    this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n    this.msgHandler = msgHandler;\n    this.evaluatorOptions = evaluatorOptions;\n    this.enableXfa = enableXfa;\n\n    const stream = new Stream(data);\n    this.pdfDocument = new PDFDocument(this, stream);\n    this._loadedStreamPromise = Promise.resolve(stream);\n  }\n\n  async ensure(obj, prop, args) {\n    const value = obj[prop];\n    if (typeof value === \"function\") {\n      return value.apply(obj, args);\n    }\n    return value;\n  }\n\n  requestRange(begin, end) {\n    return Promise.resolve();\n  }\n\n  requestLoadedStream() {}\n\n  onLoadedStream() {\n    return this._loadedStreamPromise;\n  }\n\n  terminate(reason) {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n  constructor(\n    docId,\n    pdfNetworkStream,\n    args,\n    evaluatorOptions,\n    enableXfa,\n    docBaseUrl\n  ) {\n    super();\n\n    this._docId = docId;\n    this._password = args.password;\n    this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n    this.msgHandler = args.msgHandler;\n    this.evaluatorOptions = evaluatorOptions;\n    this.enableXfa = enableXfa;\n\n    this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n      msgHandler: args.msgHandler,\n      length: args.length,\n      disableAutoFetch: args.disableAutoFetch,\n      rangeChunkSize: args.rangeChunkSize,\n    });\n    this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n  }\n\n  async ensure(obj, prop, args) {\n    try {\n      const value = obj[prop];\n      if (typeof value === \"function\") {\n        return value.apply(obj, args);\n      }\n      return value;\n    } catch (ex) {\n      if (!(ex instanceof MissingDataException)) {\n        throw ex;\n      }\n      await this.requestRange(ex.begin, ex.end);\n      return this.ensure(obj, prop, args);\n    }\n  }\n\n  requestRange(begin, end) {\n    return this.streamManager.requestRange(begin, end);\n  }\n\n  requestLoadedStream() {\n    this.streamManager.requestAllChunks();\n  }\n\n  sendProgressiveData(chunk) {\n    this.streamManager.onReceiveData({ chunk });\n  }\n\n  onLoadedStream() {\n    return this.streamManager.onLoadedStream();\n  }\n\n  terminate(reason) {\n    this.streamManager.abort(reason);\n  }\n}\n\nexport { LocalPdfManager, NetworkPdfManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  arrayByteLength,\n  arraysToBytes,\n  createPromiseCapability,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nclass ChunkedStream extends Stream {\n  constructor(length, chunkSize, manager) {\n    super(\n      /* arrayBuffer = */ new Uint8Array(length),\n      /* start = */ 0,\n      /* length = */ length,\n      /* dict = */ null\n    );\n\n    this.chunkSize = chunkSize;\n    this._loadedChunks = new Set();\n    this.numChunks = Math.ceil(length / chunkSize);\n    this.manager = manager;\n    this.progressiveDataLength = 0;\n    this.lastSuccessfulEnsureByteChunk = -1; // Single-entry cache\n  }\n\n  // If a particular stream does not implement one or more of these methods,\n  // an error should be thrown.\n  getMissingChunks() {\n    const chunks = [];\n    for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n      if (!this._loadedChunks.has(chunk)) {\n        chunks.push(chunk);\n      }\n    }\n    return chunks;\n  }\n\n  get numChunksLoaded() {\n    return this._loadedChunks.size;\n  }\n\n  get isDataLoaded() {\n    return this.numChunksLoaded === this.numChunks;\n  }\n\n  onReceiveData(begin, chunk) {\n    const chunkSize = this.chunkSize;\n    if (begin % chunkSize !== 0) {\n      throw new Error(`Bad begin offset: ${begin}`);\n    }\n\n    // Using `this.length` is inaccurate here since `this.start` can be moved\n    // (see the `moveStart` method).\n    const end = begin + chunk.byteLength;\n    if (end % chunkSize !== 0 && end !== this.bytes.length) {\n      throw new Error(`Bad end offset: ${end}`);\n    }\n\n    this.bytes.set(new Uint8Array(chunk), begin);\n    const beginChunk = Math.floor(begin / chunkSize);\n    const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // Since a value can only occur *once* in a `Set`, there's no need to\n      // manually check `Set.prototype.has()` before adding the value here.\n      this._loadedChunks.add(curChunk);\n    }\n  }\n\n  onReceiveProgressiveData(data) {\n    let position = this.progressiveDataLength;\n    const beginChunk = Math.floor(position / this.chunkSize);\n\n    this.bytes.set(new Uint8Array(data), position);\n    position += data.byteLength;\n    this.progressiveDataLength = position;\n    const endChunk =\n      position >= this.end\n        ? this.numChunks\n        : Math.floor(position / this.chunkSize);\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // Since a value can only occur *once* in a `Set`, there's no need to\n      // manually check `Set.prototype.has()` before adding the value here.\n      this._loadedChunks.add(curChunk);\n    }\n  }\n\n  ensureByte(pos) {\n    if (pos < this.progressiveDataLength) {\n      return;\n    }\n\n    const chunk = Math.floor(pos / this.chunkSize);\n    if (chunk > this.numChunks) {\n      return;\n    }\n    if (chunk === this.lastSuccessfulEnsureByteChunk) {\n      return;\n    }\n\n    if (!this._loadedChunks.has(chunk)) {\n      throw new MissingDataException(pos, pos + 1);\n    }\n    this.lastSuccessfulEnsureByteChunk = chunk;\n  }\n\n  ensureRange(begin, end) {\n    if (begin >= end) {\n      return;\n    }\n    if (end <= this.progressiveDataLength) {\n      return;\n    }\n\n    const beginChunk = Math.floor(begin / this.chunkSize);\n    if (beginChunk > this.numChunks) {\n      return;\n    }\n    const endChunk = Math.min(\n      Math.floor((end - 1) / this.chunkSize) + 1,\n      this.numChunks\n    );\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      if (!this._loadedChunks.has(chunk)) {\n        throw new MissingDataException(begin, end);\n      }\n    }\n  }\n\n  nextEmptyChunk(beginChunk) {\n    const numChunks = this.numChunks;\n    for (let i = 0; i < numChunks; ++i) {\n      const chunk = (beginChunk + i) % numChunks; // Wrap around to beginning.\n      if (!this._loadedChunks.has(chunk)) {\n        return chunk;\n      }\n    }\n    return null;\n  }\n\n  hasChunk(chunk) {\n    return this._loadedChunks.has(chunk);\n  }\n\n  getByte() {\n    const pos = this.pos;\n    if (pos >= this.end) {\n      return -1;\n    }\n    if (pos >= this.progressiveDataLength) {\n      this.ensureByte(pos);\n    }\n    return this.bytes[this.pos++];\n  }\n\n  getBytes(length, forceClamped = false) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n\n    if (!length) {\n      if (strEnd > this.progressiveDataLength) {\n        this.ensureRange(pos, strEnd);\n      }\n      const subarray = bytes.subarray(pos, strEnd);\n      // `this.bytes` is always a `Uint8Array` here.\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    }\n\n    let end = pos + length;\n    if (end > strEnd) {\n      end = strEnd;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(pos, end);\n    }\n\n    this.pos = end;\n    const subarray = bytes.subarray(pos, end);\n    // `this.bytes` is always a `Uint8Array` here.\n    return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n  }\n\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n    if (end > this.end) {\n      end = this.end;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(begin, end);\n    }\n    return this.bytes.subarray(begin, end);\n  }\n\n  makeSubStream(start, length, dict = null) {\n    if (length) {\n      if (start + length > this.progressiveDataLength) {\n        this.ensureRange(start, start + length);\n      }\n    } else {\n      // When the `length` is undefined you do *not*, under any circumstances,\n      // want to fallback on calling `this.ensureRange(start, this.end)` since\n      // that would force the *entire* PDF file to be loaded, thus completely\n      // breaking the whole purpose of using streaming and/or range requests.\n      //\n      // However, not doing any checking here could very easily lead to wasted\n      // time/resources during e.g. parsing, since `MissingDataException`s will\n      // require data to be re-parsed, which we attempt to minimize by at least\n      // checking that the *beginning* of the data is available here.\n      if (start >= this.progressiveDataLength) {\n        this.ensureByte(start);\n      }\n    }\n\n    function ChunkedStreamSubstream() {}\n    ChunkedStreamSubstream.prototype = Object.create(this);\n    ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n      const chunkSize = this.chunkSize;\n      const beginChunk = Math.floor(this.start / chunkSize);\n      const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n      const missingChunks = [];\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!this._loadedChunks.has(chunk)) {\n          missingChunks.push(chunk);\n        }\n      }\n      return missingChunks;\n    };\n    Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n      get() {\n        if (this.numChunksLoaded === this.numChunks) {\n          return true;\n        }\n        return this.getMissingChunks().length === 0;\n      },\n      configurable: true,\n    });\n\n    const subStream = new ChunkedStreamSubstream();\n    subStream.pos = subStream.start = start;\n    subStream.end = start + length || this.end;\n    subStream.dict = dict;\n    return subStream;\n  }\n\n  getBaseStreams() {\n    return [this];\n  }\n}\n\nclass ChunkedStreamManager {\n  constructor(pdfNetworkStream, args) {\n    this.length = args.length;\n    this.chunkSize = args.rangeChunkSize;\n    this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n    this.pdfNetworkStream = pdfNetworkStream;\n    this.disableAutoFetch = args.disableAutoFetch;\n    this.msgHandler = args.msgHandler;\n\n    this.currRequestId = 0;\n\n    this._chunksNeededByRequest = new Map();\n    this._requestsByChunk = new Map();\n    this._promisesByRequest = new Map();\n    this.progressiveDataLength = 0;\n    this.aborted = false;\n\n    this._loadedStreamCapability = createPromiseCapability();\n  }\n\n  onLoadedStream() {\n    return this._loadedStreamCapability.promise;\n  }\n\n  sendRequest(begin, end) {\n    const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n    if (!rangeReader.isStreamingSupported) {\n      rangeReader.onProgress = this.onProgress.bind(this);\n    }\n\n    let chunks = [],\n      loaded = 0;\n    return new Promise((resolve, reject) => {\n      const readChunk = chunk => {\n        try {\n          if (!chunk.done) {\n            const data = chunk.value;\n            chunks.push(data);\n            loaded += arrayByteLength(data);\n            if (rangeReader.isStreamingSupported) {\n              this.onProgress({ loaded });\n            }\n            rangeReader.read().then(readChunk, reject);\n            return;\n          }\n          const chunkData = arraysToBytes(chunks);\n          chunks = null;\n          resolve(chunkData);\n        } catch (e) {\n          reject(e);\n        }\n      };\n      rangeReader.read().then(readChunk, reject);\n    }).then(data => {\n      if (this.aborted) {\n        return; // Ignoring any data after abort.\n      }\n      this.onReceiveData({ chunk: data, begin });\n    });\n  }\n\n  /**\n   * Get all the chunks that are not yet loaded and group them into\n   * contiguous ranges to load in as few requests as possible.\n   */\n  requestAllChunks() {\n    const missingChunks = this.stream.getMissingChunks();\n    this._requestChunks(missingChunks);\n    return this._loadedStreamCapability.promise;\n  }\n\n  _requestChunks(chunks) {\n    const requestId = this.currRequestId++;\n\n    const chunksNeeded = new Set();\n    this._chunksNeededByRequest.set(requestId, chunksNeeded);\n    for (const chunk of chunks) {\n      if (!this.stream.hasChunk(chunk)) {\n        chunksNeeded.add(chunk);\n      }\n    }\n\n    if (chunksNeeded.size === 0) {\n      return Promise.resolve();\n    }\n\n    const capability = createPromiseCapability();\n    this._promisesByRequest.set(requestId, capability);\n\n    const chunksToRequest = [];\n    for (const chunk of chunksNeeded) {\n      let requestIds = this._requestsByChunk.get(chunk);\n      if (!requestIds) {\n        requestIds = [];\n        this._requestsByChunk.set(chunk, requestIds);\n\n        chunksToRequest.push(chunk);\n      }\n      requestIds.push(requestId);\n    }\n\n    if (chunksToRequest.length > 0) {\n      const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n      for (const groupedChunk of groupedChunksToRequest) {\n        const begin = groupedChunk.beginChunk * this.chunkSize;\n        const end = Math.min(\n          groupedChunk.endChunk * this.chunkSize,\n          this.length\n        );\n        this.sendRequest(begin, end).catch(capability.reject);\n      }\n    }\n\n    return capability.promise.catch(reason => {\n      if (this.aborted) {\n        return; // Ignoring any pending requests after abort.\n      }\n      throw reason;\n    });\n  }\n\n  getStream() {\n    return this.stream;\n  }\n\n  /**\n   * Loads any chunks in the requested range that are not yet loaded.\n   */\n  requestRange(begin, end) {\n    end = Math.min(end, this.length);\n\n    const beginChunk = this.getBeginChunk(begin);\n    const endChunk = this.getEndChunk(end);\n\n    const chunks = [];\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      chunks.push(chunk);\n    }\n    return this._requestChunks(chunks);\n  }\n\n  requestRanges(ranges = []) {\n    const chunksToRequest = [];\n    for (const range of ranges) {\n      const beginChunk = this.getBeginChunk(range.begin);\n      const endChunk = this.getEndChunk(range.end);\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!chunksToRequest.includes(chunk)) {\n          chunksToRequest.push(chunk);\n        }\n      }\n    }\n\n    chunksToRequest.sort(function (a, b) {\n      return a - b;\n    });\n    return this._requestChunks(chunksToRequest);\n  }\n\n  /**\n   * Groups a sorted array of chunks into as few contiguous larger\n   * chunks as possible.\n   */\n  groupChunks(chunks) {\n    const groupedChunks = [];\n    let beginChunk = -1;\n    let prevChunk = -1;\n\n    for (let i = 0, ii = chunks.length; i < ii; ++i) {\n      const chunk = chunks[i];\n      if (beginChunk < 0) {\n        beginChunk = chunk;\n      }\n\n      if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n        groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\n        beginChunk = chunk;\n      }\n      if (i + 1 === chunks.length) {\n        groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\n      }\n\n      prevChunk = chunk;\n    }\n    return groupedChunks;\n  }\n\n  onProgress(args) {\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n      total: this.length,\n    });\n  }\n\n  onReceiveData(args) {\n    const chunk = args.chunk;\n    const isProgressive = args.begin === undefined;\n    const begin = isProgressive ? this.progressiveDataLength : args.begin;\n    const end = begin + chunk.byteLength;\n\n    const beginChunk = Math.floor(begin / this.chunkSize);\n    const endChunk =\n      end < this.length\n        ? Math.floor(end / this.chunkSize)\n        : Math.ceil(end / this.chunkSize);\n\n    if (isProgressive) {\n      this.stream.onReceiveProgressiveData(chunk);\n      this.progressiveDataLength = end;\n    } else {\n      this.stream.onReceiveData(begin, chunk);\n    }\n\n    if (this.stream.isDataLoaded) {\n      this._loadedStreamCapability.resolve(this.stream);\n    }\n\n    const loadedRequests = [];\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // The server might return more chunks than requested.\n      const requestIds = this._requestsByChunk.get(curChunk);\n      if (!requestIds) {\n        continue;\n      }\n      this._requestsByChunk.delete(curChunk);\n\n      for (const requestId of requestIds) {\n        const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n        if (chunksNeeded.has(curChunk)) {\n          chunksNeeded.delete(curChunk);\n        }\n\n        if (chunksNeeded.size > 0) {\n          continue;\n        }\n        loadedRequests.push(requestId);\n      }\n    }\n\n    // If there are no pending requests, automatically fetch the next\n    // unfetched chunk of the PDF file.\n    if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n      let nextEmptyChunk;\n      if (this.stream.numChunksLoaded === 1) {\n        // This is a special optimization so that after fetching the first\n        // chunk, rather than fetching the second chunk, we fetch the last\n        // chunk.\n        const lastChunk = this.stream.numChunks - 1;\n        if (!this.stream.hasChunk(lastChunk)) {\n          nextEmptyChunk = lastChunk;\n        }\n      } else {\n        nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n      }\n      if (Number.isInteger(nextEmptyChunk)) {\n        this._requestChunks([nextEmptyChunk]);\n      }\n    }\n\n    for (const requestId of loadedRequests) {\n      const capability = this._promisesByRequest.get(requestId);\n      this._promisesByRequest.delete(requestId);\n      capability.resolve();\n    }\n\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize,\n      total: this.length,\n    });\n  }\n\n  onError(err) {\n    this._loadedStreamCapability.reject(err);\n  }\n\n  getBeginChunk(begin) {\n    return Math.floor(begin / this.chunkSize);\n  }\n\n  getEndChunk(end) {\n    return Math.floor((end - 1) / this.chunkSize) + 1;\n  }\n\n  abort(reason) {\n    this.aborted = true;\n    if (this.pdfNetworkStream) {\n      this.pdfNetworkStream.cancelAllRequests(reason);\n    }\n    for (const capability of this._promisesByRequest.values()) {\n      capability.reject(reason);\n    }\n  }\n}\n\nexport { ChunkedStream, ChunkedStreamManager };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  BaseException,\n  FontType,\n  objectSize,\n  StreamType,\n  stringToPDFString,\n  warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\n\nfunction getLookupTableFactory(initializer) {\n  let lookup;\n  return function () {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n    return lookup;\n  };\n}\n\nfunction getArrayLookupTableFactory(initializer) {\n  let lookup;\n  return function () {\n    if (initializer) {\n      let arr = initializer();\n      initializer = null;\n      lookup = Object.create(null);\n      for (let i = 0, ii = arr.length; i < ii; i += 2) {\n        lookup[arr[i]] = arr[i + 1];\n      }\n      arr = null;\n    }\n    return lookup;\n  };\n}\n\nclass MissingDataException extends BaseException {\n  constructor(begin, end) {\n    super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n    this.begin = begin;\n    this.end = end;\n  }\n}\n\nclass ParserEOFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"ParserEOFException\");\n  }\n}\n\nclass XRefEntryException extends BaseException {\n  constructor(msg) {\n    super(msg, \"XRefEntryException\");\n  }\n}\n\nclass XRefParseException extends BaseException {\n  constructor(msg) {\n    super(msg, \"XRefParseException\");\n  }\n}\n\nclass DocStats {\n  constructor(handler) {\n    this._handler = handler;\n\n    this._streamTypes = new Set();\n    this._fontTypes = new Set();\n  }\n\n  _send() {\n    const streamTypes = Object.create(null),\n      fontTypes = Object.create(null);\n    for (const type of this._streamTypes) {\n      streamTypes[type] = true;\n    }\n    for (const type of this._fontTypes) {\n      fontTypes[type] = true;\n    }\n    this._handler.send(\"DocStats\", { streamTypes, fontTypes });\n  }\n\n  addStreamType(type) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(StreamType[type] === type, 'addStreamType: Invalid \"type\" value.');\n    }\n    if (this._streamTypes.has(type)) {\n      return;\n    }\n    this._streamTypes.add(type);\n    this._send();\n  }\n\n  addFontType(type) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(FontType[type] === type, 'addFontType: Invalid \"type\" value.');\n    }\n    if (this._fontTypes.has(type)) {\n      return;\n    }\n    this._fontTypes.add(type);\n    this._send();\n  }\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n *   array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n *   the key is found. If set to `false`, we always walk up the entire parent\n *   chain, for example to be able to find `\\Resources` placed on multiple\n *   levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n  dict,\n  key,\n  getArray = false,\n  stopWhenFound = true,\n}) {\n  let values;\n  const visited = new RefSet();\n\n  while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n    if (dict.objId) {\n      visited.put(dict.objId);\n    }\n    const value = getArray ? dict.getArray(key) : dict.get(key);\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n      if (!values) {\n        values = [];\n      }\n      values.push(value);\n    }\n    dict = dict.get(\"Parent\");\n  }\n  return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n  \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n  \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n  \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n *   to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n  assert(\n    Number.isInteger(number) && number > 0,\n    \"The number should be a positive integer.\"\n  );\n  const romanBuf = [];\n  let pos;\n  // Thousands\n  while (number >= 1000) {\n    number -= 1000;\n    romanBuf.push(\"M\");\n  }\n  // Hundreds\n  pos = (number / 100) | 0;\n  number %= 100;\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n  // Tens\n  pos = (number / 10) | 0;\n  number %= 10;\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n  // Ones\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); // eslint-disable-line unicorn/no-array-push-push\n\n  const romanStr = romanBuf.join(\"\");\n  return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n  if (x <= 0) {\n    return 0;\n  }\n  return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n  return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n  return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n  return (\n    ((data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]) >>>\n    0\n  );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/**\n * AcroForm field names use an array like notation to refer to\n * repeated XFA elements e.g. foo.bar[nnn].\n * see: XFA Spec Chapter 3 - Repeated Elements\n *\n * @param {string} path - XFA path name.\n * @returns {Array} - Array of Objects with the name and pos of\n * each part of the path.\n */\nfunction parseXFAPath(path) {\n  const positionPattern = /(.+)\\[(\\d+)\\]$/;\n  return path.split(\".\").map(component => {\n    const m = component.match(positionPattern);\n    if (m) {\n      return { name: m[1], pos: parseInt(m[2], 10) };\n    }\n    return { name: component, pos: 0 };\n  });\n}\n\nfunction escapePDFName(str) {\n  const buffer = [];\n  let start = 0;\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    // Whitespace or delimiters aren't regular chars, so escape them.\n    if (\n      char < 0x21 ||\n      char > 0x7e ||\n      char === 0x23 /* # */ ||\n      char === 0x28 /* ( */ ||\n      char === 0x29 /* ) */ ||\n      char === 0x3c /* < */ ||\n      char === 0x3e /* > */ ||\n      char === 0x5b /* [ */ ||\n      char === 0x5d /* ] */ ||\n      char === 0x7b /* { */ ||\n      char === 0x7d /* } */ ||\n      char === 0x2f /* / */ ||\n      char === 0x25 /* % */\n    ) {\n      if (start < i) {\n        buffer.push(str.substring(start, i));\n      }\n      buffer.push(`#${char.toString(16)}`);\n      start = i + 1;\n    }\n  }\n\n  if (buffer.length === 0) {\n    return str;\n  }\n\n  if (start < str.length) {\n    buffer.push(str.substring(start, str.length));\n  }\n\n  return buffer.join(\"\");\n}\n\nfunction _collectJS(entry, xref, list, parents) {\n  if (!entry) {\n    return;\n  }\n\n  let parent = null;\n  if (entry instanceof Ref) {\n    if (parents.has(entry)) {\n      // If we've already found entry then we've a cycle.\n      return;\n    }\n    parent = entry;\n    parents.put(parent);\n    entry = xref.fetch(entry);\n  }\n  if (Array.isArray(entry)) {\n    for (const element of entry) {\n      _collectJS(element, xref, list, parents);\n    }\n  } else if (entry instanceof Dict) {\n    if (isName(entry.get(\"S\"), \"JavaScript\")) {\n      const js = entry.get(\"JS\");\n      let code;\n      if (js instanceof BaseStream) {\n        code = js.getString();\n      } else if (typeof js === \"string\") {\n        code = js;\n      }\n      code = code && stringToPDFString(code);\n      if (code) {\n        list.push(code);\n      }\n    }\n    _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n  }\n\n  if (parent) {\n    parents.remove(parent);\n  }\n}\n\nfunction collectActions(xref, dict, eventType) {\n  const actions = Object.create(null);\n  const additionalActionsDicts = getInheritableProperty({\n    dict,\n    key: \"AA\",\n    stopWhenFound: false,\n  });\n  if (additionalActionsDicts) {\n    // additionalActionsDicts contains dicts from ancestors\n    // as they're found in the tree from bottom to top.\n    // So the dicts are visited in reverse order to guarantee\n    // that actions from elder ancestors will be overwritten\n    // by ones from younger ancestors.\n    for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n      const additionalActions = additionalActionsDicts[i];\n      if (!(additionalActions instanceof Dict)) {\n        continue;\n      }\n      for (const key of additionalActions.getKeys()) {\n        const action = eventType[key];\n        if (!action) {\n          continue;\n        }\n        const actionDict = additionalActions.getRaw(key);\n        const parents = new RefSet();\n        const list = [];\n        _collectJS(actionDict, xref, list, parents);\n        if (list.length > 0) {\n          actions[action] = list;\n        }\n      }\n    }\n  }\n  // Collect the Action if any (we may have one on pushbutton).\n  if (dict.has(\"A\")) {\n    const actionDict = dict.get(\"A\");\n    const parents = new RefSet();\n    const list = [];\n    _collectJS(actionDict, xref, list, parents);\n    if (list.length > 0) {\n      actions.Action = list;\n    }\n  }\n  return objectSize(actions) > 0 ? actions : null;\n}\n\nconst XMLEntities = {\n  /* < */ 0x3c: \"&lt;\",\n  /* > */ 0x3e: \"&gt;\",\n  /* & */ 0x26: \"&amp;\",\n  /* \" */ 0x22: \"&quot;\",\n  /* ' */ 0x27: \"&apos;\",\n};\n\nfunction encodeToXmlString(str) {\n  const buffer = [];\n  let start = 0;\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.codePointAt(i);\n    if (0x20 <= char && char <= 0x7e) {\n      // ascii\n      const entity = XMLEntities[char];\n      if (entity) {\n        if (start < i) {\n          buffer.push(str.substring(start, i));\n        }\n        buffer.push(entity);\n        start = i + 1;\n      }\n    } else {\n      if (start < i) {\n        buffer.push(str.substring(start, i));\n      }\n      buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n      if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n        // char is represented by two u16\n        i++;\n      }\n      start = i + 1;\n    }\n  }\n\n  if (buffer.length === 0) {\n    return str;\n  }\n  if (start < str.length) {\n    buffer.push(str.substring(start, str.length));\n  }\n  return buffer.join(\"\");\n}\n\nfunction validateCSSFont(cssFontInfo) {\n  // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.\n  const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n  // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.\n  const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n  const CSS_FONT_WEIGHT_VALUES = new Set([\n    \"100\",\n    \"200\",\n    \"300\",\n    \"400\",\n    \"500\",\n    \"600\",\n    \"700\",\n    \"800\",\n    \"900\",\n    \"1000\",\n    \"normal\",\n    \"bold\",\n    \"bolder\",\n    \"lighter\",\n  ]);\n\n  const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\n\n  // See https://developer.mozilla.org/en-US/docs/Web/CSS/string.\n  if (/^\".*\"$/.test(fontFamily)) {\n    if (/[^\\\\]\"/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n      warn(`XFA - FontFamily contains some unescaped \": ${fontFamily}.`);\n      return false;\n    }\n  } else if (/^'.*'$/.test(fontFamily)) {\n    if (/[^\\\\]'/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n      warn(`XFA - FontFamily contains some unescaped ': ${fontFamily}.`);\n      return false;\n    }\n  } else {\n    // See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.\n    for (const ident of fontFamily.split(/[ \\t]+/)) {\n      if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n        warn(\n          `XFA - FontFamily contains some invalid <custom-ident>: ${fontFamily}.`\n        );\n        return false;\n      }\n    }\n  }\n\n  const weight = fontWeight ? fontWeight.toString() : \"\";\n  cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\n    ? weight\n    : DEFAULT_CSS_FONT_WEIGHT;\n\n  const angle = parseFloat(italicAngle);\n  cssFontInfo.italicAngle =\n    isNaN(angle) || angle < -90 || angle > 90\n      ? DEFAULT_CSS_FONT_OBLIQUE\n      : italicAngle.toString();\n\n  return true;\n}\n\nfunction recoverJsURL(str) {\n  // Attempt to recover valid URLs from `JS` entries with certain\n  // white-listed formats:\n  //  - window.open('http://example.com')\n  //  - app.launchURL('http://example.com', true)\n  //  - xfa.host.gotoURL('http://example.com')\n  const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n  const regex = new RegExp(\n    \"^\\\\s*(\" +\n      URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") +\n      \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n    \"i\"\n  );\n\n  const jsUrl = regex.exec(str);\n  if (jsUrl && jsUrl[2]) {\n    const url = jsUrl[2];\n    let newWindow = false;\n\n    if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n      newWindow = true;\n    }\n    return { url, newWindow };\n  }\n\n  return null;\n}\n\nexport {\n  collectActions,\n  DocStats,\n  encodeToXmlString,\n  escapePDFName,\n  getArrayLookupTableFactory,\n  getInheritableProperty,\n  getLookupTableFactory,\n  isWhiteSpace,\n  log2,\n  MissingDataException,\n  ParserEOFException,\n  parseXFAPath,\n  readInt8,\n  readUint16,\n  readUint32,\n  recoverJsURL,\n  toRomanNumerals,\n  validateCSSFont,\n  XRefEntryException,\n  XRefParseException,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, shadow, unreachable } from \"../shared/util.js\";\n\nclass BaseStream {\n  constructor() {\n    if (this.constructor === BaseStream) {\n      unreachable(\"Cannot initialize BaseStream.\");\n    }\n  }\n\n  // eslint-disable-next-line getter-return\n  get length() {\n    unreachable(\"Abstract getter `length` accessed\");\n  }\n\n  // eslint-disable-next-line getter-return\n  get isEmpty() {\n    unreachable(\"Abstract getter `isEmpty` accessed\");\n  }\n\n  get isDataLoaded() {\n    return shadow(this, \"isDataLoaded\", true);\n  }\n\n  getByte() {\n    unreachable(\"Abstract method `getByte` called\");\n  }\n\n  getBytes(length, forceClamped = false) {\n    unreachable(\"Abstract method `getBytes` called\");\n  }\n\n  peekByte() {\n    const peekedByte = this.getByte();\n    if (peekedByte !== -1) {\n      this.pos--;\n    }\n    return peekedByte;\n  }\n\n  peekBytes(length, forceClamped = false) {\n    const bytes = this.getBytes(length, forceClamped);\n    this.pos -= bytes.length;\n    return bytes;\n  }\n\n  getUint16() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    if (b0 === -1 || b1 === -1) {\n      return -1;\n    }\n    return (b0 << 8) + b1;\n  }\n\n  getInt32() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    const b2 = this.getByte();\n    const b3 = this.getByte();\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  getByteRange(begin, end) {\n    unreachable(\"Abstract method `getByteRange` called\");\n  }\n\n  getString(length) {\n    return bytesToString(this.getBytes(length, /* forceClamped = */ false));\n  }\n\n  skip(n) {\n    this.pos += n || 1;\n  }\n\n  reset() {\n    unreachable(\"Abstract method `reset` called\");\n  }\n\n  moveStart() {\n    unreachable(\"Abstract method `moveStart` called\");\n  }\n\n  makeSubStream(start, length, dict = null) {\n    unreachable(\"Abstract method `makeSubStream` called\");\n  }\n\n  /**\n   * @returns {Array | null}\n   */\n  getBaseStreams() {\n    return null;\n  }\n}\n\nexport { BaseStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { stringToBytes } from \"../shared/util.js\";\n\nclass Stream extends BaseStream {\n  constructor(arrayBuffer, start, length, dict) {\n    super();\n\n    this.bytes =\n      arrayBuffer instanceof Uint8Array\n        ? arrayBuffer\n        : new Uint8Array(arrayBuffer);\n    this.start = start || 0;\n    this.pos = this.start;\n    this.end = start + length || this.bytes.length;\n    this.dict = dict;\n  }\n\n  get length() {\n    return this.end - this.start;\n  }\n\n  get isEmpty() {\n    return this.length === 0;\n  }\n\n  getByte() {\n    if (this.pos >= this.end) {\n      return -1;\n    }\n    return this.bytes[this.pos++];\n  }\n\n  getBytes(length, forceClamped = false) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n\n    if (!length) {\n      const subarray = bytes.subarray(pos, strEnd);\n      // `this.bytes` is always a `Uint8Array` here.\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    }\n    let end = pos + length;\n    if (end > strEnd) {\n      end = strEnd;\n    }\n    this.pos = end;\n    const subarray = bytes.subarray(pos, end);\n    // `this.bytes` is always a `Uint8Array` here.\n    return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n  }\n\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n    if (end > this.end) {\n      end = this.end;\n    }\n    return this.bytes.subarray(begin, end);\n  }\n\n  reset() {\n    this.pos = this.start;\n  }\n\n  moveStart() {\n    this.start = this.pos;\n  }\n\n  makeSubStream(start, length, dict = null) {\n    return new Stream(this.bytes.buffer, start, length, dict);\n  }\n}\n\nclass StringStream extends Stream {\n  constructor(str) {\n    super(stringToBytes(str));\n  }\n}\n\nclass NullStream extends Stream {\n  constructor() {\n    super(new Uint8Array(0));\n  }\n}\n\nexport { NullStream, Stream, StringStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isArrayEqual,\n  OPS,\n  PageActionEventType,\n  RenderingIntentFlag,\n  shadow,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  unreachable,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  collectActions,\n  getInheritableProperty,\n  isWhiteSpace,\n  MissingDataException,\n  validateCSSFont,\n  XRefEntryException,\n  XRefParseException,\n} from \"./core_utils.js\";\nimport { Dict, isName, Name, Ref } from \"./primitives.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { AnnotationFactory } from \"./annotation.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { Linearization } from \"./parser.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\nimport { StreamsSequenceStream } from \"./decode_stream.js\";\nimport { StructTreePage } from \"./struct_tree.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\nimport { XRef } from \"./xref.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nclass Page {\n  constructor({\n    pdfManager,\n    xref,\n    pageIndex,\n    pageDict,\n    ref,\n    globalIdFactory,\n    fontCache,\n    builtInCMapCache,\n    standardFontDataCache,\n    globalImageCache,\n    nonBlendModesSet,\n    xfaFactory,\n  }) {\n    this.pdfManager = pdfManager;\n    this.pageIndex = pageIndex;\n    this.pageDict = pageDict;\n    this.xref = xref;\n    this.ref = ref;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.standardFontDataCache = standardFontDataCache;\n    this.globalImageCache = globalImageCache;\n    this.nonBlendModesSet = nonBlendModesSet;\n    this.evaluatorOptions = pdfManager.evaluatorOptions;\n    this.resourcesPromise = null;\n    this.xfaFactory = xfaFactory;\n\n    const idCounters = {\n      obj: 0,\n    };\n    this._localIdFactory = class extends globalIdFactory {\n      static createObjId() {\n        return `p${pageIndex}_${++idCounters.obj}`;\n      }\n\n      static getPageObjId() {\n        return `page${ref.toString()}`;\n      }\n    };\n  }\n\n  /**\n   * @private\n   */\n  _getInheritableProperty(key, getArray = false) {\n    const value = getInheritableProperty({\n      dict: this.pageDict,\n      key,\n      getArray,\n      stopWhenFound: false,\n    });\n    if (!Array.isArray(value)) {\n      return value;\n    }\n    if (value.length === 1 || !(value[0] instanceof Dict)) {\n      return value[0];\n    }\n    return Dict.merge({ xref: this.xref, dictArray: value });\n  }\n\n  get content() {\n    return this.pageDict.getArray(\"Contents\");\n  }\n\n  get resources() {\n    // For robustness: The spec states that a \\Resources entry has to be\n    // present, but can be empty. Some documents still omit it; in this case\n    // we return an empty dictionary.\n    return shadow(\n      this,\n      \"resources\",\n      this._getInheritableProperty(\"Resources\") || Dict.empty\n    );\n  }\n\n  _getBoundingBox(name) {\n    if (this.xfaData) {\n      return this.xfaData.bbox;\n    }\n\n    const box = this._getInheritableProperty(name, /* getArray = */ true);\n\n    if (Array.isArray(box) && box.length === 4) {\n      if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        return box;\n      }\n      warn(`Empty /${name} entry.`);\n    }\n    return null;\n  }\n\n  get mediaBox() {\n    // Reset invalid media box to letter size.\n    return shadow(\n      this,\n      \"mediaBox\",\n      this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX\n    );\n  }\n\n  get cropBox() {\n    // Reset invalid crop box to media box.\n    return shadow(\n      this,\n      \"cropBox\",\n      this._getBoundingBox(\"CropBox\") || this.mediaBox\n    );\n  }\n\n  get userUnit() {\n    let obj = this.pageDict.get(\"UserUnit\");\n    if (typeof obj !== \"number\" || obj <= 0) {\n      obj = DEFAULT_USER_UNIT;\n    }\n    return shadow(this, \"userUnit\", obj);\n  }\n\n  get view() {\n    // From the spec, 6th ed., p.963:\n    // \"The crop, bleed, trim, and art boxes should not ordinarily\n    // extend beyond the boundaries of the media box. If they do, they are\n    // effectively reduced to their intersection with the media box.\"\n    const { cropBox, mediaBox } = this;\n    let view;\n    if (cropBox === mediaBox || isArrayEqual(cropBox, mediaBox)) {\n      view = mediaBox;\n    } else {\n      const box = Util.intersect(cropBox, mediaBox);\n      if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        view = box;\n      } else {\n        warn(\"Empty /CropBox and /MediaBox intersection.\");\n      }\n    }\n    return shadow(this, \"view\", view || mediaBox);\n  }\n\n  get rotate() {\n    let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n    // Normalize rotation so it's a multiple of 90 and between 0 and 270.\n    if (rotate % 90 !== 0) {\n      rotate = 0;\n    } else if (rotate >= 360) {\n      rotate %= 360;\n    } else if (rotate < 0) {\n      // The spec doesn't cover negatives. Assume it's counterclockwise\n      // rotation. The following is the other implementation of modulo.\n      rotate = ((rotate % 360) + 360) % 360;\n    }\n    return shadow(this, \"rotate\", rotate);\n  }\n\n  /**\n   * @private\n   */\n  _onSubStreamError(handler, reason, objId) {\n    if (this.evaluatorOptions.ignoreErrors) {\n      // Error(s) when reading one of the /Contents sub-streams -- sending\n      // unsupported feature notification and allow parsing to continue.\n      handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.errorContentSubStream,\n      });\n      warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n      return;\n    }\n    throw reason;\n  }\n\n  /**\n   * @returns {Promise<BaseStream>}\n   */\n  getContentStream(handler) {\n    return this.pdfManager.ensure(this, \"content\").then(content => {\n      if (content instanceof BaseStream) {\n        return content;\n      }\n      if (Array.isArray(content)) {\n        return new StreamsSequenceStream(\n          content,\n          this._onSubStreamError.bind(this, handler)\n        );\n      }\n      // Replace non-existent page content with empty content.\n      return new NullStream();\n    });\n  }\n\n  get xfaData() {\n    return shadow(\n      this,\n      \"xfaData\",\n      this.xfaFactory\n        ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) }\n        : null\n    );\n  }\n\n  save(handler, task, annotationStorage) {\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      standardFontDataCache: this.standardFontDataCache,\n      globalImageCache: this.globalImageCache,\n      options: this.evaluatorOptions,\n    });\n\n    // Fetch the page's annotations and save the content\n    // in case of interactive form fields.\n    return this._parsedAnnotations.then(function (annotations) {\n      const newRefsPromises = [];\n      for (const annotation of annotations) {\n        if (!annotation.mustBePrinted(annotationStorage)) {\n          continue;\n        }\n        newRefsPromises.push(\n          annotation\n            .save(partialEvaluator, task, annotationStorage)\n            .catch(function (reason) {\n              warn(\n                \"save - ignoring annotation data during \" +\n                  `\"${task.name}\" task: \"${reason}\".`\n              );\n              return null;\n            })\n        );\n      }\n\n      return Promise.all(newRefsPromises);\n    });\n  }\n\n  loadResources(keys) {\n    if (!this.resourcesPromise) {\n      // TODO: add async `_getInheritableProperty` and remove this.\n      this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n    }\n    return this.resourcesPromise.then(() => {\n      const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n      return objectLoader.load();\n    });\n  }\n\n  getOperatorList({\n    handler,\n    sink,\n    task,\n    intent,\n    cacheKey,\n    annotationStorage = null,\n  }) {\n    const contentStreamPromise = this.getContentStream(handler);\n    const resourcesPromise = this.loadResources([\n      \"ColorSpace\",\n      \"ExtGState\",\n      \"Font\",\n      \"Pattern\",\n      \"Properties\",\n      \"Shading\",\n      \"XObject\",\n    ]);\n\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      standardFontDataCache: this.standardFontDataCache,\n      globalImageCache: this.globalImageCache,\n      options: this.evaluatorOptions,\n    });\n\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    const pageListPromise = dataPromises.then(([contentStream]) => {\n      const opList = new OperatorList(intent, sink);\n\n      handler.send(\"StartRenderPage\", {\n        transparency: partialEvaluator.hasBlendModes(\n          this.resources,\n          this.nonBlendModesSet\n        ),\n        pageIndex: this.pageIndex,\n        cacheKey,\n      });\n\n      return partialEvaluator\n        .getOperatorList({\n          stream: contentStream,\n          task,\n          resources: this.resources,\n          operatorList: opList,\n        })\n        .then(function () {\n          return opList;\n        });\n    });\n\n    // Fetch the page's annotations and add their operator lists to the\n    // page's operator list to render them.\n    return Promise.all([pageListPromise, this._parsedAnnotations]).then(\n      function ([pageOpList, annotations]) {\n        if (\n          annotations.length === 0 ||\n          intent & RenderingIntentFlag.ANNOTATIONS_DISABLE\n        ) {\n          pageOpList.flush(true);\n          return { length: pageOpList.totalLength };\n        }\n        const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n          intentAny = !!(intent & RenderingIntentFlag.ANY),\n          intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n          intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n        // Collect the operator list promises for the annotations. Each promise\n        // is resolved with the complete operator list for a single annotation.\n        const opListPromises = [];\n        for (const annotation of annotations) {\n          if (\n            intentAny ||\n            (intentDisplay && annotation.mustBeViewed(annotationStorage)) ||\n            (intentPrint && annotation.mustBePrinted(annotationStorage))\n          ) {\n            opListPromises.push(\n              annotation\n                .getOperatorList(\n                  partialEvaluator,\n                  task,\n                  intent,\n                  renderForms,\n                  annotationStorage\n                )\n                .catch(function (reason) {\n                  warn(\n                    \"getOperatorList - ignoring annotation data during \" +\n                      `\"${task.name}\" task: \"${reason}\".`\n                  );\n                  return null;\n                })\n            );\n          }\n        }\n\n        return Promise.all(opListPromises).then(function (opLists) {\n          pageOpList.addOp(OPS.beginAnnotations, []);\n          for (const opList of opLists) {\n            pageOpList.addOpList(opList);\n          }\n          pageOpList.addOp(OPS.endAnnotations, []);\n          pageOpList.flush(true);\n          return { length: pageOpList.totalLength };\n        });\n      }\n    );\n  }\n\n  extractTextContent({\n    handler,\n    task,\n    includeMarkedContent,\n    sink,\n    combineTextItems,\n  }) {\n    const contentStreamPromise = this.getContentStream(handler);\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"Font\",\n      \"Properties\",\n      \"XObject\",\n    ]);\n\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    return dataPromises.then(([contentStream]) => {\n      const partialEvaluator = new PartialEvaluator({\n        xref: this.xref,\n        handler,\n        pageIndex: this.pageIndex,\n        idFactory: this._localIdFactory,\n        fontCache: this.fontCache,\n        builtInCMapCache: this.builtInCMapCache,\n        standardFontDataCache: this.standardFontDataCache,\n        globalImageCache: this.globalImageCache,\n        options: this.evaluatorOptions,\n      });\n\n      return partialEvaluator.getTextContent({\n        stream: contentStream,\n        task,\n        resources: this.resources,\n        includeMarkedContent,\n        combineTextItems,\n        sink,\n        viewBox: this.view,\n      });\n    });\n  }\n\n  async getStructTree() {\n    const structTreeRoot = await this.pdfManager.ensureCatalog(\n      \"structTreeRoot\"\n    );\n    if (!structTreeRoot) {\n      return null;\n    }\n    const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [\n      structTreeRoot,\n    ]);\n    return structTree.serializable;\n  }\n\n  /**\n   * @private\n   */\n  _parseStructTree(structTreeRoot) {\n    const tree = new StructTreePage(structTreeRoot, this.pageDict);\n    tree.parse();\n    return tree;\n  }\n\n  getAnnotationsData(intent) {\n    return this._parsedAnnotations.then(function (annotations) {\n      const annotationsData = [];\n\n      if (annotations.length === 0) {\n        return annotationsData;\n      }\n      const intentAny = !!(intent & RenderingIntentFlag.ANY),\n        intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n        intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n      for (const annotation of annotations) {\n        // Get the annotation even if it's hidden because\n        // JS can change its display.\n        if (\n          intentAny ||\n          (intentDisplay && annotation.viewable) ||\n          (intentPrint && annotation.printable)\n        ) {\n          annotationsData.push(annotation.data);\n        }\n      }\n      return annotationsData;\n    });\n  }\n\n  get annotations() {\n    const annots = this._getInheritableProperty(\"Annots\");\n    return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n  }\n\n  get _parsedAnnotations() {\n    const parsedAnnotations = this.pdfManager\n      .ensure(this, \"annotations\")\n      .then(() => {\n        const annotationPromises = [];\n        for (const annotationRef of this.annotations) {\n          annotationPromises.push(\n            AnnotationFactory.create(\n              this.xref,\n              annotationRef,\n              this.pdfManager,\n              this._localIdFactory,\n              /* collectFields */ false\n            ).catch(function (reason) {\n              warn(`_parsedAnnotations: \"${reason}\".`);\n              return null;\n            })\n          );\n        }\n\n        return Promise.all(annotationPromises).then(function (annotations) {\n          return annotations.filter(annotation => !!annotation);\n        });\n      });\n\n    return shadow(this, \"_parsedAnnotations\", parsedAnnotations);\n  }\n\n  get jsActions() {\n    const actions = collectActions(\n      this.xref,\n      this.pageDict,\n      PageActionEventType\n    );\n    return shadow(this, \"jsActions\", actions);\n  }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([\n  0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66,\n]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT =\n  \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.\\d$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(limit > 0, 'The \"limit\" must be a positive integer.');\n  }\n  const signatureLength = signature.length;\n\n  const scanBytes = stream.peekBytes(limit);\n  const scanLength = scanBytes.length - signatureLength;\n\n  if (scanLength <= 0) {\n    return false;\n  }\n  if (backwards) {\n    const signatureEnd = signatureLength - 1;\n\n    let pos = scanBytes.length - 1;\n    while (pos >= signatureEnd) {\n      let j = 0;\n      while (\n        j < signatureLength &&\n        scanBytes[pos - j] === signature[signatureEnd - j]\n      ) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found.\n        stream.pos += pos - signatureEnd;\n        return true;\n      }\n      pos--;\n    }\n  } else {\n    // forwards\n    let pos = 0;\n    while (pos <= scanLength) {\n      let j = 0;\n      while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found.\n        stream.pos += pos;\n        return true;\n      }\n      pos++;\n    }\n  }\n  return false;\n}\n\n/**\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\n */\nclass PDFDocument {\n  constructor(pdfManager, arg) {\n    let stream;\n    if (arg instanceof BaseStream) {\n      stream = arg;\n    } else if (isArrayBuffer(arg)) {\n      stream = new Stream(arg);\n    } else {\n      throw new Error(\"PDFDocument: Unknown argument type\");\n    }\n    if (stream.length <= 0) {\n      throw new InvalidPDFException(\n        \"The PDF file is empty, i.e. its size is zero bytes.\"\n      );\n    }\n\n    this.pdfManager = pdfManager;\n    this.stream = stream;\n    this.xref = new XRef(stream, pdfManager);\n    this._pagePromises = new Map();\n    this._version = null;\n\n    const idCounters = {\n      font: 0,\n    };\n    this._globalIdFactory = class {\n      static getDocId() {\n        return `g_${pdfManager.docId}`;\n      }\n\n      static createFontId() {\n        return `f${++idCounters.font}`;\n      }\n\n      static createObjId() {\n        unreachable(\"Abstract method `createObjId` called.\");\n      }\n\n      static getPageObjId() {\n        unreachable(\"Abstract method `getPageObjId` called.\");\n      }\n    };\n  }\n\n  parse(recoveryMode) {\n    this.xref.parse(recoveryMode);\n    this.catalog = new Catalog(this.pdfManager, this.xref);\n\n    // The `checkHeader` method is called before this method and parses the\n    // version from the header. The specification states in section 7.5.2\n    // that the version from the catalog, if present, should overwrite the\n    // version from the header.\n    if (this.catalog.version) {\n      this._version = this.catalog.version;\n    }\n  }\n\n  get linearization() {\n    let linearization = null;\n    try {\n      linearization = Linearization.create(this.stream);\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(err);\n    }\n    return shadow(this, \"linearization\", linearization);\n  }\n\n  get startXRef() {\n    const stream = this.stream;\n    let startXRef = 0;\n\n    if (this.linearization) {\n      // Find the end of the first object.\n      stream.reset();\n      if (find(stream, ENDOBJ_SIGNATURE)) {\n        startXRef = stream.pos + 6 - stream.start;\n      }\n    } else {\n      // Find `startxref` by checking backwards from the end of the file.\n      const step = 1024;\n      const startXRefLength = STARTXREF_SIGNATURE.length;\n      let found = false,\n        pos = stream.end;\n\n      while (!found && pos > 0) {\n        pos -= step - startXRefLength;\n        if (pos < 0) {\n          pos = 0;\n        }\n        stream.pos = pos;\n        found = find(stream, STARTXREF_SIGNATURE, step, true);\n      }\n\n      if (found) {\n        stream.skip(9);\n        let ch;\n        do {\n          ch = stream.getByte();\n        } while (isWhiteSpace(ch));\n        let str = \"\";\n        while (ch >= /* Space = */ 0x20 && ch <= /* '9' = */ 0x39) {\n          str += String.fromCharCode(ch);\n          ch = stream.getByte();\n        }\n        startXRef = parseInt(str, 10);\n        if (isNaN(startXRef)) {\n          startXRef = 0;\n        }\n      }\n    }\n    return shadow(this, \"startXRef\", startXRef);\n  }\n\n  // Find the header, get the PDF format version and setup the\n  // stream to start from the header.\n  checkHeader() {\n    const stream = this.stream;\n    stream.reset();\n\n    if (!find(stream, PDF_HEADER_SIGNATURE)) {\n      // May not be a PDF file, but don't throw an error and let\n      // parsing continue.\n      return;\n    }\n    stream.moveStart();\n\n    // Read the PDF format version.\n    const MAX_PDF_VERSION_LENGTH = 12;\n    let version = \"\",\n      ch;\n    while ((ch = stream.getByte()) > /* Space = */ 0x20) {\n      if (version.length >= MAX_PDF_VERSION_LENGTH) {\n        break;\n      }\n      version += String.fromCharCode(ch);\n    }\n    if (!this._version) {\n      // Remove the \"%PDF-\" prefix.\n      this._version = version.substring(5);\n    }\n  }\n\n  parseStartXRef() {\n    this.xref.setStartXRef(this.startXRef);\n  }\n\n  get numPages() {\n    let num = 0;\n    if (this.catalog.hasActualNumPages) {\n      num = this.catalog.numPages;\n    } else if (this.xfaFactory) {\n      // num is a Promise.\n      num = this.xfaFactory.getNumPages();\n    } else if (this.linearization) {\n      num = this.linearization.numPages;\n    } else {\n      num = this.catalog.numPages;\n    }\n    return shadow(this, \"numPages\", num);\n  }\n\n  /**\n   * @private\n   */\n  _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n    const RECURSION_LIMIT = 10;\n\n    if (!Array.isArray(fields)) {\n      return false;\n    }\n    return fields.every(field => {\n      field = this.xref.fetchIfRef(field);\n      if (!(field instanceof Dict)) {\n        return false;\n      }\n      if (field.has(\"Kids\")) {\n        if (++recursionDepth > RECURSION_LIMIT) {\n          warn(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n          return false;\n        }\n        return this._hasOnlyDocumentSignatures(\n          field.get(\"Kids\"),\n          recursionDepth\n        );\n      }\n      const isSignature = isName(field.get(\"FT\"), \"Sig\");\n      const rectangle = field.get(\"Rect\");\n      const isInvisible =\n        Array.isArray(rectangle) && rectangle.every(value => value === 0);\n      return isSignature && isInvisible;\n    });\n  }\n\n  get xfaData() {\n    const acroForm = this.catalog.acroForm;\n    if (!acroForm) {\n      return null;\n    }\n\n    const xfa = acroForm.get(\"XFA\");\n    const entries = {\n      \"xdp:xdp\": \"\",\n      template: \"\",\n      datasets: \"\",\n      config: \"\",\n      connectionSet: \"\",\n      localeSet: \"\",\n      stylesheet: \"\",\n      \"/xdp:xdp\": \"\",\n    };\n    if (xfa instanceof BaseStream && !xfa.isEmpty) {\n      try {\n        entries[\"xdp:xdp\"] = stringToUTF8String(xfa.getString());\n        return entries;\n      } catch (_) {\n        warn(\"XFA - Invalid utf-8 string.\");\n        return null;\n      }\n    }\n\n    if (!Array.isArray(xfa) || xfa.length === 0) {\n      return null;\n    }\n\n    for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n      let name;\n      if (i === 0) {\n        name = \"xdp:xdp\";\n      } else if (i === ii - 2) {\n        name = \"/xdp:xdp\";\n      } else {\n        name = xfa[i];\n      }\n\n      if (!entries.hasOwnProperty(name)) {\n        continue;\n      }\n      const data = this.xref.fetchIfRef(xfa[i + 1]);\n      if (!(data instanceof BaseStream) || data.isEmpty) {\n        continue;\n      }\n      try {\n        entries[name] = stringToUTF8String(data.getString());\n      } catch (_) {\n        warn(\"XFA - Invalid utf-8 string.\");\n        return null;\n      }\n    }\n    return entries;\n  }\n\n  get xfaFactory() {\n    let data;\n    if (\n      this.pdfManager.enableXfa &&\n      this.catalog.needsRendering &&\n      this.formInfo.hasXfa &&\n      !this.formInfo.hasAcroForm\n    ) {\n      data = this.xfaData;\n    }\n    return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n  }\n\n  get isPureXfa() {\n    return this.xfaFactory ? this.xfaFactory.isValid() : false;\n  }\n\n  get htmlForXfa() {\n    return this.xfaFactory ? this.xfaFactory.getPages() : null;\n  }\n\n  async loadXfaImages() {\n    const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n    if (!xfaImagesDict) {\n      return;\n    }\n\n    const keys = xfaImagesDict.getKeys();\n    const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\n    await objectLoader.load();\n\n    const xfaImages = new Map();\n    for (const key of keys) {\n      const stream = xfaImagesDict.get(key);\n      if (stream instanceof BaseStream) {\n        xfaImages.set(key, stream.getBytes());\n      }\n    }\n\n    this.xfaFactory.setImages(xfaImages);\n  }\n\n  async loadXfaFonts(handler, task) {\n    const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n    if (!acroForm) {\n      return;\n    }\n    const resources = await acroForm.getAsync(\"DR\");\n    if (!(resources instanceof Dict)) {\n      return;\n    }\n    const objectLoader = new ObjectLoader(resources, [\"Font\"], this.xref);\n    await objectLoader.load();\n\n    const fontRes = resources.get(\"Font\");\n    if (!(fontRes instanceof Dict)) {\n      return;\n    }\n\n    const options = Object.assign(\n      Object.create(null),\n      this.pdfManager.evaluatorOptions\n    );\n    options.useSystemFonts = false;\n\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: -1,\n      idFactory: this._globalIdFactory,\n      fontCache: this.catalog.fontCache,\n      builtInCMapCache: this.catalog.builtInCMapCache,\n      standardFontDataCache: this.catalog.standardFontDataCache,\n      options,\n    });\n    const operatorList = new OperatorList();\n    const pdfFonts = [];\n    const initialState = {\n      get font() {\n        return pdfFonts[pdfFonts.length - 1];\n      },\n      set font(font) {\n        pdfFonts.push(font);\n      },\n      clone() {\n        return this;\n      },\n    };\n\n    const fonts = new Map();\n    fontRes.forEach((fontName, font) => {\n      fonts.set(fontName, font);\n    });\n    const promises = [];\n\n    for (const [fontName, font] of fonts) {\n      const descriptor = font.get(\"FontDescriptor\");\n      if (!(descriptor instanceof Dict)) {\n        continue;\n      }\n      let fontFamily = descriptor.get(\"FontFamily\");\n      // For example, \"Wingdings 3\" is not a valid font name in the css specs.\n      fontFamily = fontFamily.replace(/[ ]+(\\d)/g, \"$1\");\n      const fontWeight = descriptor.get(\"FontWeight\");\n\n      // Angle is expressed in degrees counterclockwise in PDF\n      // when it's clockwise in CSS\n      // (see https://drafts.csswg.org/css-fonts-4/#valdef-font-style-oblique-angle)\n      const italicAngle = -descriptor.get(\"ItalicAngle\");\n      const cssFontInfo = { fontFamily, fontWeight, italicAngle };\n\n      if (!validateCSSFont(cssFontInfo)) {\n        continue;\n      }\n      promises.push(\n        partialEvaluator\n          .handleSetFont(\n            resources,\n            [Name.get(fontName), 1],\n            /* fontRef = */ null,\n            operatorList,\n            task,\n            initialState,\n            /* fallbackFontDict = */ null,\n            /* cssFontInfo = */ cssFontInfo\n          )\n          .catch(function (reason) {\n            warn(`loadXfaFonts: \"${reason}\".`);\n            return null;\n          })\n      );\n    }\n\n    await Promise.all(promises);\n    const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n\n    if (!missingFonts) {\n      return;\n    }\n\n    options.ignoreErrors = true;\n    promises.length = 0;\n    pdfFonts.length = 0;\n\n    const reallyMissingFonts = new Set();\n    for (const missing of missingFonts) {\n      if (!getXfaFontName(`${missing}-Regular`)) {\n        // No substitution available: we'll fallback on Myriad.\n        reallyMissingFonts.add(missing);\n      }\n    }\n\n    if (reallyMissingFonts.size) {\n      missingFonts.push(\"PdfJS-Fallback\");\n    }\n\n    for (const missing of missingFonts) {\n      if (reallyMissingFonts.has(missing)) {\n        continue;\n      }\n      for (const fontInfo of [\n        { name: \"Regular\", fontWeight: 400, italicAngle: 0 },\n        { name: \"Bold\", fontWeight: 700, italicAngle: 0 },\n        { name: \"Italic\", fontWeight: 400, italicAngle: 12 },\n        { name: \"BoldItalic\", fontWeight: 700, italicAngle: 12 },\n      ]) {\n        const name = `${missing}-${fontInfo.name}`;\n        const dict = getXfaFontDict(name);\n\n        promises.push(\n          partialEvaluator\n            .handleSetFont(\n              resources,\n              [Name.get(name), 1],\n              /* fontRef = */ null,\n              operatorList,\n              task,\n              initialState,\n              /* fallbackFontDict = */ dict,\n              /* cssFontInfo = */ {\n                fontFamily: missing,\n                fontWeight: fontInfo.fontWeight,\n                italicAngle: fontInfo.italicAngle,\n              }\n            )\n            .catch(function (reason) {\n              warn(`loadXfaFonts: \"${reason}\".`);\n              return null;\n            })\n        );\n      }\n    }\n\n    await Promise.all(promises);\n    this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n  }\n\n  async serializeXfaData(annotationStorage) {\n    return this.xfaFactory\n      ? this.xfaFactory.serializeData(annotationStorage)\n      : null;\n  }\n\n  get formInfo() {\n    const formInfo = {\n      hasFields: false,\n      hasAcroForm: false,\n      hasXfa: false,\n      hasSignatures: false,\n    };\n    const acroForm = this.catalog.acroForm;\n    if (!acroForm) {\n      return shadow(this, \"formInfo\", formInfo);\n    }\n\n    try {\n      const fields = acroForm.get(\"Fields\");\n      const hasFields = Array.isArray(fields) && fields.length > 0;\n      formInfo.hasFields = hasFields; // Used by the `fieldObjects` getter.\n\n      // The document contains XFA data if the `XFA` entry is a non-empty\n      // array or stream.\n      const xfa = acroForm.get(\"XFA\");\n      formInfo.hasXfa =\n        (Array.isArray(xfa) && xfa.length > 0) ||\n        (xfa instanceof BaseStream && !xfa.isEmpty);\n\n      // The document contains AcroForm data if the `Fields` entry is a\n      // non-empty array and it doesn't consist of only document signatures.\n      // This second check is required for files that don't actually contain\n      // AcroForm data (only XFA data), but that use the `Fields` entry to\n      // store (invisible) document signatures. This can be detected using\n      // the first bit of the `SigFlags` integer (see Table 219 in the\n      // specification).\n      const sigFlags = acroForm.get(\"SigFlags\");\n      const hasSignatures = !!(sigFlags & 0x1);\n      const hasOnlyDocumentSignatures =\n        hasSignatures && this._hasOnlyDocumentSignatures(fields);\n      formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n      formInfo.hasSignatures = hasSignatures;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Cannot fetch form information: \"${ex}\".`);\n    }\n    return shadow(this, \"formInfo\", formInfo);\n  }\n\n  get documentInfo() {\n    let version = this._version;\n    if (\n      typeof version !== \"string\" ||\n      !PDF_HEADER_VERSION_REGEXP.test(version)\n    ) {\n      warn(`Invalid PDF header version number: ${version}`);\n      version = null;\n    }\n\n    const docInfo = {\n      PDFFormatVersion: version,\n      Language: this.catalog.lang,\n      EncryptFilterName: this.xref.encrypt\n        ? this.xref.encrypt.filterName\n        : null,\n      IsLinearized: !!this.linearization,\n      IsAcroFormPresent: this.formInfo.hasAcroForm,\n      IsXFAPresent: this.formInfo.hasXfa,\n      IsCollectionPresent: !!this.catalog.collection,\n      IsSignaturesPresent: this.formInfo.hasSignatures,\n    };\n\n    let infoDict;\n    try {\n      infoDict = this.xref.trailer.get(\"Info\");\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(\"The document information dictionary is invalid.\");\n    }\n    if (!(infoDict instanceof Dict)) {\n      return shadow(this, \"documentInfo\", docInfo);\n    }\n\n    for (const key of infoDict.getKeys()) {\n      const value = infoDict.get(key);\n\n      switch (key) {\n        case \"Title\":\n        case \"Author\":\n        case \"Subject\":\n        case \"Keywords\":\n        case \"Creator\":\n        case \"Producer\":\n        case \"CreationDate\":\n        case \"ModDate\":\n          if (typeof value === \"string\") {\n            docInfo[key] = stringToPDFString(value);\n            continue;\n          }\n          break;\n        case \"Trapped\":\n          if (value instanceof Name) {\n            docInfo[key] = value;\n            continue;\n          }\n          break;\n        default:\n          // For custom values, only accept white-listed types to prevent\n          // errors that would occur when trying to send non-serializable\n          // objects to the main-thread (for example `Dict` or `Stream`).\n          let customValue;\n          switch (typeof value) {\n            case \"string\":\n              customValue = stringToPDFString(value);\n              break;\n            case \"number\":\n            case \"boolean\":\n              customValue = value;\n              break;\n            default:\n              if (value instanceof Name) {\n                customValue = value;\n              }\n              break;\n          }\n\n          if (customValue === undefined) {\n            warn(`Bad value, for custom key \"${key}\", in Info: ${value}.`);\n            continue;\n          }\n          if (!docInfo.Custom) {\n            docInfo.Custom = Object.create(null);\n          }\n          docInfo.Custom[key] = customValue;\n          continue;\n      }\n      warn(`Bad value, for key \"${key}\", in Info: ${value}.`);\n    }\n    return shadow(this, \"documentInfo\", docInfo);\n  }\n\n  get fingerprints() {\n    function validate(data) {\n      return (\n        typeof data === \"string\" &&\n        data.length > 0 &&\n        data !== EMPTY_FINGERPRINT\n      );\n    }\n\n    function hexString(hash) {\n      const buf = [];\n      for (let i = 0, ii = hash.length; i < ii; i++) {\n        const hex = hash[i].toString(16);\n        buf.push(hex.padStart(2, \"0\"));\n      }\n      return buf.join(\"\");\n    }\n\n    const idArray = this.xref.trailer.get(\"ID\");\n    let hashOriginal, hashModified;\n    if (Array.isArray(idArray) && validate(idArray[0])) {\n      hashOriginal = stringToBytes(idArray[0]);\n\n      if (idArray[1] !== idArray[0] && validate(idArray[1])) {\n        hashModified = stringToBytes(idArray[1]);\n      }\n    } else {\n      hashOriginal = calculateMD5(\n        this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n        0,\n        FINGERPRINT_FIRST_BYTES\n      );\n    }\n\n    return shadow(this, \"fingerprints\", [\n      hexString(hashOriginal),\n      hashModified ? hexString(hashModified) : null,\n    ]);\n  }\n\n  async _getLinearizationPage(pageIndex) {\n    const { catalog, linearization, xref } = this;\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        linearization && linearization.pageFirst === pageIndex,\n        \"_getLinearizationPage - invalid pageIndex argument.\"\n      );\n    }\n\n    const ref = Ref.get(linearization.objectNumberFirst, 0);\n    try {\n      const obj = await xref.fetchAsync(ref);\n      // Ensure that the object that was found is actually a Page dictionary.\n      if (obj instanceof Dict) {\n        let type = obj.getRaw(\"Type\");\n        if (type instanceof Ref) {\n          type = await xref.fetchAsync(type);\n        }\n        if (isName(type, \"Page\") || (!obj.has(\"Type\") && !obj.has(\"Kids\"))) {\n          if (!catalog.pageKidsCountCache.has(ref)) {\n            catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n          }\n          // Help improve performance of the `Catalog.getPageIndex` method.\n          if (!catalog.pageIndexCache.has(ref)) {\n            catalog.pageIndexCache.put(ref, 0);\n          }\n\n          return [obj, ref];\n        }\n      }\n      throw new FormatError(\n        \"The Linearization dictionary doesn't point to a valid Page dictionary.\"\n      );\n    } catch (reason) {\n      warn(`_getLinearizationPage: \"${reason.message}\".`);\n      return catalog.getPageDict(pageIndex);\n    }\n  }\n\n  getPage(pageIndex) {\n    const cachedPromise = this._pagePromises.get(pageIndex);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const { catalog, linearization, xfaFactory } = this;\n\n    let promise;\n    if (xfaFactory) {\n      promise = Promise.resolve([Dict.empty, null]);\n    } else if (linearization && linearization.pageFirst === pageIndex) {\n      promise = this._getLinearizationPage(pageIndex);\n    } else {\n      promise = catalog.getPageDict(pageIndex);\n    }\n    promise = promise.then(([pageDict, ref]) => {\n      return new Page({\n        pdfManager: this.pdfManager,\n        xref: this.xref,\n        pageIndex,\n        pageDict,\n        ref,\n        globalIdFactory: this._globalIdFactory,\n        fontCache: catalog.fontCache,\n        builtInCMapCache: catalog.builtInCMapCache,\n        standardFontDataCache: catalog.standardFontDataCache,\n        globalImageCache: catalog.globalImageCache,\n        nonBlendModesSet: catalog.nonBlendModesSet,\n        xfaFactory,\n      });\n    });\n\n    this._pagePromises.set(pageIndex, promise);\n    return promise;\n  }\n\n  async checkFirstPage(recoveryMode = false) {\n    if (recoveryMode) {\n      return;\n    }\n    try {\n      await this.getPage(0);\n    } catch (reason) {\n      if (reason instanceof XRefEntryException) {\n        // Clear out the various caches to ensure that we haven't stored any\n        // inconsistent and/or incorrect state, since that could easily break\n        // subsequent `this.getPage` calls.\n        this._pagePromises.delete(0);\n        await this.cleanup();\n\n        throw new XRefParseException();\n      }\n    }\n  }\n\n  async checkLastPage(recoveryMode = false) {\n    const { catalog, pdfManager } = this;\n\n    catalog.setActualNumPages(); // Ensure that it's always reset.\n    let numPages;\n\n    try {\n      await Promise.all([\n        pdfManager.ensureDoc(\"xfaFactory\"),\n        pdfManager.ensureDoc(\"linearization\"),\n        pdfManager.ensureCatalog(\"numPages\"),\n      ]);\n\n      if (this.xfaFactory) {\n        return; // The Page count is always calculated for XFA-documents.\n      } else if (this.linearization) {\n        numPages = this.linearization.numPages;\n      } else {\n        numPages = catalog.numPages;\n      }\n\n      if (!Number.isInteger(numPages)) {\n        throw new FormatError(\"Page count is not an integer.\");\n      } else if (numPages <= 1) {\n        return;\n      }\n      await this.getPage(numPages - 1);\n    } catch (reason) {\n      // Clear out the various caches to ensure that we haven't stored any\n      // inconsistent and/or incorrect state, since that could easily break\n      // subsequent `this.getPage` calls.\n      this._pagePromises.delete(numPages - 1);\n      await this.cleanup();\n\n      if (reason instanceof XRefEntryException && !recoveryMode) {\n        throw new XRefParseException();\n      }\n      warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n\n      let pagesTree;\n      try {\n        pagesTree = await catalog.getAllPageDicts(recoveryMode);\n      } catch (reasonAll) {\n        if (reasonAll instanceof XRefEntryException && !recoveryMode) {\n          throw new XRefParseException();\n        }\n        catalog.setActualNumPages(1);\n        return;\n      }\n\n      for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n        let promise;\n        if (pageDict instanceof Error) {\n          promise = Promise.reject(pageDict);\n\n          // Prevent \"uncaught exception: Object\"-messages in the console.\n          promise.catch(() => {});\n        } else {\n          promise = Promise.resolve(\n            new Page({\n              pdfManager,\n              xref: this.xref,\n              pageIndex,\n              pageDict,\n              ref,\n              globalIdFactory: this._globalIdFactory,\n              fontCache: catalog.fontCache,\n              builtInCMapCache: catalog.builtInCMapCache,\n              standardFontDataCache: catalog.standardFontDataCache,\n              globalImageCache: catalog.globalImageCache,\n              nonBlendModesSet: catalog.nonBlendModesSet,\n              xfaFactory: null,\n            })\n          );\n        }\n\n        this._pagePromises.set(pageIndex, promise);\n      }\n      catalog.setActualNumPages(pagesTree.size);\n    }\n  }\n\n  fontFallback(id, handler) {\n    return this.catalog.fontFallback(id, handler);\n  }\n\n  async cleanup(manuallyTriggered = false) {\n    return this.catalog\n      ? this.catalog.cleanup(manuallyTriggered)\n      : clearGlobalCaches();\n  }\n\n  /**\n   * @private\n   */\n  _collectFieldObjects(name, fieldRef, promises) {\n    const field = this.xref.fetchIfRef(fieldRef);\n    if (field.has(\"T\")) {\n      const partName = stringToPDFString(field.get(\"T\"));\n      if (name === \"\") {\n        name = partName;\n      } else {\n        name = `${name}.${partName}`;\n      }\n    }\n\n    if (!promises.has(name)) {\n      promises.set(name, []);\n    }\n    promises.get(name).push(\n      AnnotationFactory.create(\n        this.xref,\n        fieldRef,\n        this.pdfManager,\n        this._localIdFactory,\n        /* collectFields */ true\n      )\n        .then(annotation => annotation && annotation.getFieldObject())\n        .catch(function (reason) {\n          warn(`_collectFieldObjects: \"${reason}\".`);\n          return null;\n        })\n    );\n\n    if (field.has(\"Kids\")) {\n      const kids = field.get(\"Kids\");\n      for (const kid of kids) {\n        this._collectFieldObjects(name, kid, promises);\n      }\n    }\n  }\n\n  get fieldObjects() {\n    if (!this.formInfo.hasFields) {\n      return shadow(this, \"fieldObjects\", Promise.resolve(null));\n    }\n\n    const allFields = Object.create(null);\n    const fieldPromises = new Map();\n    for (const fieldRef of this.catalog.acroForm.get(\"Fields\")) {\n      this._collectFieldObjects(\"\", fieldRef, fieldPromises);\n    }\n\n    const allPromises = [];\n    for (const [name, promises] of fieldPromises) {\n      allPromises.push(\n        Promise.all(promises).then(fields => {\n          fields = fields.filter(field => !!field);\n          if (fields.length > 0) {\n            allFields[name] = fields;\n          }\n        })\n      );\n    }\n\n    return shadow(\n      this,\n      \"fieldObjects\",\n      Promise.all(allPromises).then(() => allFields)\n    );\n  }\n\n  get hasJSActions() {\n    const promise = this.pdfManager.ensureDoc(\"_parseHasJSActions\");\n    return shadow(this, \"hasJSActions\", promise);\n  }\n\n  /**\n   * @private\n   */\n  async _parseHasJSActions() {\n    const [catalogJsActions, fieldObjects] = await Promise.all([\n      this.pdfManager.ensureCatalog(\"jsActions\"),\n      this.pdfManager.ensureDoc(\"fieldObjects\"),\n    ]);\n\n    if (catalogJsActions) {\n      return true;\n    }\n    if (fieldObjects) {\n      return Object.values(fieldObjects).some(fieldObject =>\n        fieldObject.some(object => object.actions !== null)\n      );\n    }\n    return false;\n  }\n\n  get calculationOrderIds() {\n    const acroForm = this.catalog.acroForm;\n    if (!acroForm || !acroForm.has(\"CO\")) {\n      return shadow(this, \"calculationOrderIds\", null);\n    }\n\n    const calculationOrder = acroForm.get(\"CO\");\n    if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n      return shadow(this, \"calculationOrderIds\", null);\n    }\n\n    const ids = [];\n    for (const id of calculationOrder) {\n      if (id instanceof Ref) {\n        ids.push(id.toString());\n      }\n    }\n    if (ids.length === 0) {\n      return shadow(this, \"calculationOrderIds\", null);\n    }\n    return shadow(this, \"calculationOrderIds\", ids);\n  }\n}\n\nexport { Page, PDFDocument };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  CalibriBoldFactors,\n  CalibriBoldItalicFactors,\n  CalibriBoldItalicMetrics,\n  CalibriBoldMetrics,\n  CalibriItalicFactors,\n  CalibriItalicMetrics,\n  CalibriRegularFactors,\n  CalibriRegularMetrics,\n} from \"./calibri_factors.js\";\nimport { Dict, Name } from \"./primitives.js\";\nimport {\n  HelveticaBoldFactors,\n  HelveticaBoldItalicFactors,\n  HelveticaBoldItalicMetrics,\n  HelveticaBoldMetrics,\n  HelveticaItalicFactors,\n  HelveticaItalicMetrics,\n  HelveticaRegularFactors,\n  HelveticaRegularMetrics,\n} from \"./helvetica_factors.js\";\nimport {\n  LiberationSansBoldItalicMapping,\n  LiberationSansBoldItalicWidths,\n  LiberationSansBoldMapping,\n  LiberationSansBoldWidths,\n  LiberationSansItalicMapping,\n  LiberationSansItalicWidths,\n  LiberationSansRegularMapping,\n  LiberationSansRegularWidths,\n} from \"./liberationsans_widths.js\";\nimport {\n  MyriadProBoldFactors,\n  MyriadProBoldItalicFactors,\n  MyriadProBoldItalicMetrics,\n  MyriadProBoldMetrics,\n  MyriadProItalicFactors,\n  MyriadProItalicMetrics,\n  MyriadProRegularFactors,\n  MyriadProRegularMetrics,\n} from \"./myriadpro_factors.js\";\nimport {\n  SegoeuiBoldFactors,\n  SegoeuiBoldItalicFactors,\n  SegoeuiBoldItalicMetrics,\n  SegoeuiBoldMetrics,\n  SegoeuiItalicFactors,\n  SegoeuiItalicMetrics,\n  SegoeuiRegularFactors,\n  SegoeuiRegularMetrics,\n} from \"./segoeui_factors.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\nconst getXFAFontMap = getLookupTableFactory(function (t) {\n  t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    factors: MyriadProRegularFactors,\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping,\n    metrics: MyriadProRegularMetrics,\n  };\n  t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: MyriadProBoldFactors,\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n    metrics: MyriadProBoldMetrics,\n  };\n  t[\"MyriadPro-It\"] =\n    t[\"MyriadPro-Italic\"] =\n    t[\"PdfJS-Fallback-Italic\"] =\n      {\n        name: \"LiberationSans-Italic\",\n        factors: MyriadProItalicFactors,\n        baseWidths: LiberationSansItalicWidths,\n        baseMapping: LiberationSansItalicMapping,\n        metrics: MyriadProItalicMetrics,\n      };\n  t[\"MyriadPro-BoldIt\"] =\n    t[\"MyriadPro-BoldItalic\"] =\n    t[\"PdfJS-Fallback-BoldItalic\"] =\n      {\n        name: \"LiberationSans-BoldItalic\",\n        factors: MyriadProBoldItalicFactors,\n        baseWidths: LiberationSansBoldItalicWidths,\n        baseMapping: LiberationSansBoldItalicMapping,\n        metrics: MyriadProBoldItalicMetrics,\n      };\n  t.ArialMT =\n    t.Arial =\n    t[\"Arial-Regular\"] =\n      {\n        name: \"LiberationSans-Regular\",\n        baseWidths: LiberationSansRegularWidths,\n        baseMapping: LiberationSansRegularMapping,\n      };\n  t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n  };\n  t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping,\n  };\n  t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping,\n  };\n  t[\"Calibri-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    factors: CalibriRegularFactors,\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping,\n    metrics: CalibriRegularMetrics,\n  };\n  t[\"Calibri-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: CalibriBoldFactors,\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n    metrics: CalibriBoldMetrics,\n  };\n  t[\"Calibri-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: CalibriItalicFactors,\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping,\n    metrics: CalibriItalicMetrics,\n  };\n  t[\"Calibri-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: CalibriBoldItalicFactors,\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping,\n    metrics: CalibriBoldItalicMetrics,\n  };\n  t[\"Segoeui-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    factors: SegoeuiRegularFactors,\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping,\n    metrics: SegoeuiRegularMetrics,\n  };\n  t[\"Segoeui-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: SegoeuiBoldFactors,\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n    metrics: SegoeuiBoldMetrics,\n  };\n  t[\"Segoeui-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: SegoeuiItalicFactors,\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping,\n    metrics: SegoeuiItalicMetrics,\n  };\n  t[\"Segoeui-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: SegoeuiBoldItalicFactors,\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping,\n    metrics: SegoeuiBoldItalicMetrics,\n  };\n  t[\"Helvetica-Regular\"] = t.Helvetica = {\n    name: \"LiberationSans-Regular\",\n    factors: HelveticaRegularFactors,\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping,\n    metrics: HelveticaRegularMetrics,\n  };\n  t[\"Helvetica-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: HelveticaBoldFactors,\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n    metrics: HelveticaBoldMetrics,\n  };\n  t[\"Helvetica-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: HelveticaItalicFactors,\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping,\n    metrics: HelveticaItalicMetrics,\n  };\n  t[\"Helvetica-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: HelveticaBoldItalicFactors,\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping,\n    metrics: HelveticaBoldItalicMetrics,\n  };\n});\n\nfunction getXfaFontName(name) {\n  const fontName = normalizeFontName(name);\n  const fontMap = getXFAFontMap();\n  return fontMap[fontName];\n}\n\nfunction getXfaFontWidths(name) {\n  const info = getXfaFontName(name);\n  if (!info) {\n    return null;\n  }\n\n  const { baseWidths, baseMapping, factors } = info;\n  let rescaledBaseWidths;\n  if (!factors) {\n    rescaledBaseWidths = baseWidths;\n  } else {\n    rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]);\n  }\n\n  let currentCode = -2;\n  let currentArray;\n\n  // Widths array for composite font is:\n  // CharCode1 [10, 20, 30] ...\n  // which means:\n  //   - CharCode1 has a width equal to 10\n  //   - CharCode1+1 has a width equal to 20\n  //   - CharCode1+2 has a width equal to 30\n  //\n  // The baseMapping array contains a map for glyph index to unicode.\n  // So from baseMapping we'll get sorted unicodes and their positions\n  // (i.e. glyph indices) and then we put widths in an array for the\n  // the consecutive unicodes.\n  const newWidths = [];\n  for (const [unicode, glyphIndex] of baseMapping\n    .map(\n      (charUnicode, index) => [\n        charUnicode,\n        index,\n      ] /* collect unicode and glyph index */\n    )\n    .sort(\n      ([unicode1], [unicode2]) =>\n        unicode1 - unicode2 /* order by unicode only */\n    )) {\n    if (unicode === -1) {\n      continue;\n    }\n\n    if (unicode === currentCode + 1) {\n      currentArray.push(rescaledBaseWidths[glyphIndex]);\n      currentCode += 1;\n    } else {\n      currentCode = unicode;\n      currentArray = [rescaledBaseWidths[glyphIndex]];\n      newWidths.push(unicode, currentArray);\n    }\n  }\n\n  return newWidths;\n}\n\nfunction getXfaFontDict(name) {\n  const widths = getXfaFontWidths(name);\n  const dict = new Dict(null);\n  dict.set(\"BaseFont\", Name.get(name));\n  dict.set(\"Type\", Name.get(\"Font\"));\n  dict.set(\"Subtype\", Name.get(\"CIDFontType2\"));\n  dict.set(\"Encoding\", Name.get(\"Identity-H\"));\n  dict.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n  dict.set(\"W\", widths);\n  dict.set(\"FirstChar\", widths[0]);\n  dict.set(\n    \"LastChar\",\n    widths[widths.length - 2] + widths[widths.length - 1].length - 1\n  );\n  const descriptor = new Dict(null);\n  dict.set(\"FontDescriptor\", descriptor);\n  const systemInfo = new Dict(null);\n  systemInfo.set(\"Ordering\", \"Identity\");\n  systemInfo.set(\"Registry\", \"Adobe\");\n  systemInfo.set(\"Supplement\", 0);\n  dict.set(\"CIDSystemInfo\", systemInfo);\n\n  return dict;\n}\n\nexport { getXfaFontDict, getXfaFontName };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as calibrib.ttf.\nconst CalibriBoldFactors = [\n  1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n  0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657,\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n  0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n  0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n  0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795,\n  0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577,\n  0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176,\n  0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401,\n  0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343,\n  0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331,\n  1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133,\n  1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787,\n  0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056,\n  0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908,\n  0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133,\n  0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506,\n  0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508,\n  0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762,\n  0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518,\n  0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785,\n  0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785,\n  0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762,\n  0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241,\n  0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518,\n  0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518,\n  0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785,\n  0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401,\n  0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1,\n  0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823,\n  0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785,\n  0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958,\n  0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864,\n  0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399,\n  0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785,\n  0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257,\n  0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908,\n  0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528,\n  1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161,\n  1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029,\n  0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257,\n  0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943,\n  0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819,\n  0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211,\n  0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813,\n  1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638,\n  0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926,\n  0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1,\n  0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1,\n  0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012,\n  0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372,\n  1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133,\n  1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527,\n  1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018,\n  0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747,\n  0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572,\n  0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1,\n  0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as calibriz.ttf.\nconst CalibriBoldItalicFactors = [\n  1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n  0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239,\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n  0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n  0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n  0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795,\n  0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577,\n  0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908,\n  0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401,\n  0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411,\n  0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548,\n  0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133,\n  0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839,\n  0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1,\n  1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133,\n  0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539,\n  0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958,\n  0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938,\n  0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795,\n  0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887,\n  0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401,\n  0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331,\n  0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411,\n  0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805,\n  0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289,\n  0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133,\n  0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921,\n  0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958,\n  0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958,\n  0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401,\n  1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331,\n  1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938,\n  0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958,\n  0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766,\n  0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399,\n  0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399,\n  0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492,\n  0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908,\n  0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528,\n  1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387,\n  0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346,\n  1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356,\n  0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938,\n  0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466,\n  0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733,\n  0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988,\n  0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581,\n  0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015,\n  1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794,\n  0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527,\n  1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012,\n  0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171,\n  1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021,\n  1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527,\n  1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284,\n  0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356,\n  0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572,\n  0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as calibrii.ttf.\nconst CalibriItalicFactors = [\n  1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n  0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133,\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n  0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n  0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n  0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374,\n  0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306,\n  0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245,\n  0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918,\n  1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562,\n  0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152,\n  0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552,\n  1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737,\n  0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642,\n  0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675,\n  0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685,\n  0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118,\n  0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844,\n  0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245,\n  0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601,\n  0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274,\n  0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245,\n  0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203,\n  0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875,\n  0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865,\n  0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105,\n  0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685,\n  0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896,\n  1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032,\n  0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249,\n  0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118,\n  0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789,\n  0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776,\n  0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245,\n  0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306,\n  0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004,\n  1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1,\n  0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695,\n  1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824,\n  0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206,\n  0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249,\n  0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782,\n  0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516,\n  0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297,\n  1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507,\n  0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248,\n  0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309,\n  0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552,\n  0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566,\n  1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176,\n  1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1,\n  1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055,\n  0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n  0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n  0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n  0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n  0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as calibri.ttf.\nconst CalibriRegularFactors = [\n  1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n  0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133,\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n  0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n  0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n  0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503,\n  0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306,\n  0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128,\n  0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297,\n  1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469,\n  1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527,\n  0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133,\n  0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098,\n  0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1,\n  1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972,\n  0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834,\n  0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685,\n  0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284,\n  0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331,\n  0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464,\n  0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469,\n  0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469,\n  0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675,\n  0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457,\n  0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206,\n  0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105,\n  0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872,\n  0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685,\n  1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918,\n  0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429,\n  0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122,\n  0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692,\n  1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223,\n  0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469,\n  0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469,\n  0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004,\n  0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128,\n  0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622,\n  1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387,\n  0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254,\n  1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275,\n  0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122,\n  0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772,\n  0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018,\n  0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516,\n  0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442,\n  0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181,\n  1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986,\n  0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527,\n  1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566,\n  0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523,\n  1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1,\n  0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055,\n  0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n  0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n  0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n  0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n  0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1,\n  1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriRegularMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\nexport {\n  CalibriBoldFactors,\n  CalibriBoldItalicFactors,\n  CalibriBoldItalicMetrics,\n  CalibriBoldMetrics,\n  CalibriItalicFactors,\n  CalibriItalicMetrics,\n  CalibriRegularFactors,\n  CalibriRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as NimbusSans-Bold.otf.\nconst HelveticaBoldFactors = [\n  0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n  1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n  1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n  1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n  1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n  0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n  1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n  0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n  0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n  0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n  1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n  0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n  0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n  1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n  1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n  0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n  0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n  1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n  1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973,\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n  1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n  0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006,\n  0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828,\n  1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n  0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n  1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n  0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n  0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n  1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n  1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n  0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n  0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973,\n  1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026,\n  0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069,\n  1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001,\n  0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995,\n  1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087,\n  1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056,\n  1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006,\n  0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019,\n  0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942,\n  0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944,\n  1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999,\n  0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057,\n  1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994,\n  0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973,\n  1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999,\n  1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041,\n  1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973,\n  0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026,\n  0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005,\n  1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n  0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n  0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n  1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1,\n  0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1,\n  0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n  1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n  0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n  0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n  0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n  0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n  0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as NimbusSans-BoldItalic.otf.\nconst HelveticaBoldItalicFactors = [\n  0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n  1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n  1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n  1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n  1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n  0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n  1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n  0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n  0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n  0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n  1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n  0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n  0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n  1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n  1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n  0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n  0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n  1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n  1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973,\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n  1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n  0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006,\n  0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011,\n  1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n  0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n  1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n  0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n  0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n  1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n  1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n  0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n  0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998,\n  1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977,\n  1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022,\n  1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1,\n  1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064,\n  0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014,\n  0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064,\n  1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948,\n  1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035,\n  1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967,\n  0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001,\n  0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977,\n  1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001,\n  0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999,\n  0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995,\n  1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026,\n  1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999,\n  0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973,\n  0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975,\n  1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044,\n  1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n  0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n  0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n  1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991,\n  0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1,\n  0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n  1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n  0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n  0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n  0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n  0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n  0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as NimbusSans-Italic.otf.\nconst HelveticaItalicFactors = [\n  0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n  1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n  1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n  1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n  0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n  1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n  1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n  0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n  0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n  0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n  0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n  0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n  1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n  1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n  0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n  0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n  0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n  0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288,\n  0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n  1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n  1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n  0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924,\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998,\n  0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n  0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n  1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006,\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n  0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n  0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013,\n  0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977,\n  1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022,\n  1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1,\n  1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945,\n  0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962,\n  1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036,\n  0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036,\n  1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006,\n  1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001,\n  1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954,\n  0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001,\n  0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016,\n  0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089,\n  1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973,\n  0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1,\n  0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023,\n  1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1,\n  0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1,\n  0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016,\n  0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924,\n  0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267,\n  0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023,\n  0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002,\n  1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985,\n  1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031,\n  1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861,\n  0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999,\n  0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962,\n  1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as NimbusSans-Regular.otf.\nconst HelveticaRegularFactors = [\n  0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n  1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n  1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n  1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n  0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n  1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n  1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n  0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n  0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n  0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n  0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n  0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n  1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n  1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n  0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n  0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n  0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n  0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596,\n  0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n  1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n  1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n  0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924,\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998,\n  0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n  0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n  1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006,\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n  0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n  0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941,\n  0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977,\n  1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022,\n  0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1,\n  1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978,\n  0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1,\n  0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023,\n  0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023,\n  1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006,\n  1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962,\n  1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035,\n  1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977,\n  1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053,\n  1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043,\n  0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073,\n  1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1,\n  1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1,\n  1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006,\n  0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1,\n  1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977,\n  1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924,\n  0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999,\n  0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973,\n  0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002,\n  1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254,\n  1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031,\n  0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026,\n  1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1,\n  0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n  HelveticaBoldFactors,\n  HelveticaBoldItalicFactors,\n  HelveticaBoldItalicMetrics,\n  HelveticaBoldMetrics,\n  HelveticaItalicFactors,\n  HelveticaItalicMetrics,\n  HelveticaRegularFactors,\n  HelveticaRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Widths of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldWidths = [\n  365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n  584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n  722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n  611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n  278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n  556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n  333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n  889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n  611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n  722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667,\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n  778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n  278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611,\n  479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n  611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n  667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n  611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n  500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906,\n  474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722,\n  667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278,\n  667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278,\n  558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753,\n  845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556,\n  1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626,\n  719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730,\n  703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556,\n  709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875,\n  556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417,\n  552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487,\n  447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n  278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n  333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600,\n  834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n  584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n  611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n  333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldMapping = [\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicWidths = [\n  365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n  584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n  722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n  611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n  278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n  556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n  333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n  889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n  611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n  722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667,\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n  778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n  278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611,\n  479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n  611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n  667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n  611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n  500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906,\n  473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722,\n  667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278,\n  667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278,\n  566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773,\n  834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556,\n  1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643,\n  719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729,\n  708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556,\n  736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885,\n  556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469,\n  563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575,\n  467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n  278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n  333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600,\n  834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n  584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n  611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n  333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicMapping = [\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicWidths = [\n  365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n  584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n  667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n  611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n  222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n  500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n  333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n  889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n  556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n  667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667,\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n  778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n  278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556,\n  400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778,\n  556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n  667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722,\n  556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n  500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846,\n  389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667,\n  667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278,\n  667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222,\n  500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728,\n  779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500,\n  1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614,\n  715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727,\n  673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556,\n  688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835,\n  500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378,\n  496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492,\n  339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n  222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n  333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600,\n  834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713,\n  584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604,\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n  500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n  324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicMapping = [\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularWidths = [\n  365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n  584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n  667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n  611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n  222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n  500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n  333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n  889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n  556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n  667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667,\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n  778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n  278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556,\n  334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778,\n  556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n  667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722,\n  556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n  500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838,\n  384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667,\n  668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278,\n  667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222,\n  500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713,\n  781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500,\n  1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604,\n  719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740,\n  667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556,\n  669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823,\n  500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365,\n  510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489,\n  411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n  222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n  333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600,\n  834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n  584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n  500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n  324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularMapping = [\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\nexport {\n  LiberationSansBoldItalicMapping,\n  LiberationSansBoldItalicWidths,\n  LiberationSansBoldMapping,\n  LiberationSansBoldWidths,\n  LiberationSansItalicMapping,\n  LiberationSansItalicWidths,\n  LiberationSansRegularMapping,\n  LiberationSansRegularWidths,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as MyriadPro-Bold.otf.\nconst MyriadProBoldFactors = [\n  1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884,\n  0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582,\n  1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793,\n  0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n  0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275,\n  0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179,\n  0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083,\n  0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903,\n  0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933,\n  0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407,\n  0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938,\n  0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793,\n  0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295,\n  0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1,\n  1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838,\n  0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061,\n  0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179,\n  0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438,\n  0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938,\n  0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938,\n  0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446,\n  0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039,\n  0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938,\n  0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093,\n  0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938,\n  0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768,\n  0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258,\n  0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621,\n  0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1,\n  0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1,\n  0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446,\n  0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646,\n  0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713,\n  0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438,\n  0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083,\n  0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446,\n  0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1,\n  0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088,\n  0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261,\n  0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019,\n  0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156,\n  0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704,\n  0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933,\n  1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933,\n  1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367,\n  0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774,\n  1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083,\n  0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582,\n  0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1,\n  0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1,\n  1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169,\n  1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595,\n  1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as MyriadPro-BoldIt.otf.\nconst MyriadProBoldItalicFactors = [\n  1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222,\n  0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582,\n  1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276,\n  0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n  0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655,\n  0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222,\n  0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605,\n  0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058,\n  0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796,\n  0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168,\n  0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236,\n  0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276,\n  0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074,\n  0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1,\n  0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043,\n  0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729,\n  0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621,\n  0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058,\n  0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951,\n  0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216,\n  0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381,\n  0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595,\n  0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364,\n  0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216,\n  0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783,\n  0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083,\n  0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523,\n  0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621,\n  0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036,\n  0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726,\n  0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222,\n  0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513,\n  0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077,\n  0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651,\n  0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677,\n  0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236,\n  0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1,\n  0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275,\n  1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616,\n  1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927,\n  0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805,\n  0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655,\n  0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275,\n  0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886,\n  0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276,\n  0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699,\n  0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646,\n  0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646,\n  0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694,\n  1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896,\n  0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1,\n  1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026,\n  1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as MyriadPro-It.otf.\nconst MyriadProItalicFactors = [\n  1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307,\n  0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945,\n  1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465,\n  0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058,\n  0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125,\n  0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588,\n  0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832,\n  0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012,\n  0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075,\n  1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493,\n  0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537,\n  0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537,\n  0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353,\n  0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446,\n  0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158,\n  0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864,\n  0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588,\n  0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512,\n  0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n  0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424,\n  0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n  1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882,\n  0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852,\n  0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399,\n  0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453,\n  0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1,\n  0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424,\n  0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728,\n  1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475,\n  0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865,\n  0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867,\n  0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866,\n  0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658,\n  0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578,\n  0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512,\n  0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773,\n  0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012,\n  1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901,\n  0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947,\n  1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588,\n  0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701,\n  0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386,\n  0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298,\n  0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787,\n  0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737,\n  0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859,\n  0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219,\n  1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027,\n  0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1,\n  1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233,\n  1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as MyriadPro-Regular.otf.\nconst MyriadProRegularFactors = [\n  1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706,\n  0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456,\n  0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241,\n  0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002,\n  0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051,\n  0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761,\n  0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111,\n  0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231,\n  0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938,\n  1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137,\n  0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034,\n  1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332,\n  0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519,\n  1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339,\n  0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755,\n  0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023,\n  0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858,\n  0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611,\n  0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896,\n  0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224,\n  0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595,\n  0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755,\n  0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896,\n  0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764,\n  0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764,\n  0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284,\n  0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023,\n  0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377,\n  1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441,\n  0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991,\n  0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434,\n  0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1,\n  1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074,\n  0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074,\n  0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856,\n  0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936,\n  0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088,\n  0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138,\n  0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226,\n  0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023,\n  0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297,\n  0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157,\n  0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088,\n  0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938,\n  0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007,\n  0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915,\n  0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1,\n  1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903,\n  0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241,\n  1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1,\n  0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1,\n  1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1,\n];\nconst MyriadProRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n  MyriadProBoldFactors,\n  MyriadProBoldItalicFactors,\n  MyriadProBoldItalicMetrics,\n  MyriadProBoldMetrics,\n  MyriadProItalicFactors,\n  MyriadProItalicMetrics,\n  MyriadProRegularFactors,\n  MyriadProRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as segoeuib.ttf.\nconst SegoeuiBoldFactors = [\n  1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647,\n  1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578,\n  1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424,\n  1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847,\n  0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406,\n  0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489,\n  0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361,\n  1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304,\n  1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527,\n  1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862,\n  0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579,\n  0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727,\n  1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826,\n  1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866,\n  1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363,\n  0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795,\n  0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426,\n  0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135,\n  1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752,\n  0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278,\n  1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826,\n  1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752,\n  0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641,\n  0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517,\n  0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278,\n  0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1,\n  1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406,\n  1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285,\n  1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418,\n  0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251,\n  0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931,\n  0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104,\n  0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862,\n  1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041,\n  1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752,\n  0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733,\n  1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923,\n  1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912,\n  1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167,\n  1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134,\n  0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889,\n  1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996,\n  0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008,\n  1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008,\n  1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434,\n  0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439,\n  1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511,\n  1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1,\n  1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633,\n  0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372,\n  0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1,\n  0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279,\n  0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416,\n  1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004,\n  1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n  1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n  1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as segoeuiz.ttf.\nconst SegoeuiBoldItalicFactors = [\n  1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953,\n  1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754,\n  1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378,\n  0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723,\n  0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128,\n  0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527,\n  0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293,\n  1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042,\n  0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236,\n  1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922,\n  0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107,\n  1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754,\n  1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047,\n  1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356,\n  1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363,\n  0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429,\n  1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552,\n  0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135,\n  0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585,\n  1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236,\n  1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165,\n  0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922,\n  0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363,\n  1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897,\n  0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503,\n  0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042,\n  0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922,\n  1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406,\n  1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236,\n  1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922,\n  1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552,\n  0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641,\n  1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527,\n  0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135,\n  0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135,\n  0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168,\n  0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385,\n  0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818,\n  1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126,\n  1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205,\n  1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815,\n  0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552,\n  1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945,\n  0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961,\n  0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518,\n  0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377,\n  1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514,\n  0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777,\n  1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1,\n  0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633,\n  0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372,\n  0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1,\n  0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279,\n  0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416,\n  1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004,\n  1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n  1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n  1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as segoeuii.ttf.\nconst SegoeuiItalicFactors = [\n  1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373,\n  1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383,\n  1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n  0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308,\n  0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016,\n  0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989,\n  0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143,\n  0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627,\n  1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454,\n  1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225,\n  0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973,\n  0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748,\n  0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781,\n  0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971,\n  1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836,\n  1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729,\n  0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782,\n  0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924,\n  0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402,\n  0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454,\n  0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146,\n  0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225,\n  0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351,\n  0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729,\n  0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506,\n  0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533,\n  0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454,\n  0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176,\n  0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484,\n  0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231,\n  1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989,\n  1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225,\n  0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1,\n  0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004,\n  0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351,\n  0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351,\n  0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043,\n  0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498,\n  0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839,\n  1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965,\n  0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2,\n  0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924,\n  0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642,\n  0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284,\n  0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205,\n  1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119,\n  1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679,\n  1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675,\n  1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973,\n  0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945,\n  0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621,\n  0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1,\n  1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836,\n  1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1,\n  1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622,\n  1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862,\n  0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603,\n  1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1,\n  1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as segoeui.ttf.\nconst SegoeuiRegularFactors = [\n  1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985,\n  1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246,\n  0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n  0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084,\n  0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831,\n  0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968,\n  0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433,\n  0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484,\n  1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011,\n  1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399,\n  0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043,\n  0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912,\n  0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808,\n  0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032,\n  0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381,\n  0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734,\n  0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782,\n  0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714,\n  0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049,\n  0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383,\n  0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527,\n  1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923,\n  1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706,\n  0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734,\n  0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093,\n  1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403,\n  0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1,\n  0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782,\n  0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011,\n  1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298,\n  0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444,\n  1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066,\n  0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649,\n  0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771,\n  1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132,\n  1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287,\n  0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571,\n  0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771,\n  1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572,\n  1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366,\n  0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491,\n  0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796,\n  1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287,\n  0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424,\n  1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424,\n  1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087,\n  1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205,\n  1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965,\n  1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088,\n  0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196,\n  1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483,\n  0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518,\n  0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279,\n  0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714,\n  1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238,\n  1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025,\n  0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1,\n  1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1,\n  1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiRegularMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\nexport {\n  SegoeuiBoldFactors,\n  SegoeuiBoldItalicFactors,\n  SegoeuiBoldItalicMetrics,\n  SegoeuiBoldMetrics,\n  SegoeuiItalicFactors,\n  SegoeuiItalicMetrics,\n  SegoeuiRegularFactors,\n  SegoeuiRegularMetrics,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FontType, info } from \"../shared/util.js\";\nimport { getEncoding, StandardEncoding } from \"./encodings.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getUnicodeForGlyph } from \"./unicode.js\";\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nconst SEAC_ANALYSIS_ENABLED = true;\n\nconst FontFlags = {\n  FixedPitch: 1,\n  Serif: 2,\n  Symbolic: 4,\n  Script: 8,\n  Nonsymbolic: 32,\n  Italic: 64,\n  AllCap: 65536,\n  SmallCap: 131072,\n  ForceBold: 262144,\n};\n\n// prettier-ignore\nconst MacStandardGlyphOrdering = [\n  \".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\",\n  \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\",\n  \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\",\n  \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n  \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\",\n  \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\",\n  \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\",\n  \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\",\n  \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\",\n  \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n  \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\",\n  \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\",\n  \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n  \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\",\n  \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\",\n  \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\",\n  \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\",\n  \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\",\n  \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\",\n  \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\",\n  \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\",\n  \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\",\n  \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\",\n  \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\",\n  \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\",\n  \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\",\n  \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\",\n  \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\",\n  \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\",\n  \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\",\n  \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\",\n  \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\",\n  \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\",\n  \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\",\n  \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\",\n  \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction getFontType(type, subtype, isStandardFont = false) {\n  switch (type) {\n    case \"Type1\":\n      if (isStandardFont) {\n        return FontType.TYPE1STANDARD;\n      }\n      return subtype === \"Type1C\" ? FontType.TYPE1C : FontType.TYPE1;\n    case \"CIDFontType0\":\n      return subtype === \"CIDFontType0C\"\n        ? FontType.CIDFONTTYPE0C\n        : FontType.CIDFONTTYPE0;\n    case \"OpenType\":\n      return FontType.OPENTYPE;\n    case \"TrueType\":\n      return FontType.TRUETYPE;\n    case \"CIDFontType2\":\n      return FontType.CIDFONTTYPE2;\n    case \"MMType1\":\n      return FontType.MMTYPE1;\n    case \"Type0\":\n      return FontType.TYPE0;\n    default:\n      return FontType.UNKNOWN;\n  }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n  if (glyphsUnicodeMap[name] !== undefined) {\n    return name;\n  }\n  // The glyph name is non-standard, trying to recover.\n  const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n  if (unicode !== -1) {\n    for (const key in glyphsUnicodeMap) {\n      if (glyphsUnicodeMap[key] === unicode) {\n        return key;\n      }\n    }\n  }\n  info(\"Unable to recover a standard glyph name for: \" + name);\n  return name;\n}\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n *   data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n *   glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n  const charCodeToGlyphId = Object.create(null);\n  let glyphId, charCode, baseEncoding;\n  const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n  if (properties.isInternalFont) {\n    baseEncoding = builtInEncoding;\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  } else if (properties.baseEncodingName) {\n    // If a valid base encoding name was used, the mapping is initialized with\n    // that.\n    baseEncoding = getEncoding(properties.baseEncodingName);\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  } else if (isSymbolicFont) {\n    // For a symbolic font the encoding should be the fonts built-in encoding.\n    for (charCode in builtInEncoding) {\n      charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n    }\n  } else {\n    // For non-symbolic fonts that don't have a base encoding the standard\n    // encoding should be used.\n    baseEncoding = StandardEncoding;\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n\n  // Lastly, merge in the differences.\n  const differences = properties.differences;\n  let glyphsUnicodeMap;\n  if (differences) {\n    for (charCode in differences) {\n      const glyphName = differences[charCode];\n      glyphId = glyphNames.indexOf(glyphName);\n\n      if (glyphId === -1) {\n        if (!glyphsUnicodeMap) {\n          glyphsUnicodeMap = getGlyphsUnicode();\n        }\n        const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n        if (standardGlyphName !== glyphName) {\n          glyphId = glyphNames.indexOf(standardGlyphName);\n        }\n      }\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n  return charCodeToGlyphId;\n}\n\nfunction normalizeFontName(name) {\n  return name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n}\n\nexport {\n  FontFlags,\n  getFontType,\n  MacStandardGlyphOrdering,\n  normalizeFontName,\n  recoverGlyphName,\n  SEAC_ANALYSIS_ENABLED,\n  type1FontGlyphMapping,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ExpertEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\",\n  \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n  \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n  \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n  \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n  \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\",\n  \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\",\n  \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\",\n  \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\",\n  \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\",\n  \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n  \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n  \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\",\n  \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\",\n  \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\",\n  \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\",\n  \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n  \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n  \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n  \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n  \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n  \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n  \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\"];\n\n// prettier-ignore\nconst MacExpertEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\",\n  \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\",\n  \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\",\n  \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\",\n  \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\",\n  \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\",\n  \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\",\n  \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\",\n  \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n  \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n  \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n  \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n  \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n  \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\",\n  \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\",\n  \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\",\n  \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\",\n  \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\",\n  \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\",\n  \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\",\n  \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\",\n  \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\",\n  \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\",\n  \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\",\n  \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\",\n  \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\",\n  \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\",\n  \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n  \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\",\n  \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\",\n  \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\",\n  \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\",\n  \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n\n// prettier-ignore\nconst MacRomanEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n  \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n  \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\",\n  \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\",\n  \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\",\n  \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n  \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\",\n  \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\",\n  \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\",\n  \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\",\n  \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\",\n  \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\",\n  \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\",\n  \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\",\n  \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\",\n  \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\",\n  \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\",\n  \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\",\n  \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\",\n  \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\",\n  \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\",\n  \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\",\n  \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\",\n  \"ogonek\", \"caron\"];\n\n// prettier-ignore\nconst StandardEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\",\n  \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\",\n  \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\",\n  \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n  \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n  \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\",\n  \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\",\n  \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\",\n  \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\",\n  \"\", \"\", \"\"];\n\n// prettier-ignore\nconst WinAnsiEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n  \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n  \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n  \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\",\n  \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\",\n  \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\",\n  \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\",\n  \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\",\n  \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\",\n  \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\",\n  \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\",\n  \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\",\n  \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\",\n  \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\",\n  \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\",\n  \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\",\n  \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\",\n  \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\",\n  \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\",\n  \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\",\n  \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\",\n  \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\",\n  \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\",\n  \"ydieresis\"];\n\n// prettier-ignore\nconst SymbolSetEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\",\n  \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\",\n  \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n  \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n  \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\",\n  \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\",\n  \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\",\n  \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\",\n  \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\",\n  \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\",\n  \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\",\n  \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\",\n  \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\",\n  \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\",\n  \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\",\n  \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\",\n  \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\",\n  \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\",\n  \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\",\n  \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\",\n  \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\",\n  \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\",\n  \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\",\n  \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\",\n  \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\",\n  \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\",\n  \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\",\n  \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\",\n  \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\",\n  \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\",\n  \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\",\n  \"bracerightbt\", \"\"];\n\n// prettier-ignore\nconst ZapfDingbatsEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\",\n  \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\",\n  \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\",\n  \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\",\n  \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\",\n  \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\",\n  \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\",\n  \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\",\n  \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\",\n  \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\",\n  \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\",\n  \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\",\n  \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\",\n  \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\",\n  \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\",\n  \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\",\n  \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\",\n  \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\",\n  \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\",\n  \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\",\n  \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\n\nfunction getEncoding(encodingName) {\n  switch (encodingName) {\n    case \"WinAnsiEncoding\":\n      return WinAnsiEncoding;\n    case \"StandardEncoding\":\n      return StandardEncoding;\n    case \"MacRomanEncoding\":\n      return MacRomanEncoding;\n    case \"SymbolSetEncoding\":\n      return SymbolSetEncoding;\n    case \"ZapfDingbatsEncoding\":\n      return ZapfDingbatsEncoding;\n    case \"ExpertEncoding\":\n      return ExpertEncoding;\n    case \"MacExpertEncoding\":\n      return MacExpertEncoding;\n    default:\n      return null;\n  }\n}\n\nexport {\n  ExpertEncoding,\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  WinAnsiEncoding,\n  ZapfDingbatsEncoding,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport { getArrayLookupTableFactory } from \"./core_utils.js\";\n\nconst getGlyphsUnicode = getArrayLookupTableFactory(function () {\n  // prettier-ignore\n  return [\n    \"A\", 0x0041,\n    \"AE\", 0x00c6,\n    \"AEacute\", 0x01fc,\n    \"AEmacron\", 0x01e2,\n    \"AEsmall\", 0xf7e6,\n    \"Aacute\", 0x00c1,\n    \"Aacutesmall\", 0xf7e1,\n    \"Abreve\", 0x0102,\n    \"Abreveacute\", 0x1eae,\n    \"Abrevecyrillic\", 0x04d0,\n    \"Abrevedotbelow\", 0x1eb6,\n    \"Abrevegrave\", 0x1eb0,\n    \"Abrevehookabove\", 0x1eb2,\n    \"Abrevetilde\", 0x1eb4,\n    \"Acaron\", 0x01cd,\n    \"Acircle\", 0x24b6,\n    \"Acircumflex\", 0x00c2,\n    \"Acircumflexacute\", 0x1ea4,\n    \"Acircumflexdotbelow\", 0x1eac,\n    \"Acircumflexgrave\", 0x1ea6,\n    \"Acircumflexhookabove\", 0x1ea8,\n    \"Acircumflexsmall\", 0xf7e2,\n    \"Acircumflextilde\", 0x1eaa,\n    \"Acute\", 0xf6c9,\n    \"Acutesmall\", 0xf7b4,\n    \"Acyrillic\", 0x0410,\n    \"Adblgrave\", 0x0200,\n    \"Adieresis\", 0x00c4,\n    \"Adieresiscyrillic\", 0x04d2,\n    \"Adieresismacron\", 0x01de,\n    \"Adieresissmall\", 0xf7e4,\n    \"Adotbelow\", 0x1ea0,\n    \"Adotmacron\", 0x01e0,\n    \"Agrave\", 0x00c0,\n    \"Agravesmall\", 0xf7e0,\n    \"Ahookabove\", 0x1ea2,\n    \"Aiecyrillic\", 0x04d4,\n    \"Ainvertedbreve\", 0x0202,\n    \"Alpha\", 0x0391,\n    \"Alphatonos\", 0x0386,\n    \"Amacron\", 0x0100,\n    \"Amonospace\", 0xff21,\n    \"Aogonek\", 0x0104,\n    \"Aring\", 0x00c5,\n    \"Aringacute\", 0x01fa,\n    \"Aringbelow\", 0x1e00,\n    \"Aringsmall\", 0xf7e5,\n    \"Asmall\", 0xf761,\n    \"Atilde\", 0x00c3,\n    \"Atildesmall\", 0xf7e3,\n    \"Aybarmenian\", 0x0531,\n    \"B\", 0x0042,\n    \"Bcircle\", 0x24b7,\n    \"Bdotaccent\", 0x1e02,\n    \"Bdotbelow\", 0x1e04,\n    \"Becyrillic\", 0x0411,\n    \"Benarmenian\", 0x0532,\n    \"Beta\", 0x0392,\n    \"Bhook\", 0x0181,\n    \"Blinebelow\", 0x1e06,\n    \"Bmonospace\", 0xff22,\n    \"Brevesmall\", 0xf6f4,\n    \"Bsmall\", 0xf762,\n    \"Btopbar\", 0x0182,\n    \"C\", 0x0043,\n    \"Caarmenian\", 0x053e,\n    \"Cacute\", 0x0106,\n    \"Caron\", 0xf6ca,\n    \"Caronsmall\", 0xf6f5,\n    \"Ccaron\", 0x010c,\n    \"Ccedilla\", 0x00c7,\n    \"Ccedillaacute\", 0x1e08,\n    \"Ccedillasmall\", 0xf7e7,\n    \"Ccircle\", 0x24b8,\n    \"Ccircumflex\", 0x0108,\n    \"Cdot\", 0x010a,\n    \"Cdotaccent\", 0x010a,\n    \"Cedillasmall\", 0xf7b8,\n    \"Chaarmenian\", 0x0549,\n    \"Cheabkhasiancyrillic\", 0x04bc,\n    \"Checyrillic\", 0x0427,\n    \"Chedescenderabkhasiancyrillic\", 0x04be,\n    \"Chedescendercyrillic\", 0x04b6,\n    \"Chedieresiscyrillic\", 0x04f4,\n    \"Cheharmenian\", 0x0543,\n    \"Chekhakassiancyrillic\", 0x04cb,\n    \"Cheverticalstrokecyrillic\", 0x04b8,\n    \"Chi\", 0x03a7,\n    \"Chook\", 0x0187,\n    \"Circumflexsmall\", 0xf6f6,\n    \"Cmonospace\", 0xff23,\n    \"Coarmenian\", 0x0551,\n    \"Csmall\", 0xf763,\n    \"D\", 0x0044,\n    \"DZ\", 0x01f1,\n    \"DZcaron\", 0x01c4,\n    \"Daarmenian\", 0x0534,\n    \"Dafrican\", 0x0189,\n    \"Dcaron\", 0x010e,\n    \"Dcedilla\", 0x1e10,\n    \"Dcircle\", 0x24b9,\n    \"Dcircumflexbelow\", 0x1e12,\n    \"Dcroat\", 0x0110,\n    \"Ddotaccent\", 0x1e0a,\n    \"Ddotbelow\", 0x1e0c,\n    \"Decyrillic\", 0x0414,\n    \"Deicoptic\", 0x03ee,\n    \"Delta\", 0x2206,\n    \"Deltagreek\", 0x0394,\n    \"Dhook\", 0x018a,\n    \"Dieresis\", 0xf6cb,\n    \"DieresisAcute\", 0xf6cc,\n    \"DieresisGrave\", 0xf6cd,\n    \"Dieresissmall\", 0xf7a8,\n    \"Digammagreek\", 0x03dc,\n    \"Djecyrillic\", 0x0402,\n    \"Dlinebelow\", 0x1e0e,\n    \"Dmonospace\", 0xff24,\n    \"Dotaccentsmall\", 0xf6f7,\n    \"Dslash\", 0x0110,\n    \"Dsmall\", 0xf764,\n    \"Dtopbar\", 0x018b,\n    \"Dz\", 0x01f2,\n    \"Dzcaron\", 0x01c5,\n    \"Dzeabkhasiancyrillic\", 0x04e0,\n    \"Dzecyrillic\", 0x0405,\n    \"Dzhecyrillic\", 0x040f,\n    \"E\", 0x0045,\n    \"Eacute\", 0x00c9,\n    \"Eacutesmall\", 0xf7e9,\n    \"Ebreve\", 0x0114,\n    \"Ecaron\", 0x011a,\n    \"Ecedillabreve\", 0x1e1c,\n    \"Echarmenian\", 0x0535,\n    \"Ecircle\", 0x24ba,\n    \"Ecircumflex\", 0x00ca,\n    \"Ecircumflexacute\", 0x1ebe,\n    \"Ecircumflexbelow\", 0x1e18,\n    \"Ecircumflexdotbelow\", 0x1ec6,\n    \"Ecircumflexgrave\", 0x1ec0,\n    \"Ecircumflexhookabove\", 0x1ec2,\n    \"Ecircumflexsmall\", 0xf7ea,\n    \"Ecircumflextilde\", 0x1ec4,\n    \"Ecyrillic\", 0x0404,\n    \"Edblgrave\", 0x0204,\n    \"Edieresis\", 0x00cb,\n    \"Edieresissmall\", 0xf7eb,\n    \"Edot\", 0x0116,\n    \"Edotaccent\", 0x0116,\n    \"Edotbelow\", 0x1eb8,\n    \"Efcyrillic\", 0x0424,\n    \"Egrave\", 0x00c8,\n    \"Egravesmall\", 0xf7e8,\n    \"Eharmenian\", 0x0537,\n    \"Ehookabove\", 0x1eba,\n    \"Eightroman\", 0x2167,\n    \"Einvertedbreve\", 0x0206,\n    \"Eiotifiedcyrillic\", 0x0464,\n    \"Elcyrillic\", 0x041b,\n    \"Elevenroman\", 0x216a,\n    \"Emacron\", 0x0112,\n    \"Emacronacute\", 0x1e16,\n    \"Emacrongrave\", 0x1e14,\n    \"Emcyrillic\", 0x041c,\n    \"Emonospace\", 0xff25,\n    \"Encyrillic\", 0x041d,\n    \"Endescendercyrillic\", 0x04a2,\n    \"Eng\", 0x014a,\n    \"Enghecyrillic\", 0x04a4,\n    \"Enhookcyrillic\", 0x04c7,\n    \"Eogonek\", 0x0118,\n    \"Eopen\", 0x0190,\n    \"Epsilon\", 0x0395,\n    \"Epsilontonos\", 0x0388,\n    \"Ercyrillic\", 0x0420,\n    \"Ereversed\", 0x018e,\n    \"Ereversedcyrillic\", 0x042d,\n    \"Escyrillic\", 0x0421,\n    \"Esdescendercyrillic\", 0x04aa,\n    \"Esh\", 0x01a9,\n    \"Esmall\", 0xf765,\n    \"Eta\", 0x0397,\n    \"Etarmenian\", 0x0538,\n    \"Etatonos\", 0x0389,\n    \"Eth\", 0x00d0,\n    \"Ethsmall\", 0xf7f0,\n    \"Etilde\", 0x1ebc,\n    \"Etildebelow\", 0x1e1a,\n    \"Euro\", 0x20ac,\n    \"Ezh\", 0x01b7,\n    \"Ezhcaron\", 0x01ee,\n    \"Ezhreversed\", 0x01b8,\n    \"F\", 0x0046,\n    \"Fcircle\", 0x24bb,\n    \"Fdotaccent\", 0x1e1e,\n    \"Feharmenian\", 0x0556,\n    \"Feicoptic\", 0x03e4,\n    \"Fhook\", 0x0191,\n    \"Fitacyrillic\", 0x0472,\n    \"Fiveroman\", 0x2164,\n    \"Fmonospace\", 0xff26,\n    \"Fourroman\", 0x2163,\n    \"Fsmall\", 0xf766,\n    \"G\", 0x0047,\n    \"GBsquare\", 0x3387,\n    \"Gacute\", 0x01f4,\n    \"Gamma\", 0x0393,\n    \"Gammaafrican\", 0x0194,\n    \"Gangiacoptic\", 0x03ea,\n    \"Gbreve\", 0x011e,\n    \"Gcaron\", 0x01e6,\n    \"Gcedilla\", 0x0122,\n    \"Gcircle\", 0x24bc,\n    \"Gcircumflex\", 0x011c,\n    \"Gcommaaccent\", 0x0122,\n    \"Gdot\", 0x0120,\n    \"Gdotaccent\", 0x0120,\n    \"Gecyrillic\", 0x0413,\n    \"Ghadarmenian\", 0x0542,\n    \"Ghemiddlehookcyrillic\", 0x0494,\n    \"Ghestrokecyrillic\", 0x0492,\n    \"Gheupturncyrillic\", 0x0490,\n    \"Ghook\", 0x0193,\n    \"Gimarmenian\", 0x0533,\n    \"Gjecyrillic\", 0x0403,\n    \"Gmacron\", 0x1e20,\n    \"Gmonospace\", 0xff27,\n    \"Grave\", 0xf6ce,\n    \"Gravesmall\", 0xf760,\n    \"Gsmall\", 0xf767,\n    \"Gsmallhook\", 0x029b,\n    \"Gstroke\", 0x01e4,\n    \"H\", 0x0048,\n    \"H18533\", 0x25cf,\n    \"H18543\", 0x25aa,\n    \"H18551\", 0x25ab,\n    \"H22073\", 0x25a1,\n    \"HPsquare\", 0x33cb,\n    \"Haabkhasiancyrillic\", 0x04a8,\n    \"Hadescendercyrillic\", 0x04b2,\n    \"Hardsigncyrillic\", 0x042a,\n    \"Hbar\", 0x0126,\n    \"Hbrevebelow\", 0x1e2a,\n    \"Hcedilla\", 0x1e28,\n    \"Hcircle\", 0x24bd,\n    \"Hcircumflex\", 0x0124,\n    \"Hdieresis\", 0x1e26,\n    \"Hdotaccent\", 0x1e22,\n    \"Hdotbelow\", 0x1e24,\n    \"Hmonospace\", 0xff28,\n    \"Hoarmenian\", 0x0540,\n    \"Horicoptic\", 0x03e8,\n    \"Hsmall\", 0xf768,\n    \"Hungarumlaut\", 0xf6cf,\n    \"Hungarumlautsmall\", 0xf6f8,\n    \"Hzsquare\", 0x3390,\n    \"I\", 0x0049,\n    \"IAcyrillic\", 0x042f,\n    \"IJ\", 0x0132,\n    \"IUcyrillic\", 0x042e,\n    \"Iacute\", 0x00cd,\n    \"Iacutesmall\", 0xf7ed,\n    \"Ibreve\", 0x012c,\n    \"Icaron\", 0x01cf,\n    \"Icircle\", 0x24be,\n    \"Icircumflex\", 0x00ce,\n    \"Icircumflexsmall\", 0xf7ee,\n    \"Icyrillic\", 0x0406,\n    \"Idblgrave\", 0x0208,\n    \"Idieresis\", 0x00cf,\n    \"Idieresisacute\", 0x1e2e,\n    \"Idieresiscyrillic\", 0x04e4,\n    \"Idieresissmall\", 0xf7ef,\n    \"Idot\", 0x0130,\n    \"Idotaccent\", 0x0130,\n    \"Idotbelow\", 0x1eca,\n    \"Iebrevecyrillic\", 0x04d6,\n    \"Iecyrillic\", 0x0415,\n    \"Ifraktur\", 0x2111,\n    \"Igrave\", 0x00cc,\n    \"Igravesmall\", 0xf7ec,\n    \"Ihookabove\", 0x1ec8,\n    \"Iicyrillic\", 0x0418,\n    \"Iinvertedbreve\", 0x020a,\n    \"Iishortcyrillic\", 0x0419,\n    \"Imacron\", 0x012a,\n    \"Imacroncyrillic\", 0x04e2,\n    \"Imonospace\", 0xff29,\n    \"Iniarmenian\", 0x053b,\n    \"Iocyrillic\", 0x0401,\n    \"Iogonek\", 0x012e,\n    \"Iota\", 0x0399,\n    \"Iotaafrican\", 0x0196,\n    \"Iotadieresis\", 0x03aa,\n    \"Iotatonos\", 0x038a,\n    \"Ismall\", 0xf769,\n    \"Istroke\", 0x0197,\n    \"Itilde\", 0x0128,\n    \"Itildebelow\", 0x1e2c,\n    \"Izhitsacyrillic\", 0x0474,\n    \"Izhitsadblgravecyrillic\", 0x0476,\n    \"J\", 0x004a,\n    \"Jaarmenian\", 0x0541,\n    \"Jcircle\", 0x24bf,\n    \"Jcircumflex\", 0x0134,\n    \"Jecyrillic\", 0x0408,\n    \"Jheharmenian\", 0x054b,\n    \"Jmonospace\", 0xff2a,\n    \"Jsmall\", 0xf76a,\n    \"K\", 0x004b,\n    \"KBsquare\", 0x3385,\n    \"KKsquare\", 0x33cd,\n    \"Kabashkircyrillic\", 0x04a0,\n    \"Kacute\", 0x1e30,\n    \"Kacyrillic\", 0x041a,\n    \"Kadescendercyrillic\", 0x049a,\n    \"Kahookcyrillic\", 0x04c3,\n    \"Kappa\", 0x039a,\n    \"Kastrokecyrillic\", 0x049e,\n    \"Kaverticalstrokecyrillic\", 0x049c,\n    \"Kcaron\", 0x01e8,\n    \"Kcedilla\", 0x0136,\n    \"Kcircle\", 0x24c0,\n    \"Kcommaaccent\", 0x0136,\n    \"Kdotbelow\", 0x1e32,\n    \"Keharmenian\", 0x0554,\n    \"Kenarmenian\", 0x053f,\n    \"Khacyrillic\", 0x0425,\n    \"Kheicoptic\", 0x03e6,\n    \"Khook\", 0x0198,\n    \"Kjecyrillic\", 0x040c,\n    \"Klinebelow\", 0x1e34,\n    \"Kmonospace\", 0xff2b,\n    \"Koppacyrillic\", 0x0480,\n    \"Koppagreek\", 0x03de,\n    \"Ksicyrillic\", 0x046e,\n    \"Ksmall\", 0xf76b,\n    \"L\", 0x004c,\n    \"LJ\", 0x01c7,\n    \"LL\", 0xf6bf,\n    \"Lacute\", 0x0139,\n    \"Lambda\", 0x039b,\n    \"Lcaron\", 0x013d,\n    \"Lcedilla\", 0x013b,\n    \"Lcircle\", 0x24c1,\n    \"Lcircumflexbelow\", 0x1e3c,\n    \"Lcommaaccent\", 0x013b,\n    \"Ldot\", 0x013f,\n    \"Ldotaccent\", 0x013f,\n    \"Ldotbelow\", 0x1e36,\n    \"Ldotbelowmacron\", 0x1e38,\n    \"Liwnarmenian\", 0x053c,\n    \"Lj\", 0x01c8,\n    \"Ljecyrillic\", 0x0409,\n    \"Llinebelow\", 0x1e3a,\n    \"Lmonospace\", 0xff2c,\n    \"Lslash\", 0x0141,\n    \"Lslashsmall\", 0xf6f9,\n    \"Lsmall\", 0xf76c,\n    \"M\", 0x004d,\n    \"MBsquare\", 0x3386,\n    \"Macron\", 0xf6d0,\n    \"Macronsmall\", 0xf7af,\n    \"Macute\", 0x1e3e,\n    \"Mcircle\", 0x24c2,\n    \"Mdotaccent\", 0x1e40,\n    \"Mdotbelow\", 0x1e42,\n    \"Menarmenian\", 0x0544,\n    \"Mmonospace\", 0xff2d,\n    \"Msmall\", 0xf76d,\n    \"Mturned\", 0x019c,\n    \"Mu\", 0x039c,\n    \"N\", 0x004e,\n    \"NJ\", 0x01ca,\n    \"Nacute\", 0x0143,\n    \"Ncaron\", 0x0147,\n    \"Ncedilla\", 0x0145,\n    \"Ncircle\", 0x24c3,\n    \"Ncircumflexbelow\", 0x1e4a,\n    \"Ncommaaccent\", 0x0145,\n    \"Ndotaccent\", 0x1e44,\n    \"Ndotbelow\", 0x1e46,\n    \"Nhookleft\", 0x019d,\n    \"Nineroman\", 0x2168,\n    \"Nj\", 0x01cb,\n    \"Njecyrillic\", 0x040a,\n    \"Nlinebelow\", 0x1e48,\n    \"Nmonospace\", 0xff2e,\n    \"Nowarmenian\", 0x0546,\n    \"Nsmall\", 0xf76e,\n    \"Ntilde\", 0x00d1,\n    \"Ntildesmall\", 0xf7f1,\n    \"Nu\", 0x039d,\n    \"O\", 0x004f,\n    \"OE\", 0x0152,\n    \"OEsmall\", 0xf6fa,\n    \"Oacute\", 0x00d3,\n    \"Oacutesmall\", 0xf7f3,\n    \"Obarredcyrillic\", 0x04e8,\n    \"Obarreddieresiscyrillic\", 0x04ea,\n    \"Obreve\", 0x014e,\n    \"Ocaron\", 0x01d1,\n    \"Ocenteredtilde\", 0x019f,\n    \"Ocircle\", 0x24c4,\n    \"Ocircumflex\", 0x00d4,\n    \"Ocircumflexacute\", 0x1ed0,\n    \"Ocircumflexdotbelow\", 0x1ed8,\n    \"Ocircumflexgrave\", 0x1ed2,\n    \"Ocircumflexhookabove\", 0x1ed4,\n    \"Ocircumflexsmall\", 0xf7f4,\n    \"Ocircumflextilde\", 0x1ed6,\n    \"Ocyrillic\", 0x041e,\n    \"Odblacute\", 0x0150,\n    \"Odblgrave\", 0x020c,\n    \"Odieresis\", 0x00d6,\n    \"Odieresiscyrillic\", 0x04e6,\n    \"Odieresissmall\", 0xf7f6,\n    \"Odotbelow\", 0x1ecc,\n    \"Ogoneksmall\", 0xf6fb,\n    \"Ograve\", 0x00d2,\n    \"Ogravesmall\", 0xf7f2,\n    \"Oharmenian\", 0x0555,\n    \"Ohm\", 0x2126,\n    \"Ohookabove\", 0x1ece,\n    \"Ohorn\", 0x01a0,\n    \"Ohornacute\", 0x1eda,\n    \"Ohorndotbelow\", 0x1ee2,\n    \"Ohorngrave\", 0x1edc,\n    \"Ohornhookabove\", 0x1ede,\n    \"Ohorntilde\", 0x1ee0,\n    \"Ohungarumlaut\", 0x0150,\n    \"Oi\", 0x01a2,\n    \"Oinvertedbreve\", 0x020e,\n    \"Omacron\", 0x014c,\n    \"Omacronacute\", 0x1e52,\n    \"Omacrongrave\", 0x1e50,\n    \"Omega\", 0x2126,\n    \"Omegacyrillic\", 0x0460,\n    \"Omegagreek\", 0x03a9,\n    \"Omegaroundcyrillic\", 0x047a,\n    \"Omegatitlocyrillic\", 0x047c,\n    \"Omegatonos\", 0x038f,\n    \"Omicron\", 0x039f,\n    \"Omicrontonos\", 0x038c,\n    \"Omonospace\", 0xff2f,\n    \"Oneroman\", 0x2160,\n    \"Oogonek\", 0x01ea,\n    \"Oogonekmacron\", 0x01ec,\n    \"Oopen\", 0x0186,\n    \"Oslash\", 0x00d8,\n    \"Oslashacute\", 0x01fe,\n    \"Oslashsmall\", 0xf7f8,\n    \"Osmall\", 0xf76f,\n    \"Ostrokeacute\", 0x01fe,\n    \"Otcyrillic\", 0x047e,\n    \"Otilde\", 0x00d5,\n    \"Otildeacute\", 0x1e4c,\n    \"Otildedieresis\", 0x1e4e,\n    \"Otildesmall\", 0xf7f5,\n    \"P\", 0x0050,\n    \"Pacute\", 0x1e54,\n    \"Pcircle\", 0x24c5,\n    \"Pdotaccent\", 0x1e56,\n    \"Pecyrillic\", 0x041f,\n    \"Peharmenian\", 0x054a,\n    \"Pemiddlehookcyrillic\", 0x04a6,\n    \"Phi\", 0x03a6,\n    \"Phook\", 0x01a4,\n    \"Pi\", 0x03a0,\n    \"Piwrarmenian\", 0x0553,\n    \"Pmonospace\", 0xff30,\n    \"Psi\", 0x03a8,\n    \"Psicyrillic\", 0x0470,\n    \"Psmall\", 0xf770,\n    \"Q\", 0x0051,\n    \"Qcircle\", 0x24c6,\n    \"Qmonospace\", 0xff31,\n    \"Qsmall\", 0xf771,\n    \"R\", 0x0052,\n    \"Raarmenian\", 0x054c,\n    \"Racute\", 0x0154,\n    \"Rcaron\", 0x0158,\n    \"Rcedilla\", 0x0156,\n    \"Rcircle\", 0x24c7,\n    \"Rcommaaccent\", 0x0156,\n    \"Rdblgrave\", 0x0210,\n    \"Rdotaccent\", 0x1e58,\n    \"Rdotbelow\", 0x1e5a,\n    \"Rdotbelowmacron\", 0x1e5c,\n    \"Reharmenian\", 0x0550,\n    \"Rfraktur\", 0x211c,\n    \"Rho\", 0x03a1,\n    \"Ringsmall\", 0xf6fc,\n    \"Rinvertedbreve\", 0x0212,\n    \"Rlinebelow\", 0x1e5e,\n    \"Rmonospace\", 0xff32,\n    \"Rsmall\", 0xf772,\n    \"Rsmallinverted\", 0x0281,\n    \"Rsmallinvertedsuperior\", 0x02b6,\n    \"S\", 0x0053,\n    \"SF010000\", 0x250c,\n    \"SF020000\", 0x2514,\n    \"SF030000\", 0x2510,\n    \"SF040000\", 0x2518,\n    \"SF050000\", 0x253c,\n    \"SF060000\", 0x252c,\n    \"SF070000\", 0x2534,\n    \"SF080000\", 0x251c,\n    \"SF090000\", 0x2524,\n    \"SF100000\", 0x2500,\n    \"SF110000\", 0x2502,\n    \"SF190000\", 0x2561,\n    \"SF200000\", 0x2562,\n    \"SF210000\", 0x2556,\n    \"SF220000\", 0x2555,\n    \"SF230000\", 0x2563,\n    \"SF240000\", 0x2551,\n    \"SF250000\", 0x2557,\n    \"SF260000\", 0x255d,\n    \"SF270000\", 0x255c,\n    \"SF280000\", 0x255b,\n    \"SF360000\", 0x255e,\n    \"SF370000\", 0x255f,\n    \"SF380000\", 0x255a,\n    \"SF390000\", 0x2554,\n    \"SF400000\", 0x2569,\n    \"SF410000\", 0x2566,\n    \"SF420000\", 0x2560,\n    \"SF430000\", 0x2550,\n    \"SF440000\", 0x256c,\n    \"SF450000\", 0x2567,\n    \"SF460000\", 0x2568,\n    \"SF470000\", 0x2564,\n    \"SF480000\", 0x2565,\n    \"SF490000\", 0x2559,\n    \"SF500000\", 0x2558,\n    \"SF510000\", 0x2552,\n    \"SF520000\", 0x2553,\n    \"SF530000\", 0x256b,\n    \"SF540000\", 0x256a,\n    \"Sacute\", 0x015a,\n    \"Sacutedotaccent\", 0x1e64,\n    \"Sampigreek\", 0x03e0,\n    \"Scaron\", 0x0160,\n    \"Scarondotaccent\", 0x1e66,\n    \"Scaronsmall\", 0xf6fd,\n    \"Scedilla\", 0x015e,\n    \"Schwa\", 0x018f,\n    \"Schwacyrillic\", 0x04d8,\n    \"Schwadieresiscyrillic\", 0x04da,\n    \"Scircle\", 0x24c8,\n    \"Scircumflex\", 0x015c,\n    \"Scommaaccent\", 0x0218,\n    \"Sdotaccent\", 0x1e60,\n    \"Sdotbelow\", 0x1e62,\n    \"Sdotbelowdotaccent\", 0x1e68,\n    \"Seharmenian\", 0x054d,\n    \"Sevenroman\", 0x2166,\n    \"Shaarmenian\", 0x0547,\n    \"Shacyrillic\", 0x0428,\n    \"Shchacyrillic\", 0x0429,\n    \"Sheicoptic\", 0x03e2,\n    \"Shhacyrillic\", 0x04ba,\n    \"Shimacoptic\", 0x03ec,\n    \"Sigma\", 0x03a3,\n    \"Sixroman\", 0x2165,\n    \"Smonospace\", 0xff33,\n    \"Softsigncyrillic\", 0x042c,\n    \"Ssmall\", 0xf773,\n    \"Stigmagreek\", 0x03da,\n    \"T\", 0x0054,\n    \"Tau\", 0x03a4,\n    \"Tbar\", 0x0166,\n    \"Tcaron\", 0x0164,\n    \"Tcedilla\", 0x0162,\n    \"Tcircle\", 0x24c9,\n    \"Tcircumflexbelow\", 0x1e70,\n    \"Tcommaaccent\", 0x0162,\n    \"Tdotaccent\", 0x1e6a,\n    \"Tdotbelow\", 0x1e6c,\n    \"Tecyrillic\", 0x0422,\n    \"Tedescendercyrillic\", 0x04ac,\n    \"Tenroman\", 0x2169,\n    \"Tetsecyrillic\", 0x04b4,\n    \"Theta\", 0x0398,\n    \"Thook\", 0x01ac,\n    \"Thorn\", 0x00de,\n    \"Thornsmall\", 0xf7fe,\n    \"Threeroman\", 0x2162,\n    \"Tildesmall\", 0xf6fe,\n    \"Tiwnarmenian\", 0x054f,\n    \"Tlinebelow\", 0x1e6e,\n    \"Tmonospace\", 0xff34,\n    \"Toarmenian\", 0x0539,\n    \"Tonefive\", 0x01bc,\n    \"Tonesix\", 0x0184,\n    \"Tonetwo\", 0x01a7,\n    \"Tretroflexhook\", 0x01ae,\n    \"Tsecyrillic\", 0x0426,\n    \"Tshecyrillic\", 0x040b,\n    \"Tsmall\", 0xf774,\n    \"Twelveroman\", 0x216b,\n    \"Tworoman\", 0x2161,\n    \"U\", 0x0055,\n    \"Uacute\", 0x00da,\n    \"Uacutesmall\", 0xf7fa,\n    \"Ubreve\", 0x016c,\n    \"Ucaron\", 0x01d3,\n    \"Ucircle\", 0x24ca,\n    \"Ucircumflex\", 0x00db,\n    \"Ucircumflexbelow\", 0x1e76,\n    \"Ucircumflexsmall\", 0xf7fb,\n    \"Ucyrillic\", 0x0423,\n    \"Udblacute\", 0x0170,\n    \"Udblgrave\", 0x0214,\n    \"Udieresis\", 0x00dc,\n    \"Udieresisacute\", 0x01d7,\n    \"Udieresisbelow\", 0x1e72,\n    \"Udieresiscaron\", 0x01d9,\n    \"Udieresiscyrillic\", 0x04f0,\n    \"Udieresisgrave\", 0x01db,\n    \"Udieresismacron\", 0x01d5,\n    \"Udieresissmall\", 0xf7fc,\n    \"Udotbelow\", 0x1ee4,\n    \"Ugrave\", 0x00d9,\n    \"Ugravesmall\", 0xf7f9,\n    \"Uhookabove\", 0x1ee6,\n    \"Uhorn\", 0x01af,\n    \"Uhornacute\", 0x1ee8,\n    \"Uhorndotbelow\", 0x1ef0,\n    \"Uhorngrave\", 0x1eea,\n    \"Uhornhookabove\", 0x1eec,\n    \"Uhorntilde\", 0x1eee,\n    \"Uhungarumlaut\", 0x0170,\n    \"Uhungarumlautcyrillic\", 0x04f2,\n    \"Uinvertedbreve\", 0x0216,\n    \"Ukcyrillic\", 0x0478,\n    \"Umacron\", 0x016a,\n    \"Umacroncyrillic\", 0x04ee,\n    \"Umacrondieresis\", 0x1e7a,\n    \"Umonospace\", 0xff35,\n    \"Uogonek\", 0x0172,\n    \"Upsilon\", 0x03a5,\n    \"Upsilon1\", 0x03d2,\n    \"Upsilonacutehooksymbolgreek\", 0x03d3,\n    \"Upsilonafrican\", 0x01b1,\n    \"Upsilondieresis\", 0x03ab,\n    \"Upsilondieresishooksymbolgreek\", 0x03d4,\n    \"Upsilonhooksymbol\", 0x03d2,\n    \"Upsilontonos\", 0x038e,\n    \"Uring\", 0x016e,\n    \"Ushortcyrillic\", 0x040e,\n    \"Usmall\", 0xf775,\n    \"Ustraightcyrillic\", 0x04ae,\n    \"Ustraightstrokecyrillic\", 0x04b0,\n    \"Utilde\", 0x0168,\n    \"Utildeacute\", 0x1e78,\n    \"Utildebelow\", 0x1e74,\n    \"V\", 0x0056,\n    \"Vcircle\", 0x24cb,\n    \"Vdotbelow\", 0x1e7e,\n    \"Vecyrillic\", 0x0412,\n    \"Vewarmenian\", 0x054e,\n    \"Vhook\", 0x01b2,\n    \"Vmonospace\", 0xff36,\n    \"Voarmenian\", 0x0548,\n    \"Vsmall\", 0xf776,\n    \"Vtilde\", 0x1e7c,\n    \"W\", 0x0057,\n    \"Wacute\", 0x1e82,\n    \"Wcircle\", 0x24cc,\n    \"Wcircumflex\", 0x0174,\n    \"Wdieresis\", 0x1e84,\n    \"Wdotaccent\", 0x1e86,\n    \"Wdotbelow\", 0x1e88,\n    \"Wgrave\", 0x1e80,\n    \"Wmonospace\", 0xff37,\n    \"Wsmall\", 0xf777,\n    \"X\", 0x0058,\n    \"Xcircle\", 0x24cd,\n    \"Xdieresis\", 0x1e8c,\n    \"Xdotaccent\", 0x1e8a,\n    \"Xeharmenian\", 0x053d,\n    \"Xi\", 0x039e,\n    \"Xmonospace\", 0xff38,\n    \"Xsmall\", 0xf778,\n    \"Y\", 0x0059,\n    \"Yacute\", 0x00dd,\n    \"Yacutesmall\", 0xf7fd,\n    \"Yatcyrillic\", 0x0462,\n    \"Ycircle\", 0x24ce,\n    \"Ycircumflex\", 0x0176,\n    \"Ydieresis\", 0x0178,\n    \"Ydieresissmall\", 0xf7ff,\n    \"Ydotaccent\", 0x1e8e,\n    \"Ydotbelow\", 0x1ef4,\n    \"Yericyrillic\", 0x042b,\n    \"Yerudieresiscyrillic\", 0x04f8,\n    \"Ygrave\", 0x1ef2,\n    \"Yhook\", 0x01b3,\n    \"Yhookabove\", 0x1ef6,\n    \"Yiarmenian\", 0x0545,\n    \"Yicyrillic\", 0x0407,\n    \"Yiwnarmenian\", 0x0552,\n    \"Ymonospace\", 0xff39,\n    \"Ysmall\", 0xf779,\n    \"Ytilde\", 0x1ef8,\n    \"Yusbigcyrillic\", 0x046a,\n    \"Yusbigiotifiedcyrillic\", 0x046c,\n    \"Yuslittlecyrillic\", 0x0466,\n    \"Yuslittleiotifiedcyrillic\", 0x0468,\n    \"Z\", 0x005a,\n    \"Zaarmenian\", 0x0536,\n    \"Zacute\", 0x0179,\n    \"Zcaron\", 0x017d,\n    \"Zcaronsmall\", 0xf6ff,\n    \"Zcircle\", 0x24cf,\n    \"Zcircumflex\", 0x1e90,\n    \"Zdot\", 0x017b,\n    \"Zdotaccent\", 0x017b,\n    \"Zdotbelow\", 0x1e92,\n    \"Zecyrillic\", 0x0417,\n    \"Zedescendercyrillic\", 0x0498,\n    \"Zedieresiscyrillic\", 0x04de,\n    \"Zeta\", 0x0396,\n    \"Zhearmenian\", 0x053a,\n    \"Zhebrevecyrillic\", 0x04c1,\n    \"Zhecyrillic\", 0x0416,\n    \"Zhedescendercyrillic\", 0x0496,\n    \"Zhedieresiscyrillic\", 0x04dc,\n    \"Zlinebelow\", 0x1e94,\n    \"Zmonospace\", 0xff3a,\n    \"Zsmall\", 0xf77a,\n    \"Zstroke\", 0x01b5,\n    \"a\", 0x0061,\n    \"aabengali\", 0x0986,\n    \"aacute\", 0x00e1,\n    \"aadeva\", 0x0906,\n    \"aagujarati\", 0x0a86,\n    \"aagurmukhi\", 0x0a06,\n    \"aamatragurmukhi\", 0x0a3e,\n    \"aarusquare\", 0x3303,\n    \"aavowelsignbengali\", 0x09be,\n    \"aavowelsigndeva\", 0x093e,\n    \"aavowelsigngujarati\", 0x0abe,\n    \"abbreviationmarkarmenian\", 0x055f,\n    \"abbreviationsigndeva\", 0x0970,\n    \"abengali\", 0x0985,\n    \"abopomofo\", 0x311a,\n    \"abreve\", 0x0103,\n    \"abreveacute\", 0x1eaf,\n    \"abrevecyrillic\", 0x04d1,\n    \"abrevedotbelow\", 0x1eb7,\n    \"abrevegrave\", 0x1eb1,\n    \"abrevehookabove\", 0x1eb3,\n    \"abrevetilde\", 0x1eb5,\n    \"acaron\", 0x01ce,\n    \"acircle\", 0x24d0,\n    \"acircumflex\", 0x00e2,\n    \"acircumflexacute\", 0x1ea5,\n    \"acircumflexdotbelow\", 0x1ead,\n    \"acircumflexgrave\", 0x1ea7,\n    \"acircumflexhookabove\", 0x1ea9,\n    \"acircumflextilde\", 0x1eab,\n    \"acute\", 0x00b4,\n    \"acutebelowcmb\", 0x0317,\n    \"acutecmb\", 0x0301,\n    \"acutecomb\", 0x0301,\n    \"acutedeva\", 0x0954,\n    \"acutelowmod\", 0x02cf,\n    \"acutetonecmb\", 0x0341,\n    \"acyrillic\", 0x0430,\n    \"adblgrave\", 0x0201,\n    \"addakgurmukhi\", 0x0a71,\n    \"adeva\", 0x0905,\n    \"adieresis\", 0x00e4,\n    \"adieresiscyrillic\", 0x04d3,\n    \"adieresismacron\", 0x01df,\n    \"adotbelow\", 0x1ea1,\n    \"adotmacron\", 0x01e1,\n    \"ae\", 0x00e6,\n    \"aeacute\", 0x01fd,\n    \"aekorean\", 0x3150,\n    \"aemacron\", 0x01e3,\n    \"afii00208\", 0x2015,\n    \"afii08941\", 0x20a4,\n    \"afii10017\", 0x0410,\n    \"afii10018\", 0x0411,\n    \"afii10019\", 0x0412,\n    \"afii10020\", 0x0413,\n    \"afii10021\", 0x0414,\n    \"afii10022\", 0x0415,\n    \"afii10023\", 0x0401,\n    \"afii10024\", 0x0416,\n    \"afii10025\", 0x0417,\n    \"afii10026\", 0x0418,\n    \"afii10027\", 0x0419,\n    \"afii10028\", 0x041a,\n    \"afii10029\", 0x041b,\n    \"afii10030\", 0x041c,\n    \"afii10031\", 0x041d,\n    \"afii10032\", 0x041e,\n    \"afii10033\", 0x041f,\n    \"afii10034\", 0x0420,\n    \"afii10035\", 0x0421,\n    \"afii10036\", 0x0422,\n    \"afii10037\", 0x0423,\n    \"afii10038\", 0x0424,\n    \"afii10039\", 0x0425,\n    \"afii10040\", 0x0426,\n    \"afii10041\", 0x0427,\n    \"afii10042\", 0x0428,\n    \"afii10043\", 0x0429,\n    \"afii10044\", 0x042a,\n    \"afii10045\", 0x042b,\n    \"afii10046\", 0x042c,\n    \"afii10047\", 0x042d,\n    \"afii10048\", 0x042e,\n    \"afii10049\", 0x042f,\n    \"afii10050\", 0x0490,\n    \"afii10051\", 0x0402,\n    \"afii10052\", 0x0403,\n    \"afii10053\", 0x0404,\n    \"afii10054\", 0x0405,\n    \"afii10055\", 0x0406,\n    \"afii10056\", 0x0407,\n    \"afii10057\", 0x0408,\n    \"afii10058\", 0x0409,\n    \"afii10059\", 0x040a,\n    \"afii10060\", 0x040b,\n    \"afii10061\", 0x040c,\n    \"afii10062\", 0x040e,\n    \"afii10063\", 0xf6c4,\n    \"afii10064\", 0xf6c5,\n    \"afii10065\", 0x0430,\n    \"afii10066\", 0x0431,\n    \"afii10067\", 0x0432,\n    \"afii10068\", 0x0433,\n    \"afii10069\", 0x0434,\n    \"afii10070\", 0x0435,\n    \"afii10071\", 0x0451,\n    \"afii10072\", 0x0436,\n    \"afii10073\", 0x0437,\n    \"afii10074\", 0x0438,\n    \"afii10075\", 0x0439,\n    \"afii10076\", 0x043a,\n    \"afii10077\", 0x043b,\n    \"afii10078\", 0x043c,\n    \"afii10079\", 0x043d,\n    \"afii10080\", 0x043e,\n    \"afii10081\", 0x043f,\n    \"afii10082\", 0x0440,\n    \"afii10083\", 0x0441,\n    \"afii10084\", 0x0442,\n    \"afii10085\", 0x0443,\n    \"afii10086\", 0x0444,\n    \"afii10087\", 0x0445,\n    \"afii10088\", 0x0446,\n    \"afii10089\", 0x0447,\n    \"afii10090\", 0x0448,\n    \"afii10091\", 0x0449,\n    \"afii10092\", 0x044a,\n    \"afii10093\", 0x044b,\n    \"afii10094\", 0x044c,\n    \"afii10095\", 0x044d,\n    \"afii10096\", 0x044e,\n    \"afii10097\", 0x044f,\n    \"afii10098\", 0x0491,\n    \"afii10099\", 0x0452,\n    \"afii10100\", 0x0453,\n    \"afii10101\", 0x0454,\n    \"afii10102\", 0x0455,\n    \"afii10103\", 0x0456,\n    \"afii10104\", 0x0457,\n    \"afii10105\", 0x0458,\n    \"afii10106\", 0x0459,\n    \"afii10107\", 0x045a,\n    \"afii10108\", 0x045b,\n    \"afii10109\", 0x045c,\n    \"afii10110\", 0x045e,\n    \"afii10145\", 0x040f,\n    \"afii10146\", 0x0462,\n    \"afii10147\", 0x0472,\n    \"afii10148\", 0x0474,\n    \"afii10192\", 0xf6c6,\n    \"afii10193\", 0x045f,\n    \"afii10194\", 0x0463,\n    \"afii10195\", 0x0473,\n    \"afii10196\", 0x0475,\n    \"afii10831\", 0xf6c7,\n    \"afii10832\", 0xf6c8,\n    \"afii10846\", 0x04d9,\n    \"afii299\", 0x200e,\n    \"afii300\", 0x200f,\n    \"afii301\", 0x200d,\n    \"afii57381\", 0x066a,\n    \"afii57388\", 0x060c,\n    \"afii57392\", 0x0660,\n    \"afii57393\", 0x0661,\n    \"afii57394\", 0x0662,\n    \"afii57395\", 0x0663,\n    \"afii57396\", 0x0664,\n    \"afii57397\", 0x0665,\n    \"afii57398\", 0x0666,\n    \"afii57399\", 0x0667,\n    \"afii57400\", 0x0668,\n    \"afii57401\", 0x0669,\n    \"afii57403\", 0x061b,\n    \"afii57407\", 0x061f,\n    \"afii57409\", 0x0621,\n    \"afii57410\", 0x0622,\n    \"afii57411\", 0x0623,\n    \"afii57412\", 0x0624,\n    \"afii57413\", 0x0625,\n    \"afii57414\", 0x0626,\n    \"afii57415\", 0x0627,\n    \"afii57416\", 0x0628,\n    \"afii57417\", 0x0629,\n    \"afii57418\", 0x062a,\n    \"afii57419\", 0x062b,\n    \"afii57420\", 0x062c,\n    \"afii57421\", 0x062d,\n    \"afii57422\", 0x062e,\n    \"afii57423\", 0x062f,\n    \"afii57424\", 0x0630,\n    \"afii57425\", 0x0631,\n    \"afii57426\", 0x0632,\n    \"afii57427\", 0x0633,\n    \"afii57428\", 0x0634,\n    \"afii57429\", 0x0635,\n    \"afii57430\", 0x0636,\n    \"afii57431\", 0x0637,\n    \"afii57432\", 0x0638,\n    \"afii57433\", 0x0639,\n    \"afii57434\", 0x063a,\n    \"afii57440\", 0x0640,\n    \"afii57441\", 0x0641,\n    \"afii57442\", 0x0642,\n    \"afii57443\", 0x0643,\n    \"afii57444\", 0x0644,\n    \"afii57445\", 0x0645,\n    \"afii57446\", 0x0646,\n    \"afii57448\", 0x0648,\n    \"afii57449\", 0x0649,\n    \"afii57450\", 0x064a,\n    \"afii57451\", 0x064b,\n    \"afii57452\", 0x064c,\n    \"afii57453\", 0x064d,\n    \"afii57454\", 0x064e,\n    \"afii57455\", 0x064f,\n    \"afii57456\", 0x0650,\n    \"afii57457\", 0x0651,\n    \"afii57458\", 0x0652,\n    \"afii57470\", 0x0647,\n    \"afii57505\", 0x06a4,\n    \"afii57506\", 0x067e,\n    \"afii57507\", 0x0686,\n    \"afii57508\", 0x0698,\n    \"afii57509\", 0x06af,\n    \"afii57511\", 0x0679,\n    \"afii57512\", 0x0688,\n    \"afii57513\", 0x0691,\n    \"afii57514\", 0x06ba,\n    \"afii57519\", 0x06d2,\n    \"afii57534\", 0x06d5,\n    \"afii57636\", 0x20aa,\n    \"afii57645\", 0x05be,\n    \"afii57658\", 0x05c3,\n    \"afii57664\", 0x05d0,\n    \"afii57665\", 0x05d1,\n    \"afii57666\", 0x05d2,\n    \"afii57667\", 0x05d3,\n    \"afii57668\", 0x05d4,\n    \"afii57669\", 0x05d5,\n    \"afii57670\", 0x05d6,\n    \"afii57671\", 0x05d7,\n    \"afii57672\", 0x05d8,\n    \"afii57673\", 0x05d9,\n    \"afii57674\", 0x05da,\n    \"afii57675\", 0x05db,\n    \"afii57676\", 0x05dc,\n    \"afii57677\", 0x05dd,\n    \"afii57678\", 0x05de,\n    \"afii57679\", 0x05df,\n    \"afii57680\", 0x05e0,\n    \"afii57681\", 0x05e1,\n    \"afii57682\", 0x05e2,\n    \"afii57683\", 0x05e3,\n    \"afii57684\", 0x05e4,\n    \"afii57685\", 0x05e5,\n    \"afii57686\", 0x05e6,\n    \"afii57687\", 0x05e7,\n    \"afii57688\", 0x05e8,\n    \"afii57689\", 0x05e9,\n    \"afii57690\", 0x05ea,\n    \"afii57694\", 0xfb2a,\n    \"afii57695\", 0xfb2b,\n    \"afii57700\", 0xfb4b,\n    \"afii57705\", 0xfb1f,\n    \"afii57716\", 0x05f0,\n    \"afii57717\", 0x05f1,\n    \"afii57718\", 0x05f2,\n    \"afii57723\", 0xfb35,\n    \"afii57793\", 0x05b4,\n    \"afii57794\", 0x05b5,\n    \"afii57795\", 0x05b6,\n    \"afii57796\", 0x05bb,\n    \"afii57797\", 0x05b8,\n    \"afii57798\", 0x05b7,\n    \"afii57799\", 0x05b0,\n    \"afii57800\", 0x05b2,\n    \"afii57801\", 0x05b1,\n    \"afii57802\", 0x05b3,\n    \"afii57803\", 0x05c2,\n    \"afii57804\", 0x05c1,\n    \"afii57806\", 0x05b9,\n    \"afii57807\", 0x05bc,\n    \"afii57839\", 0x05bd,\n    \"afii57841\", 0x05bf,\n    \"afii57842\", 0x05c0,\n    \"afii57929\", 0x02bc,\n    \"afii61248\", 0x2105,\n    \"afii61289\", 0x2113,\n    \"afii61352\", 0x2116,\n    \"afii61573\", 0x202c,\n    \"afii61574\", 0x202d,\n    \"afii61575\", 0x202e,\n    \"afii61664\", 0x200c,\n    \"afii63167\", 0x066d,\n    \"afii64937\", 0x02bd,\n    \"agrave\", 0x00e0,\n    \"agujarati\", 0x0a85,\n    \"agurmukhi\", 0x0a05,\n    \"ahiragana\", 0x3042,\n    \"ahookabove\", 0x1ea3,\n    \"aibengali\", 0x0990,\n    \"aibopomofo\", 0x311e,\n    \"aideva\", 0x0910,\n    \"aiecyrillic\", 0x04d5,\n    \"aigujarati\", 0x0a90,\n    \"aigurmukhi\", 0x0a10,\n    \"aimatragurmukhi\", 0x0a48,\n    \"ainarabic\", 0x0639,\n    \"ainfinalarabic\", 0xfeca,\n    \"aininitialarabic\", 0xfecb,\n    \"ainmedialarabic\", 0xfecc,\n    \"ainvertedbreve\", 0x0203,\n    \"aivowelsignbengali\", 0x09c8,\n    \"aivowelsigndeva\", 0x0948,\n    \"aivowelsigngujarati\", 0x0ac8,\n    \"akatakana\", 0x30a2,\n    \"akatakanahalfwidth\", 0xff71,\n    \"akorean\", 0x314f,\n    \"alef\", 0x05d0,\n    \"alefarabic\", 0x0627,\n    \"alefdageshhebrew\", 0xfb30,\n    \"aleffinalarabic\", 0xfe8e,\n    \"alefhamzaabovearabic\", 0x0623,\n    \"alefhamzaabovefinalarabic\", 0xfe84,\n    \"alefhamzabelowarabic\", 0x0625,\n    \"alefhamzabelowfinalarabic\", 0xfe88,\n    \"alefhebrew\", 0x05d0,\n    \"aleflamedhebrew\", 0xfb4f,\n    \"alefmaddaabovearabic\", 0x0622,\n    \"alefmaddaabovefinalarabic\", 0xfe82,\n    \"alefmaksuraarabic\", 0x0649,\n    \"alefmaksurafinalarabic\", 0xfef0,\n    \"alefmaksurainitialarabic\", 0xfef3,\n    \"alefmaksuramedialarabic\", 0xfef4,\n    \"alefpatahhebrew\", 0xfb2e,\n    \"alefqamatshebrew\", 0xfb2f,\n    \"aleph\", 0x2135,\n    \"allequal\", 0x224c,\n    \"alpha\", 0x03b1,\n    \"alphatonos\", 0x03ac,\n    \"amacron\", 0x0101,\n    \"amonospace\", 0xff41,\n    \"ampersand\", 0x0026,\n    \"ampersandmonospace\", 0xff06,\n    \"ampersandsmall\", 0xf726,\n    \"amsquare\", 0x33c2,\n    \"anbopomofo\", 0x3122,\n    \"angbopomofo\", 0x3124,\n    \"angbracketleft\", 0x3008, // Glyph is missing from Adobe's original list.\n    \"angbracketright\", 0x3009, // Glyph is missing from Adobe's original list.\n    \"angkhankhuthai\", 0x0e5a,\n    \"angle\", 0x2220,\n    \"anglebracketleft\", 0x3008,\n    \"anglebracketleftvertical\", 0xfe3f,\n    \"anglebracketright\", 0x3009,\n    \"anglebracketrightvertical\", 0xfe40,\n    \"angleleft\", 0x2329,\n    \"angleright\", 0x232a,\n    \"angstrom\", 0x212b,\n    \"anoteleia\", 0x0387,\n    \"anudattadeva\", 0x0952,\n    \"anusvarabengali\", 0x0982,\n    \"anusvaradeva\", 0x0902,\n    \"anusvaragujarati\", 0x0a82,\n    \"aogonek\", 0x0105,\n    \"apaatosquare\", 0x3300,\n    \"aparen\", 0x249c,\n    \"apostrophearmenian\", 0x055a,\n    \"apostrophemod\", 0x02bc,\n    \"apple\", 0xf8ff,\n    \"approaches\", 0x2250,\n    \"approxequal\", 0x2248,\n    \"approxequalorimage\", 0x2252,\n    \"approximatelyequal\", 0x2245,\n    \"araeaekorean\", 0x318e,\n    \"araeakorean\", 0x318d,\n    \"arc\", 0x2312,\n    \"arighthalfring\", 0x1e9a,\n    \"aring\", 0x00e5,\n    \"aringacute\", 0x01fb,\n    \"aringbelow\", 0x1e01,\n    \"arrowboth\", 0x2194,\n    \"arrowdashdown\", 0x21e3,\n    \"arrowdashleft\", 0x21e0,\n    \"arrowdashright\", 0x21e2,\n    \"arrowdashup\", 0x21e1,\n    \"arrowdblboth\", 0x21d4,\n    \"arrowdbldown\", 0x21d3,\n    \"arrowdblleft\", 0x21d0,\n    \"arrowdblright\", 0x21d2,\n    \"arrowdblup\", 0x21d1,\n    \"arrowdown\", 0x2193,\n    \"arrowdownleft\", 0x2199,\n    \"arrowdownright\", 0x2198,\n    \"arrowdownwhite\", 0x21e9,\n    \"arrowheaddownmod\", 0x02c5,\n    \"arrowheadleftmod\", 0x02c2,\n    \"arrowheadrightmod\", 0x02c3,\n    \"arrowheadupmod\", 0x02c4,\n    \"arrowhorizex\", 0xf8e7,\n    \"arrowleft\", 0x2190,\n    \"arrowleftdbl\", 0x21d0,\n    \"arrowleftdblstroke\", 0x21cd,\n    \"arrowleftoverright\", 0x21c6,\n    \"arrowleftwhite\", 0x21e6,\n    \"arrowright\", 0x2192,\n    \"arrowrightdblstroke\", 0x21cf,\n    \"arrowrightheavy\", 0x279e,\n    \"arrowrightoverleft\", 0x21c4,\n    \"arrowrightwhite\", 0x21e8,\n    \"arrowtableft\", 0x21e4,\n    \"arrowtabright\", 0x21e5,\n    \"arrowup\", 0x2191,\n    \"arrowupdn\", 0x2195,\n    \"arrowupdnbse\", 0x21a8,\n    \"arrowupdownbase\", 0x21a8,\n    \"arrowupleft\", 0x2196,\n    \"arrowupleftofdown\", 0x21c5,\n    \"arrowupright\", 0x2197,\n    \"arrowupwhite\", 0x21e7,\n    \"arrowvertex\", 0xf8e6,\n    \"asciicircum\", 0x005e,\n    \"asciicircummonospace\", 0xff3e,\n    \"asciitilde\", 0x007e,\n    \"asciitildemonospace\", 0xff5e,\n    \"ascript\", 0x0251,\n    \"ascriptturned\", 0x0252,\n    \"asmallhiragana\", 0x3041,\n    \"asmallkatakana\", 0x30a1,\n    \"asmallkatakanahalfwidth\", 0xff67,\n    \"asterisk\", 0x002a,\n    \"asteriskaltonearabic\", 0x066d,\n    \"asteriskarabic\", 0x066d,\n    \"asteriskmath\", 0x2217,\n    \"asteriskmonospace\", 0xff0a,\n    \"asterisksmall\", 0xfe61,\n    \"asterism\", 0x2042,\n    \"asuperior\", 0xf6e9,\n    \"asymptoticallyequal\", 0x2243,\n    \"at\", 0x0040,\n    \"atilde\", 0x00e3,\n    \"atmonospace\", 0xff20,\n    \"atsmall\", 0xfe6b,\n    \"aturned\", 0x0250,\n    \"aubengali\", 0x0994,\n    \"aubopomofo\", 0x3120,\n    \"audeva\", 0x0914,\n    \"augujarati\", 0x0a94,\n    \"augurmukhi\", 0x0a14,\n    \"aulengthmarkbengali\", 0x09d7,\n    \"aumatragurmukhi\", 0x0a4c,\n    \"auvowelsignbengali\", 0x09cc,\n    \"auvowelsigndeva\", 0x094c,\n    \"auvowelsigngujarati\", 0x0acc,\n    \"avagrahadeva\", 0x093d,\n    \"aybarmenian\", 0x0561,\n    \"ayin\", 0x05e2,\n    \"ayinaltonehebrew\", 0xfb20,\n    \"ayinhebrew\", 0x05e2,\n    \"b\", 0x0062,\n    \"babengali\", 0x09ac,\n    \"backslash\", 0x005c,\n    \"backslashmonospace\", 0xff3c,\n    \"badeva\", 0x092c,\n    \"bagujarati\", 0x0aac,\n    \"bagurmukhi\", 0x0a2c,\n    \"bahiragana\", 0x3070,\n    \"bahtthai\", 0x0e3f,\n    \"bakatakana\", 0x30d0,\n    \"bar\", 0x007c,\n    \"barmonospace\", 0xff5c,\n    \"bbopomofo\", 0x3105,\n    \"bcircle\", 0x24d1,\n    \"bdotaccent\", 0x1e03,\n    \"bdotbelow\", 0x1e05,\n    \"beamedsixteenthnotes\", 0x266c,\n    \"because\", 0x2235,\n    \"becyrillic\", 0x0431,\n    \"beharabic\", 0x0628,\n    \"behfinalarabic\", 0xfe90,\n    \"behinitialarabic\", 0xfe91,\n    \"behiragana\", 0x3079,\n    \"behmedialarabic\", 0xfe92,\n    \"behmeeminitialarabic\", 0xfc9f,\n    \"behmeemisolatedarabic\", 0xfc08,\n    \"behnoonfinalarabic\", 0xfc6d,\n    \"bekatakana\", 0x30d9,\n    \"benarmenian\", 0x0562,\n    \"bet\", 0x05d1,\n    \"beta\", 0x03b2,\n    \"betasymbolgreek\", 0x03d0,\n    \"betdagesh\", 0xfb31,\n    \"betdageshhebrew\", 0xfb31,\n    \"bethebrew\", 0x05d1,\n    \"betrafehebrew\", 0xfb4c,\n    \"bhabengali\", 0x09ad,\n    \"bhadeva\", 0x092d,\n    \"bhagujarati\", 0x0aad,\n    \"bhagurmukhi\", 0x0a2d,\n    \"bhook\", 0x0253,\n    \"bihiragana\", 0x3073,\n    \"bikatakana\", 0x30d3,\n    \"bilabialclick\", 0x0298,\n    \"bindigurmukhi\", 0x0a02,\n    \"birusquare\", 0x3331,\n    \"blackcircle\", 0x25cf,\n    \"blackdiamond\", 0x25c6,\n    \"blackdownpointingtriangle\", 0x25bc,\n    \"blackleftpointingpointer\", 0x25c4,\n    \"blackleftpointingtriangle\", 0x25c0,\n    \"blacklenticularbracketleft\", 0x3010,\n    \"blacklenticularbracketleftvertical\", 0xfe3b,\n    \"blacklenticularbracketright\", 0x3011,\n    \"blacklenticularbracketrightvertical\", 0xfe3c,\n    \"blacklowerlefttriangle\", 0x25e3,\n    \"blacklowerrighttriangle\", 0x25e2,\n    \"blackrectangle\", 0x25ac,\n    \"blackrightpointingpointer\", 0x25ba,\n    \"blackrightpointingtriangle\", 0x25b6,\n    \"blacksmallsquare\", 0x25aa,\n    \"blacksmilingface\", 0x263b,\n    \"blacksquare\", 0x25a0,\n    \"blackstar\", 0x2605,\n    \"blackupperlefttriangle\", 0x25e4,\n    \"blackupperrighttriangle\", 0x25e5,\n    \"blackuppointingsmalltriangle\", 0x25b4,\n    \"blackuppointingtriangle\", 0x25b2,\n    \"blank\", 0x2423,\n    \"blinebelow\", 0x1e07,\n    \"block\", 0x2588,\n    \"bmonospace\", 0xff42,\n    \"bobaimaithai\", 0x0e1a,\n    \"bohiragana\", 0x307c,\n    \"bokatakana\", 0x30dc,\n    \"bparen\", 0x249d,\n    \"bqsquare\", 0x33c3,\n    \"braceex\", 0xf8f4,\n    \"braceleft\", 0x007b,\n    \"braceleftbt\", 0xf8f3,\n    \"braceleftmid\", 0xf8f2,\n    \"braceleftmonospace\", 0xff5b,\n    \"braceleftsmall\", 0xfe5b,\n    \"bracelefttp\", 0xf8f1,\n    \"braceleftvertical\", 0xfe37,\n    \"braceright\", 0x007d,\n    \"bracerightbt\", 0xf8fe,\n    \"bracerightmid\", 0xf8fd,\n    \"bracerightmonospace\", 0xff5d,\n    \"bracerightsmall\", 0xfe5c,\n    \"bracerighttp\", 0xf8fc,\n    \"bracerightvertical\", 0xfe38,\n    \"bracketleft\", 0x005b,\n    \"bracketleftbt\", 0xf8f0,\n    \"bracketleftex\", 0xf8ef,\n    \"bracketleftmonospace\", 0xff3b,\n    \"bracketlefttp\", 0xf8ee,\n    \"bracketright\", 0x005d,\n    \"bracketrightbt\", 0xf8fb,\n    \"bracketrightex\", 0xf8fa,\n    \"bracketrightmonospace\", 0xff3d,\n    \"bracketrighttp\", 0xf8f9,\n    \"breve\", 0x02d8,\n    \"brevebelowcmb\", 0x032e,\n    \"brevecmb\", 0x0306,\n    \"breveinvertedbelowcmb\", 0x032f,\n    \"breveinvertedcmb\", 0x0311,\n    \"breveinverteddoublecmb\", 0x0361,\n    \"bridgebelowcmb\", 0x032a,\n    \"bridgeinvertedbelowcmb\", 0x033a,\n    \"brokenbar\", 0x00a6,\n    \"bstroke\", 0x0180,\n    \"bsuperior\", 0xf6ea,\n    \"btopbar\", 0x0183,\n    \"buhiragana\", 0x3076,\n    \"bukatakana\", 0x30d6,\n    \"bullet\", 0x2022,\n    \"bulletinverse\", 0x25d8,\n    \"bulletoperator\", 0x2219,\n    \"bullseye\", 0x25ce,\n    \"c\", 0x0063,\n    \"caarmenian\", 0x056e,\n    \"cabengali\", 0x099a,\n    \"cacute\", 0x0107,\n    \"cadeva\", 0x091a,\n    \"cagujarati\", 0x0a9a,\n    \"cagurmukhi\", 0x0a1a,\n    \"calsquare\", 0x3388,\n    \"candrabindubengali\", 0x0981,\n    \"candrabinducmb\", 0x0310,\n    \"candrabindudeva\", 0x0901,\n    \"candrabindugujarati\", 0x0a81,\n    \"capslock\", 0x21ea,\n    \"careof\", 0x2105,\n    \"caron\", 0x02c7,\n    \"caronbelowcmb\", 0x032c,\n    \"caroncmb\", 0x030c,\n    \"carriagereturn\", 0x21b5,\n    \"cbopomofo\", 0x3118,\n    \"ccaron\", 0x010d,\n    \"ccedilla\", 0x00e7,\n    \"ccedillaacute\", 0x1e09,\n    \"ccircle\", 0x24d2,\n    \"ccircumflex\", 0x0109,\n    \"ccurl\", 0x0255,\n    \"cdot\", 0x010b,\n    \"cdotaccent\", 0x010b,\n    \"cdsquare\", 0x33c5,\n    \"cedilla\", 0x00b8,\n    \"cedillacmb\", 0x0327,\n    \"cent\", 0x00a2,\n    \"centigrade\", 0x2103,\n    \"centinferior\", 0xf6df,\n    \"centmonospace\", 0xffe0,\n    \"centoldstyle\", 0xf7a2,\n    \"centsuperior\", 0xf6e0,\n    \"chaarmenian\", 0x0579,\n    \"chabengali\", 0x099b,\n    \"chadeva\", 0x091b,\n    \"chagujarati\", 0x0a9b,\n    \"chagurmukhi\", 0x0a1b,\n    \"chbopomofo\", 0x3114,\n    \"cheabkhasiancyrillic\", 0x04bd,\n    \"checkmark\", 0x2713,\n    \"checyrillic\", 0x0447,\n    \"chedescenderabkhasiancyrillic\", 0x04bf,\n    \"chedescendercyrillic\", 0x04b7,\n    \"chedieresiscyrillic\", 0x04f5,\n    \"cheharmenian\", 0x0573,\n    \"chekhakassiancyrillic\", 0x04cc,\n    \"cheverticalstrokecyrillic\", 0x04b9,\n    \"chi\", 0x03c7,\n    \"chieuchacirclekorean\", 0x3277,\n    \"chieuchaparenkorean\", 0x3217,\n    \"chieuchcirclekorean\", 0x3269,\n    \"chieuchkorean\", 0x314a,\n    \"chieuchparenkorean\", 0x3209,\n    \"chochangthai\", 0x0e0a,\n    \"chochanthai\", 0x0e08,\n    \"chochingthai\", 0x0e09,\n    \"chochoethai\", 0x0e0c,\n    \"chook\", 0x0188,\n    \"cieucacirclekorean\", 0x3276,\n    \"cieucaparenkorean\", 0x3216,\n    \"cieuccirclekorean\", 0x3268,\n    \"cieuckorean\", 0x3148,\n    \"cieucparenkorean\", 0x3208,\n    \"cieucuparenkorean\", 0x321c,\n    \"circle\", 0x25cb,\n    \"circlecopyrt\", 0x00a9, // Glyph is missing from Adobe's original list.\n    \"circlemultiply\", 0x2297,\n    \"circleot\", 0x2299,\n    \"circleplus\", 0x2295,\n    \"circlepostalmark\", 0x3036,\n    \"circlewithlefthalfblack\", 0x25d0,\n    \"circlewithrighthalfblack\", 0x25d1,\n    \"circumflex\", 0x02c6,\n    \"circumflexbelowcmb\", 0x032d,\n    \"circumflexcmb\", 0x0302,\n    \"clear\", 0x2327,\n    \"clickalveolar\", 0x01c2,\n    \"clickdental\", 0x01c0,\n    \"clicklateral\", 0x01c1,\n    \"clickretroflex\", 0x01c3,\n    \"club\", 0x2663,\n    \"clubsuitblack\", 0x2663,\n    \"clubsuitwhite\", 0x2667,\n    \"cmcubedsquare\", 0x33a4,\n    \"cmonospace\", 0xff43,\n    \"cmsquaredsquare\", 0x33a0,\n    \"coarmenian\", 0x0581,\n    \"colon\", 0x003a,\n    \"colonmonetary\", 0x20a1,\n    \"colonmonospace\", 0xff1a,\n    \"colonsign\", 0x20a1,\n    \"colonsmall\", 0xfe55,\n    \"colontriangularhalfmod\", 0x02d1,\n    \"colontriangularmod\", 0x02d0,\n    \"comma\", 0x002c,\n    \"commaabovecmb\", 0x0313,\n    \"commaaboverightcmb\", 0x0315,\n    \"commaaccent\", 0xf6c3,\n    \"commaarabic\", 0x060c,\n    \"commaarmenian\", 0x055d,\n    \"commainferior\", 0xf6e1,\n    \"commamonospace\", 0xff0c,\n    \"commareversedabovecmb\", 0x0314,\n    \"commareversedmod\", 0x02bd,\n    \"commasmall\", 0xfe50,\n    \"commasuperior\", 0xf6e2,\n    \"commaturnedabovecmb\", 0x0312,\n    \"commaturnedmod\", 0x02bb,\n    \"compass\", 0x263c,\n    \"congruent\", 0x2245,\n    \"contourintegral\", 0x222e,\n    \"control\", 0x2303,\n    \"controlACK\", 0x0006,\n    \"controlBEL\", 0x0007,\n    \"controlBS\", 0x0008,\n    \"controlCAN\", 0x0018,\n    \"controlCR\", 0x000d,\n    \"controlDC1\", 0x0011,\n    \"controlDC2\", 0x0012,\n    \"controlDC3\", 0x0013,\n    \"controlDC4\", 0x0014,\n    \"controlDEL\", 0x007f,\n    \"controlDLE\", 0x0010,\n    \"controlEM\", 0x0019,\n    \"controlENQ\", 0x0005,\n    \"controlEOT\", 0x0004,\n    \"controlESC\", 0x001b,\n    \"controlETB\", 0x0017,\n    \"controlETX\", 0x0003,\n    \"controlFF\", 0x000c,\n    \"controlFS\", 0x001c,\n    \"controlGS\", 0x001d,\n    \"controlHT\", 0x0009,\n    \"controlLF\", 0x000a,\n    \"controlNAK\", 0x0015,\n    \"controlNULL\", 0x0000, // Glyph is missing from Adobe's original list.\n    \"controlRS\", 0x001e,\n    \"controlSI\", 0x000f,\n    \"controlSO\", 0x000e,\n    \"controlSOT\", 0x0002,\n    \"controlSTX\", 0x0001,\n    \"controlSUB\", 0x001a,\n    \"controlSYN\", 0x0016,\n    \"controlUS\", 0x001f,\n    \"controlVT\", 0x000b,\n    \"copyright\", 0x00a9,\n    \"copyrightsans\", 0xf8e9,\n    \"copyrightserif\", 0xf6d9,\n    \"cornerbracketleft\", 0x300c,\n    \"cornerbracketlefthalfwidth\", 0xff62,\n    \"cornerbracketleftvertical\", 0xfe41,\n    \"cornerbracketright\", 0x300d,\n    \"cornerbracketrighthalfwidth\", 0xff63,\n    \"cornerbracketrightvertical\", 0xfe42,\n    \"corporationsquare\", 0x337f,\n    \"cosquare\", 0x33c7,\n    \"coverkgsquare\", 0x33c6,\n    \"cparen\", 0x249e,\n    \"cruzeiro\", 0x20a2,\n    \"cstretched\", 0x0297,\n    \"curlyand\", 0x22cf,\n    \"curlyor\", 0x22ce,\n    \"currency\", 0x00a4,\n    \"cyrBreve\", 0xf6d1,\n    \"cyrFlex\", 0xf6d2,\n    \"cyrbreve\", 0xf6d4,\n    \"cyrflex\", 0xf6d5,\n    \"d\", 0x0064,\n    \"daarmenian\", 0x0564,\n    \"dabengali\", 0x09a6,\n    \"dadarabic\", 0x0636,\n    \"dadeva\", 0x0926,\n    \"dadfinalarabic\", 0xfebe,\n    \"dadinitialarabic\", 0xfebf,\n    \"dadmedialarabic\", 0xfec0,\n    \"dagesh\", 0x05bc,\n    \"dageshhebrew\", 0x05bc,\n    \"dagger\", 0x2020,\n    \"daggerdbl\", 0x2021,\n    \"dagujarati\", 0x0aa6,\n    \"dagurmukhi\", 0x0a26,\n    \"dahiragana\", 0x3060,\n    \"dakatakana\", 0x30c0,\n    \"dalarabic\", 0x062f,\n    \"dalet\", 0x05d3,\n    \"daletdagesh\", 0xfb33,\n    \"daletdageshhebrew\", 0xfb33,\n    \"dalethebrew\", 0x05d3,\n    \"dalfinalarabic\", 0xfeaa,\n    \"dammaarabic\", 0x064f,\n    \"dammalowarabic\", 0x064f,\n    \"dammatanaltonearabic\", 0x064c,\n    \"dammatanarabic\", 0x064c,\n    \"danda\", 0x0964,\n    \"dargahebrew\", 0x05a7,\n    \"dargalefthebrew\", 0x05a7,\n    \"dasiapneumatacyrilliccmb\", 0x0485,\n    \"dblGrave\", 0xf6d3,\n    \"dblanglebracketleft\", 0x300a,\n    \"dblanglebracketleftvertical\", 0xfe3d,\n    \"dblanglebracketright\", 0x300b,\n    \"dblanglebracketrightvertical\", 0xfe3e,\n    \"dblarchinvertedbelowcmb\", 0x032b,\n    \"dblarrowleft\", 0x21d4,\n    \"dblarrowright\", 0x21d2,\n    \"dbldanda\", 0x0965,\n    \"dblgrave\", 0xf6d6,\n    \"dblgravecmb\", 0x030f,\n    \"dblintegral\", 0x222c,\n    \"dbllowline\", 0x2017,\n    \"dbllowlinecmb\", 0x0333,\n    \"dbloverlinecmb\", 0x033f,\n    \"dblprimemod\", 0x02ba,\n    \"dblverticalbar\", 0x2016,\n    \"dblverticallineabovecmb\", 0x030e,\n    \"dbopomofo\", 0x3109,\n    \"dbsquare\", 0x33c8,\n    \"dcaron\", 0x010f,\n    \"dcedilla\", 0x1e11,\n    \"dcircle\", 0x24d3,\n    \"dcircumflexbelow\", 0x1e13,\n    \"dcroat\", 0x0111,\n    \"ddabengali\", 0x09a1,\n    \"ddadeva\", 0x0921,\n    \"ddagujarati\", 0x0aa1,\n    \"ddagurmukhi\", 0x0a21,\n    \"ddalarabic\", 0x0688,\n    \"ddalfinalarabic\", 0xfb89,\n    \"dddhadeva\", 0x095c,\n    \"ddhabengali\", 0x09a2,\n    \"ddhadeva\", 0x0922,\n    \"ddhagujarati\", 0x0aa2,\n    \"ddhagurmukhi\", 0x0a22,\n    \"ddotaccent\", 0x1e0b,\n    \"ddotbelow\", 0x1e0d,\n    \"decimalseparatorarabic\", 0x066b,\n    \"decimalseparatorpersian\", 0x066b,\n    \"decyrillic\", 0x0434,\n    \"degree\", 0x00b0,\n    \"dehihebrew\", 0x05ad,\n    \"dehiragana\", 0x3067,\n    \"deicoptic\", 0x03ef,\n    \"dekatakana\", 0x30c7,\n    \"deleteleft\", 0x232b,\n    \"deleteright\", 0x2326,\n    \"delta\", 0x03b4,\n    \"deltaturned\", 0x018d,\n    \"denominatorminusonenumeratorbengali\", 0x09f8,\n    \"dezh\", 0x02a4,\n    \"dhabengali\", 0x09a7,\n    \"dhadeva\", 0x0927,\n    \"dhagujarati\", 0x0aa7,\n    \"dhagurmukhi\", 0x0a27,\n    \"dhook\", 0x0257,\n    \"dialytikatonos\", 0x0385,\n    \"dialytikatonoscmb\", 0x0344,\n    \"diamond\", 0x2666,\n    \"diamondsuitwhite\", 0x2662,\n    \"dieresis\", 0x00a8,\n    \"dieresisacute\", 0xf6d7,\n    \"dieresisbelowcmb\", 0x0324,\n    \"dieresiscmb\", 0x0308,\n    \"dieresisgrave\", 0xf6d8,\n    \"dieresistonos\", 0x0385,\n    \"dihiragana\", 0x3062,\n    \"dikatakana\", 0x30c2,\n    \"dittomark\", 0x3003,\n    \"divide\", 0x00f7,\n    \"divides\", 0x2223,\n    \"divisionslash\", 0x2215,\n    \"djecyrillic\", 0x0452,\n    \"dkshade\", 0x2593,\n    \"dlinebelow\", 0x1e0f,\n    \"dlsquare\", 0x3397,\n    \"dmacron\", 0x0111,\n    \"dmonospace\", 0xff44,\n    \"dnblock\", 0x2584,\n    \"dochadathai\", 0x0e0e,\n    \"dodekthai\", 0x0e14,\n    \"dohiragana\", 0x3069,\n    \"dokatakana\", 0x30c9,\n    \"dollar\", 0x0024,\n    \"dollarinferior\", 0xf6e3,\n    \"dollarmonospace\", 0xff04,\n    \"dollaroldstyle\", 0xf724,\n    \"dollarsmall\", 0xfe69,\n    \"dollarsuperior\", 0xf6e4,\n    \"dong\", 0x20ab,\n    \"dorusquare\", 0x3326,\n    \"dotaccent\", 0x02d9,\n    \"dotaccentcmb\", 0x0307,\n    \"dotbelowcmb\", 0x0323,\n    \"dotbelowcomb\", 0x0323,\n    \"dotkatakana\", 0x30fb,\n    \"dotlessi\", 0x0131,\n    \"dotlessj\", 0xf6be,\n    \"dotlessjstrokehook\", 0x0284,\n    \"dotmath\", 0x22c5,\n    \"dottedcircle\", 0x25cc,\n    \"doubleyodpatah\", 0xfb1f,\n    \"doubleyodpatahhebrew\", 0xfb1f,\n    \"downtackbelowcmb\", 0x031e,\n    \"downtackmod\", 0x02d5,\n    \"dparen\", 0x249f,\n    \"dsuperior\", 0xf6eb,\n    \"dtail\", 0x0256,\n    \"dtopbar\", 0x018c,\n    \"duhiragana\", 0x3065,\n    \"dukatakana\", 0x30c5,\n    \"dz\", 0x01f3,\n    \"dzaltone\", 0x02a3,\n    \"dzcaron\", 0x01c6,\n    \"dzcurl\", 0x02a5,\n    \"dzeabkhasiancyrillic\", 0x04e1,\n    \"dzecyrillic\", 0x0455,\n    \"dzhecyrillic\", 0x045f,\n    \"e\", 0x0065,\n    \"eacute\", 0x00e9,\n    \"earth\", 0x2641,\n    \"ebengali\", 0x098f,\n    \"ebopomofo\", 0x311c,\n    \"ebreve\", 0x0115,\n    \"ecandradeva\", 0x090d,\n    \"ecandragujarati\", 0x0a8d,\n    \"ecandravowelsigndeva\", 0x0945,\n    \"ecandravowelsigngujarati\", 0x0ac5,\n    \"ecaron\", 0x011b,\n    \"ecedillabreve\", 0x1e1d,\n    \"echarmenian\", 0x0565,\n    \"echyiwnarmenian\", 0x0587,\n    \"ecircle\", 0x24d4,\n    \"ecircumflex\", 0x00ea,\n    \"ecircumflexacute\", 0x1ebf,\n    \"ecircumflexbelow\", 0x1e19,\n    \"ecircumflexdotbelow\", 0x1ec7,\n    \"ecircumflexgrave\", 0x1ec1,\n    \"ecircumflexhookabove\", 0x1ec3,\n    \"ecircumflextilde\", 0x1ec5,\n    \"ecyrillic\", 0x0454,\n    \"edblgrave\", 0x0205,\n    \"edeva\", 0x090f,\n    \"edieresis\", 0x00eb,\n    \"edot\", 0x0117,\n    \"edotaccent\", 0x0117,\n    \"edotbelow\", 0x1eb9,\n    \"eegurmukhi\", 0x0a0f,\n    \"eematragurmukhi\", 0x0a47,\n    \"efcyrillic\", 0x0444,\n    \"egrave\", 0x00e8,\n    \"egujarati\", 0x0a8f,\n    \"eharmenian\", 0x0567,\n    \"ehbopomofo\", 0x311d,\n    \"ehiragana\", 0x3048,\n    \"ehookabove\", 0x1ebb,\n    \"eibopomofo\", 0x311f,\n    \"eight\", 0x0038,\n    \"eightarabic\", 0x0668,\n    \"eightbengali\", 0x09ee,\n    \"eightcircle\", 0x2467,\n    \"eightcircleinversesansserif\", 0x2791,\n    \"eightdeva\", 0x096e,\n    \"eighteencircle\", 0x2471,\n    \"eighteenparen\", 0x2485,\n    \"eighteenperiod\", 0x2499,\n    \"eightgujarati\", 0x0aee,\n    \"eightgurmukhi\", 0x0a6e,\n    \"eighthackarabic\", 0x0668,\n    \"eighthangzhou\", 0x3028,\n    \"eighthnotebeamed\", 0x266b,\n    \"eightideographicparen\", 0x3227,\n    \"eightinferior\", 0x2088,\n    \"eightmonospace\", 0xff18,\n    \"eightoldstyle\", 0xf738,\n    \"eightparen\", 0x247b,\n    \"eightperiod\", 0x248f,\n    \"eightpersian\", 0x06f8,\n    \"eightroman\", 0x2177,\n    \"eightsuperior\", 0x2078,\n    \"eightthai\", 0x0e58,\n    \"einvertedbreve\", 0x0207,\n    \"eiotifiedcyrillic\", 0x0465,\n    \"ekatakana\", 0x30a8,\n    \"ekatakanahalfwidth\", 0xff74,\n    \"ekonkargurmukhi\", 0x0a74,\n    \"ekorean\", 0x3154,\n    \"elcyrillic\", 0x043b,\n    \"element\", 0x2208,\n    \"elevencircle\", 0x246a,\n    \"elevenparen\", 0x247e,\n    \"elevenperiod\", 0x2492,\n    \"elevenroman\", 0x217a,\n    \"ellipsis\", 0x2026,\n    \"ellipsisvertical\", 0x22ee,\n    \"emacron\", 0x0113,\n    \"emacronacute\", 0x1e17,\n    \"emacrongrave\", 0x1e15,\n    \"emcyrillic\", 0x043c,\n    \"emdash\", 0x2014,\n    \"emdashvertical\", 0xfe31,\n    \"emonospace\", 0xff45,\n    \"emphasismarkarmenian\", 0x055b,\n    \"emptyset\", 0x2205,\n    \"enbopomofo\", 0x3123,\n    \"encyrillic\", 0x043d,\n    \"endash\", 0x2013,\n    \"endashvertical\", 0xfe32,\n    \"endescendercyrillic\", 0x04a3,\n    \"eng\", 0x014b,\n    \"engbopomofo\", 0x3125,\n    \"enghecyrillic\", 0x04a5,\n    \"enhookcyrillic\", 0x04c8,\n    \"enspace\", 0x2002,\n    \"eogonek\", 0x0119,\n    \"eokorean\", 0x3153,\n    \"eopen\", 0x025b,\n    \"eopenclosed\", 0x029a,\n    \"eopenreversed\", 0x025c,\n    \"eopenreversedclosed\", 0x025e,\n    \"eopenreversedhook\", 0x025d,\n    \"eparen\", 0x24a0,\n    \"epsilon\", 0x03b5,\n    \"epsilontonos\", 0x03ad,\n    \"equal\", 0x003d,\n    \"equalmonospace\", 0xff1d,\n    \"equalsmall\", 0xfe66,\n    \"equalsuperior\", 0x207c,\n    \"equivalence\", 0x2261,\n    \"erbopomofo\", 0x3126,\n    \"ercyrillic\", 0x0440,\n    \"ereversed\", 0x0258,\n    \"ereversedcyrillic\", 0x044d,\n    \"escyrillic\", 0x0441,\n    \"esdescendercyrillic\", 0x04ab,\n    \"esh\", 0x0283,\n    \"eshcurl\", 0x0286,\n    \"eshortdeva\", 0x090e,\n    \"eshortvowelsigndeva\", 0x0946,\n    \"eshreversedloop\", 0x01aa,\n    \"eshsquatreversed\", 0x0285,\n    \"esmallhiragana\", 0x3047,\n    \"esmallkatakana\", 0x30a7,\n    \"esmallkatakanahalfwidth\", 0xff6a,\n    \"estimated\", 0x212e,\n    \"esuperior\", 0xf6ec,\n    \"eta\", 0x03b7,\n    \"etarmenian\", 0x0568,\n    \"etatonos\", 0x03ae,\n    \"eth\", 0x00f0,\n    \"etilde\", 0x1ebd,\n    \"etildebelow\", 0x1e1b,\n    \"etnahtafoukhhebrew\", 0x0591,\n    \"etnahtafoukhlefthebrew\", 0x0591,\n    \"etnahtahebrew\", 0x0591,\n    \"etnahtalefthebrew\", 0x0591,\n    \"eturned\", 0x01dd,\n    \"eukorean\", 0x3161,\n    \"euro\", 0x20ac,\n    \"evowelsignbengali\", 0x09c7,\n    \"evowelsigndeva\", 0x0947,\n    \"evowelsigngujarati\", 0x0ac7,\n    \"exclam\", 0x0021,\n    \"exclamarmenian\", 0x055c,\n    \"exclamdbl\", 0x203c,\n    \"exclamdown\", 0x00a1,\n    \"exclamdownsmall\", 0xf7a1,\n    \"exclammonospace\", 0xff01,\n    \"exclamsmall\", 0xf721,\n    \"existential\", 0x2203,\n    \"ezh\", 0x0292,\n    \"ezhcaron\", 0x01ef,\n    \"ezhcurl\", 0x0293,\n    \"ezhreversed\", 0x01b9,\n    \"ezhtail\", 0x01ba,\n    \"f\", 0x0066,\n    \"fadeva\", 0x095e,\n    \"fagurmukhi\", 0x0a5e,\n    \"fahrenheit\", 0x2109,\n    \"fathaarabic\", 0x064e,\n    \"fathalowarabic\", 0x064e,\n    \"fathatanarabic\", 0x064b,\n    \"fbopomofo\", 0x3108,\n    \"fcircle\", 0x24d5,\n    \"fdotaccent\", 0x1e1f,\n    \"feharabic\", 0x0641,\n    \"feharmenian\", 0x0586,\n    \"fehfinalarabic\", 0xfed2,\n    \"fehinitialarabic\", 0xfed3,\n    \"fehmedialarabic\", 0xfed4,\n    \"feicoptic\", 0x03e5,\n    \"female\", 0x2640,\n    \"ff\", 0xfb00,\n    \"f_f\", 0xfb00, // Fixes issue 11016.\n    \"ffi\", 0xfb03,\n    \"ffl\", 0xfb04,\n    \"fi\", 0xfb01,\n    \"fifteencircle\", 0x246e,\n    \"fifteenparen\", 0x2482,\n    \"fifteenperiod\", 0x2496,\n    \"figuredash\", 0x2012,\n    \"filledbox\", 0x25a0,\n    \"filledrect\", 0x25ac,\n    \"finalkaf\", 0x05da,\n    \"finalkafdagesh\", 0xfb3a,\n    \"finalkafdageshhebrew\", 0xfb3a,\n    \"finalkafhebrew\", 0x05da,\n    \"finalmem\", 0x05dd,\n    \"finalmemhebrew\", 0x05dd,\n    \"finalnun\", 0x05df,\n    \"finalnunhebrew\", 0x05df,\n    \"finalpe\", 0x05e3,\n    \"finalpehebrew\", 0x05e3,\n    \"finaltsadi\", 0x05e5,\n    \"finaltsadihebrew\", 0x05e5,\n    \"firsttonechinese\", 0x02c9,\n    \"fisheye\", 0x25c9,\n    \"fitacyrillic\", 0x0473,\n    \"five\", 0x0035,\n    \"fivearabic\", 0x0665,\n    \"fivebengali\", 0x09eb,\n    \"fivecircle\", 0x2464,\n    \"fivecircleinversesansserif\", 0x278e,\n    \"fivedeva\", 0x096b,\n    \"fiveeighths\", 0x215d,\n    \"fivegujarati\", 0x0aeb,\n    \"fivegurmukhi\", 0x0a6b,\n    \"fivehackarabic\", 0x0665,\n    \"fivehangzhou\", 0x3025,\n    \"fiveideographicparen\", 0x3224,\n    \"fiveinferior\", 0x2085,\n    \"fivemonospace\", 0xff15,\n    \"fiveoldstyle\", 0xf735,\n    \"fiveparen\", 0x2478,\n    \"fiveperiod\", 0x248c,\n    \"fivepersian\", 0x06f5,\n    \"fiveroman\", 0x2174,\n    \"fivesuperior\", 0x2075,\n    \"fivethai\", 0x0e55,\n    \"fl\", 0xfb02,\n    \"florin\", 0x0192,\n    \"fmonospace\", 0xff46,\n    \"fmsquare\", 0x3399,\n    \"fofanthai\", 0x0e1f,\n    \"fofathai\", 0x0e1d,\n    \"fongmanthai\", 0x0e4f,\n    \"forall\", 0x2200,\n    \"four\", 0x0034,\n    \"fourarabic\", 0x0664,\n    \"fourbengali\", 0x09ea,\n    \"fourcircle\", 0x2463,\n    \"fourcircleinversesansserif\", 0x278d,\n    \"fourdeva\", 0x096a,\n    \"fourgujarati\", 0x0aea,\n    \"fourgurmukhi\", 0x0a6a,\n    \"fourhackarabic\", 0x0664,\n    \"fourhangzhou\", 0x3024,\n    \"fourideographicparen\", 0x3223,\n    \"fourinferior\", 0x2084,\n    \"fourmonospace\", 0xff14,\n    \"fournumeratorbengali\", 0x09f7,\n    \"fouroldstyle\", 0xf734,\n    \"fourparen\", 0x2477,\n    \"fourperiod\", 0x248b,\n    \"fourpersian\", 0x06f4,\n    \"fourroman\", 0x2173,\n    \"foursuperior\", 0x2074,\n    \"fourteencircle\", 0x246d,\n    \"fourteenparen\", 0x2481,\n    \"fourteenperiod\", 0x2495,\n    \"fourthai\", 0x0e54,\n    \"fourthtonechinese\", 0x02cb,\n    \"fparen\", 0x24a1,\n    \"fraction\", 0x2044,\n    \"franc\", 0x20a3,\n    \"g\", 0x0067,\n    \"gabengali\", 0x0997,\n    \"gacute\", 0x01f5,\n    \"gadeva\", 0x0917,\n    \"gafarabic\", 0x06af,\n    \"gaffinalarabic\", 0xfb93,\n    \"gafinitialarabic\", 0xfb94,\n    \"gafmedialarabic\", 0xfb95,\n    \"gagujarati\", 0x0a97,\n    \"gagurmukhi\", 0x0a17,\n    \"gahiragana\", 0x304c,\n    \"gakatakana\", 0x30ac,\n    \"gamma\", 0x03b3,\n    \"gammalatinsmall\", 0x0263,\n    \"gammasuperior\", 0x02e0,\n    \"gangiacoptic\", 0x03eb,\n    \"gbopomofo\", 0x310d,\n    \"gbreve\", 0x011f,\n    \"gcaron\", 0x01e7,\n    \"gcedilla\", 0x0123,\n    \"gcircle\", 0x24d6,\n    \"gcircumflex\", 0x011d,\n    \"gcommaaccent\", 0x0123,\n    \"gdot\", 0x0121,\n    \"gdotaccent\", 0x0121,\n    \"gecyrillic\", 0x0433,\n    \"gehiragana\", 0x3052,\n    \"gekatakana\", 0x30b2,\n    \"geometricallyequal\", 0x2251,\n    \"gereshaccenthebrew\", 0x059c,\n    \"gereshhebrew\", 0x05f3,\n    \"gereshmuqdamhebrew\", 0x059d,\n    \"germandbls\", 0x00df,\n    \"gershayimaccenthebrew\", 0x059e,\n    \"gershayimhebrew\", 0x05f4,\n    \"getamark\", 0x3013,\n    \"ghabengali\", 0x0998,\n    \"ghadarmenian\", 0x0572,\n    \"ghadeva\", 0x0918,\n    \"ghagujarati\", 0x0a98,\n    \"ghagurmukhi\", 0x0a18,\n    \"ghainarabic\", 0x063a,\n    \"ghainfinalarabic\", 0xfece,\n    \"ghaininitialarabic\", 0xfecf,\n    \"ghainmedialarabic\", 0xfed0,\n    \"ghemiddlehookcyrillic\", 0x0495,\n    \"ghestrokecyrillic\", 0x0493,\n    \"gheupturncyrillic\", 0x0491,\n    \"ghhadeva\", 0x095a,\n    \"ghhagurmukhi\", 0x0a5a,\n    \"ghook\", 0x0260,\n    \"ghzsquare\", 0x3393,\n    \"gihiragana\", 0x304e,\n    \"gikatakana\", 0x30ae,\n    \"gimarmenian\", 0x0563,\n    \"gimel\", 0x05d2,\n    \"gimeldagesh\", 0xfb32,\n    \"gimeldageshhebrew\", 0xfb32,\n    \"gimelhebrew\", 0x05d2,\n    \"gjecyrillic\", 0x0453,\n    \"glottalinvertedstroke\", 0x01be,\n    \"glottalstop\", 0x0294,\n    \"glottalstopinverted\", 0x0296,\n    \"glottalstopmod\", 0x02c0,\n    \"glottalstopreversed\", 0x0295,\n    \"glottalstopreversedmod\", 0x02c1,\n    \"glottalstopreversedsuperior\", 0x02e4,\n    \"glottalstopstroke\", 0x02a1,\n    \"glottalstopstrokereversed\", 0x02a2,\n    \"gmacron\", 0x1e21,\n    \"gmonospace\", 0xff47,\n    \"gohiragana\", 0x3054,\n    \"gokatakana\", 0x30b4,\n    \"gparen\", 0x24a2,\n    \"gpasquare\", 0x33ac,\n    \"gradient\", 0x2207,\n    \"grave\", 0x0060,\n    \"gravebelowcmb\", 0x0316,\n    \"gravecmb\", 0x0300,\n    \"gravecomb\", 0x0300,\n    \"gravedeva\", 0x0953,\n    \"gravelowmod\", 0x02ce,\n    \"gravemonospace\", 0xff40,\n    \"gravetonecmb\", 0x0340,\n    \"greater\", 0x003e,\n    \"greaterequal\", 0x2265,\n    \"greaterequalorless\", 0x22db,\n    \"greatermonospace\", 0xff1e,\n    \"greaterorequivalent\", 0x2273,\n    \"greaterorless\", 0x2277,\n    \"greateroverequal\", 0x2267,\n    \"greatersmall\", 0xfe65,\n    \"gscript\", 0x0261,\n    \"gstroke\", 0x01e5,\n    \"guhiragana\", 0x3050,\n    \"guillemotleft\", 0x00ab,\n    \"guillemotright\", 0x00bb,\n    \"guilsinglleft\", 0x2039,\n    \"guilsinglright\", 0x203a,\n    \"gukatakana\", 0x30b0,\n    \"guramusquare\", 0x3318,\n    \"gysquare\", 0x33c9,\n    \"h\", 0x0068,\n    \"haabkhasiancyrillic\", 0x04a9,\n    \"haaltonearabic\", 0x06c1,\n    \"habengali\", 0x09b9,\n    \"hadescendercyrillic\", 0x04b3,\n    \"hadeva\", 0x0939,\n    \"hagujarati\", 0x0ab9,\n    \"hagurmukhi\", 0x0a39,\n    \"haharabic\", 0x062d,\n    \"hahfinalarabic\", 0xfea2,\n    \"hahinitialarabic\", 0xfea3,\n    \"hahiragana\", 0x306f,\n    \"hahmedialarabic\", 0xfea4,\n    \"haitusquare\", 0x332a,\n    \"hakatakana\", 0x30cf,\n    \"hakatakanahalfwidth\", 0xff8a,\n    \"halantgurmukhi\", 0x0a4d,\n    \"hamzaarabic\", 0x0621,\n    \"hamzalowarabic\", 0x0621,\n    \"hangulfiller\", 0x3164,\n    \"hardsigncyrillic\", 0x044a,\n    \"harpoonleftbarbup\", 0x21bc,\n    \"harpoonrightbarbup\", 0x21c0,\n    \"hasquare\", 0x33ca,\n    \"hatafpatah\", 0x05b2,\n    \"hatafpatah16\", 0x05b2,\n    \"hatafpatah23\", 0x05b2,\n    \"hatafpatah2f\", 0x05b2,\n    \"hatafpatahhebrew\", 0x05b2,\n    \"hatafpatahnarrowhebrew\", 0x05b2,\n    \"hatafpatahquarterhebrew\", 0x05b2,\n    \"hatafpatahwidehebrew\", 0x05b2,\n    \"hatafqamats\", 0x05b3,\n    \"hatafqamats1b\", 0x05b3,\n    \"hatafqamats28\", 0x05b3,\n    \"hatafqamats34\", 0x05b3,\n    \"hatafqamatshebrew\", 0x05b3,\n    \"hatafqamatsnarrowhebrew\", 0x05b3,\n    \"hatafqamatsquarterhebrew\", 0x05b3,\n    \"hatafqamatswidehebrew\", 0x05b3,\n    \"hatafsegol\", 0x05b1,\n    \"hatafsegol17\", 0x05b1,\n    \"hatafsegol24\", 0x05b1,\n    \"hatafsegol30\", 0x05b1,\n    \"hatafsegolhebrew\", 0x05b1,\n    \"hatafsegolnarrowhebrew\", 0x05b1,\n    \"hatafsegolquarterhebrew\", 0x05b1,\n    \"hatafsegolwidehebrew\", 0x05b1,\n    \"hbar\", 0x0127,\n    \"hbopomofo\", 0x310f,\n    \"hbrevebelow\", 0x1e2b,\n    \"hcedilla\", 0x1e29,\n    \"hcircle\", 0x24d7,\n    \"hcircumflex\", 0x0125,\n    \"hdieresis\", 0x1e27,\n    \"hdotaccent\", 0x1e23,\n    \"hdotbelow\", 0x1e25,\n    \"he\", 0x05d4,\n    \"heart\", 0x2665,\n    \"heartsuitblack\", 0x2665,\n    \"heartsuitwhite\", 0x2661,\n    \"hedagesh\", 0xfb34,\n    \"hedageshhebrew\", 0xfb34,\n    \"hehaltonearabic\", 0x06c1,\n    \"heharabic\", 0x0647,\n    \"hehebrew\", 0x05d4,\n    \"hehfinalaltonearabic\", 0xfba7,\n    \"hehfinalalttwoarabic\", 0xfeea,\n    \"hehfinalarabic\", 0xfeea,\n    \"hehhamzaabovefinalarabic\", 0xfba5,\n    \"hehhamzaaboveisolatedarabic\", 0xfba4,\n    \"hehinitialaltonearabic\", 0xfba8,\n    \"hehinitialarabic\", 0xfeeb,\n    \"hehiragana\", 0x3078,\n    \"hehmedialaltonearabic\", 0xfba9,\n    \"hehmedialarabic\", 0xfeec,\n    \"heiseierasquare\", 0x337b,\n    \"hekatakana\", 0x30d8,\n    \"hekatakanahalfwidth\", 0xff8d,\n    \"hekutaarusquare\", 0x3336,\n    \"henghook\", 0x0267,\n    \"herutusquare\", 0x3339,\n    \"het\", 0x05d7,\n    \"hethebrew\", 0x05d7,\n    \"hhook\", 0x0266,\n    \"hhooksuperior\", 0x02b1,\n    \"hieuhacirclekorean\", 0x327b,\n    \"hieuhaparenkorean\", 0x321b,\n    \"hieuhcirclekorean\", 0x326d,\n    \"hieuhkorean\", 0x314e,\n    \"hieuhparenkorean\", 0x320d,\n    \"hihiragana\", 0x3072,\n    \"hikatakana\", 0x30d2,\n    \"hikatakanahalfwidth\", 0xff8b,\n    \"hiriq\", 0x05b4,\n    \"hiriq14\", 0x05b4,\n    \"hiriq21\", 0x05b4,\n    \"hiriq2d\", 0x05b4,\n    \"hiriqhebrew\", 0x05b4,\n    \"hiriqnarrowhebrew\", 0x05b4,\n    \"hiriqquarterhebrew\", 0x05b4,\n    \"hiriqwidehebrew\", 0x05b4,\n    \"hlinebelow\", 0x1e96,\n    \"hmonospace\", 0xff48,\n    \"hoarmenian\", 0x0570,\n    \"hohipthai\", 0x0e2b,\n    \"hohiragana\", 0x307b,\n    \"hokatakana\", 0x30db,\n    \"hokatakanahalfwidth\", 0xff8e,\n    \"holam\", 0x05b9,\n    \"holam19\", 0x05b9,\n    \"holam26\", 0x05b9,\n    \"holam32\", 0x05b9,\n    \"holamhebrew\", 0x05b9,\n    \"holamnarrowhebrew\", 0x05b9,\n    \"holamquarterhebrew\", 0x05b9,\n    \"holamwidehebrew\", 0x05b9,\n    \"honokhukthai\", 0x0e2e,\n    \"hookabovecomb\", 0x0309,\n    \"hookcmb\", 0x0309,\n    \"hookpalatalizedbelowcmb\", 0x0321,\n    \"hookretroflexbelowcmb\", 0x0322,\n    \"hoonsquare\", 0x3342,\n    \"horicoptic\", 0x03e9,\n    \"horizontalbar\", 0x2015,\n    \"horncmb\", 0x031b,\n    \"hotsprings\", 0x2668,\n    \"house\", 0x2302,\n    \"hparen\", 0x24a3,\n    \"hsuperior\", 0x02b0,\n    \"hturned\", 0x0265,\n    \"huhiragana\", 0x3075,\n    \"huiitosquare\", 0x3333,\n    \"hukatakana\", 0x30d5,\n    \"hukatakanahalfwidth\", 0xff8c,\n    \"hungarumlaut\", 0x02dd,\n    \"hungarumlautcmb\", 0x030b,\n    \"hv\", 0x0195,\n    \"hyphen\", 0x002d,\n    \"hypheninferior\", 0xf6e5,\n    \"hyphenmonospace\", 0xff0d,\n    \"hyphensmall\", 0xfe63,\n    \"hyphensuperior\", 0xf6e6,\n    \"hyphentwo\", 0x2010,\n    \"i\", 0x0069,\n    \"iacute\", 0x00ed,\n    \"iacyrillic\", 0x044f,\n    \"ibengali\", 0x0987,\n    \"ibopomofo\", 0x3127,\n    \"ibreve\", 0x012d,\n    \"icaron\", 0x01d0,\n    \"icircle\", 0x24d8,\n    \"icircumflex\", 0x00ee,\n    \"icyrillic\", 0x0456,\n    \"idblgrave\", 0x0209,\n    \"ideographearthcircle\", 0x328f,\n    \"ideographfirecircle\", 0x328b,\n    \"ideographicallianceparen\", 0x323f,\n    \"ideographiccallparen\", 0x323a,\n    \"ideographiccentrecircle\", 0x32a5,\n    \"ideographicclose\", 0x3006,\n    \"ideographiccomma\", 0x3001,\n    \"ideographiccommaleft\", 0xff64,\n    \"ideographiccongratulationparen\", 0x3237,\n    \"ideographiccorrectcircle\", 0x32a3,\n    \"ideographicearthparen\", 0x322f,\n    \"ideographicenterpriseparen\", 0x323d,\n    \"ideographicexcellentcircle\", 0x329d,\n    \"ideographicfestivalparen\", 0x3240,\n    \"ideographicfinancialcircle\", 0x3296,\n    \"ideographicfinancialparen\", 0x3236,\n    \"ideographicfireparen\", 0x322b,\n    \"ideographichaveparen\", 0x3232,\n    \"ideographichighcircle\", 0x32a4,\n    \"ideographiciterationmark\", 0x3005,\n    \"ideographiclaborcircle\", 0x3298,\n    \"ideographiclaborparen\", 0x3238,\n    \"ideographicleftcircle\", 0x32a7,\n    \"ideographiclowcircle\", 0x32a6,\n    \"ideographicmedicinecircle\", 0x32a9,\n    \"ideographicmetalparen\", 0x322e,\n    \"ideographicmoonparen\", 0x322a,\n    \"ideographicnameparen\", 0x3234,\n    \"ideographicperiod\", 0x3002,\n    \"ideographicprintcircle\", 0x329e,\n    \"ideographicreachparen\", 0x3243,\n    \"ideographicrepresentparen\", 0x3239,\n    \"ideographicresourceparen\", 0x323e,\n    \"ideographicrightcircle\", 0x32a8,\n    \"ideographicsecretcircle\", 0x3299,\n    \"ideographicselfparen\", 0x3242,\n    \"ideographicsocietyparen\", 0x3233,\n    \"ideographicspace\", 0x3000,\n    \"ideographicspecialparen\", 0x3235,\n    \"ideographicstockparen\", 0x3231,\n    \"ideographicstudyparen\", 0x323b,\n    \"ideographicsunparen\", 0x3230,\n    \"ideographicsuperviseparen\", 0x323c,\n    \"ideographicwaterparen\", 0x322c,\n    \"ideographicwoodparen\", 0x322d,\n    \"ideographiczero\", 0x3007,\n    \"ideographmetalcircle\", 0x328e,\n    \"ideographmooncircle\", 0x328a,\n    \"ideographnamecircle\", 0x3294,\n    \"ideographsuncircle\", 0x3290,\n    \"ideographwatercircle\", 0x328c,\n    \"ideographwoodcircle\", 0x328d,\n    \"ideva\", 0x0907,\n    \"idieresis\", 0x00ef,\n    \"idieresisacute\", 0x1e2f,\n    \"idieresiscyrillic\", 0x04e5,\n    \"idotbelow\", 0x1ecb,\n    \"iebrevecyrillic\", 0x04d7,\n    \"iecyrillic\", 0x0435,\n    \"ieungacirclekorean\", 0x3275,\n    \"ieungaparenkorean\", 0x3215,\n    \"ieungcirclekorean\", 0x3267,\n    \"ieungkorean\", 0x3147,\n    \"ieungparenkorean\", 0x3207,\n    \"igrave\", 0x00ec,\n    \"igujarati\", 0x0a87,\n    \"igurmukhi\", 0x0a07,\n    \"ihiragana\", 0x3044,\n    \"ihookabove\", 0x1ec9,\n    \"iibengali\", 0x0988,\n    \"iicyrillic\", 0x0438,\n    \"iideva\", 0x0908,\n    \"iigujarati\", 0x0a88,\n    \"iigurmukhi\", 0x0a08,\n    \"iimatragurmukhi\", 0x0a40,\n    \"iinvertedbreve\", 0x020b,\n    \"iishortcyrillic\", 0x0439,\n    \"iivowelsignbengali\", 0x09c0,\n    \"iivowelsigndeva\", 0x0940,\n    \"iivowelsigngujarati\", 0x0ac0,\n    \"ij\", 0x0133,\n    \"ikatakana\", 0x30a4,\n    \"ikatakanahalfwidth\", 0xff72,\n    \"ikorean\", 0x3163,\n    \"ilde\", 0x02dc,\n    \"iluyhebrew\", 0x05ac,\n    \"imacron\", 0x012b,\n    \"imacroncyrillic\", 0x04e3,\n    \"imageorapproximatelyequal\", 0x2253,\n    \"imatragurmukhi\", 0x0a3f,\n    \"imonospace\", 0xff49,\n    \"increment\", 0x2206,\n    \"infinity\", 0x221e,\n    \"iniarmenian\", 0x056b,\n    \"integral\", 0x222b,\n    \"integralbottom\", 0x2321,\n    \"integralbt\", 0x2321,\n    \"integralex\", 0xf8f5,\n    \"integraltop\", 0x2320,\n    \"integraltp\", 0x2320,\n    \"intersection\", 0x2229,\n    \"intisquare\", 0x3305,\n    \"invbullet\", 0x25d8,\n    \"invcircle\", 0x25d9,\n    \"invsmileface\", 0x263b,\n    \"iocyrillic\", 0x0451,\n    \"iogonek\", 0x012f,\n    \"iota\", 0x03b9,\n    \"iotadieresis\", 0x03ca,\n    \"iotadieresistonos\", 0x0390,\n    \"iotalatin\", 0x0269,\n    \"iotatonos\", 0x03af,\n    \"iparen\", 0x24a4,\n    \"irigurmukhi\", 0x0a72,\n    \"ismallhiragana\", 0x3043,\n    \"ismallkatakana\", 0x30a3,\n    \"ismallkatakanahalfwidth\", 0xff68,\n    \"issharbengali\", 0x09fa,\n    \"istroke\", 0x0268,\n    \"isuperior\", 0xf6ed,\n    \"iterationhiragana\", 0x309d,\n    \"iterationkatakana\", 0x30fd,\n    \"itilde\", 0x0129,\n    \"itildebelow\", 0x1e2d,\n    \"iubopomofo\", 0x3129,\n    \"iucyrillic\", 0x044e,\n    \"ivowelsignbengali\", 0x09bf,\n    \"ivowelsigndeva\", 0x093f,\n    \"ivowelsigngujarati\", 0x0abf,\n    \"izhitsacyrillic\", 0x0475,\n    \"izhitsadblgravecyrillic\", 0x0477,\n    \"j\", 0x006a,\n    \"jaarmenian\", 0x0571,\n    \"jabengali\", 0x099c,\n    \"jadeva\", 0x091c,\n    \"jagujarati\", 0x0a9c,\n    \"jagurmukhi\", 0x0a1c,\n    \"jbopomofo\", 0x3110,\n    \"jcaron\", 0x01f0,\n    \"jcircle\", 0x24d9,\n    \"jcircumflex\", 0x0135,\n    \"jcrossedtail\", 0x029d,\n    \"jdotlessstroke\", 0x025f,\n    \"jecyrillic\", 0x0458,\n    \"jeemarabic\", 0x062c,\n    \"jeemfinalarabic\", 0xfe9e,\n    \"jeeminitialarabic\", 0xfe9f,\n    \"jeemmedialarabic\", 0xfea0,\n    \"jeharabic\", 0x0698,\n    \"jehfinalarabic\", 0xfb8b,\n    \"jhabengali\", 0x099d,\n    \"jhadeva\", 0x091d,\n    \"jhagujarati\", 0x0a9d,\n    \"jhagurmukhi\", 0x0a1d,\n    \"jheharmenian\", 0x057b,\n    \"jis\", 0x3004,\n    \"jmonospace\", 0xff4a,\n    \"jparen\", 0x24a5,\n    \"jsuperior\", 0x02b2,\n    \"k\", 0x006b,\n    \"kabashkircyrillic\", 0x04a1,\n    \"kabengali\", 0x0995,\n    \"kacute\", 0x1e31,\n    \"kacyrillic\", 0x043a,\n    \"kadescendercyrillic\", 0x049b,\n    \"kadeva\", 0x0915,\n    \"kaf\", 0x05db,\n    \"kafarabic\", 0x0643,\n    \"kafdagesh\", 0xfb3b,\n    \"kafdageshhebrew\", 0xfb3b,\n    \"kaffinalarabic\", 0xfeda,\n    \"kafhebrew\", 0x05db,\n    \"kafinitialarabic\", 0xfedb,\n    \"kafmedialarabic\", 0xfedc,\n    \"kafrafehebrew\", 0xfb4d,\n    \"kagujarati\", 0x0a95,\n    \"kagurmukhi\", 0x0a15,\n    \"kahiragana\", 0x304b,\n    \"kahookcyrillic\", 0x04c4,\n    \"kakatakana\", 0x30ab,\n    \"kakatakanahalfwidth\", 0xff76,\n    \"kappa\", 0x03ba,\n    \"kappasymbolgreek\", 0x03f0,\n    \"kapyeounmieumkorean\", 0x3171,\n    \"kapyeounphieuphkorean\", 0x3184,\n    \"kapyeounpieupkorean\", 0x3178,\n    \"kapyeounssangpieupkorean\", 0x3179,\n    \"karoriisquare\", 0x330d,\n    \"kashidaautoarabic\", 0x0640,\n    \"kashidaautonosidebearingarabic\", 0x0640,\n    \"kasmallkatakana\", 0x30f5,\n    \"kasquare\", 0x3384,\n    \"kasraarabic\", 0x0650,\n    \"kasratanarabic\", 0x064d,\n    \"kastrokecyrillic\", 0x049f,\n    \"katahiraprolongmarkhalfwidth\", 0xff70,\n    \"kaverticalstrokecyrillic\", 0x049d,\n    \"kbopomofo\", 0x310e,\n    \"kcalsquare\", 0x3389,\n    \"kcaron\", 0x01e9,\n    \"kcedilla\", 0x0137,\n    \"kcircle\", 0x24da,\n    \"kcommaaccent\", 0x0137,\n    \"kdotbelow\", 0x1e33,\n    \"keharmenian\", 0x0584,\n    \"kehiragana\", 0x3051,\n    \"kekatakana\", 0x30b1,\n    \"kekatakanahalfwidth\", 0xff79,\n    \"kenarmenian\", 0x056f,\n    \"kesmallkatakana\", 0x30f6,\n    \"kgreenlandic\", 0x0138,\n    \"khabengali\", 0x0996,\n    \"khacyrillic\", 0x0445,\n    \"khadeva\", 0x0916,\n    \"khagujarati\", 0x0a96,\n    \"khagurmukhi\", 0x0a16,\n    \"khaharabic\", 0x062e,\n    \"khahfinalarabic\", 0xfea6,\n    \"khahinitialarabic\", 0xfea7,\n    \"khahmedialarabic\", 0xfea8,\n    \"kheicoptic\", 0x03e7,\n    \"khhadeva\", 0x0959,\n    \"khhagurmukhi\", 0x0a59,\n    \"khieukhacirclekorean\", 0x3278,\n    \"khieukhaparenkorean\", 0x3218,\n    \"khieukhcirclekorean\", 0x326a,\n    \"khieukhkorean\", 0x314b,\n    \"khieukhparenkorean\", 0x320a,\n    \"khokhaithai\", 0x0e02,\n    \"khokhonthai\", 0x0e05,\n    \"khokhuatthai\", 0x0e03,\n    \"khokhwaithai\", 0x0e04,\n    \"khomutthai\", 0x0e5b,\n    \"khook\", 0x0199,\n    \"khorakhangthai\", 0x0e06,\n    \"khzsquare\", 0x3391,\n    \"kihiragana\", 0x304d,\n    \"kikatakana\", 0x30ad,\n    \"kikatakanahalfwidth\", 0xff77,\n    \"kiroguramusquare\", 0x3315,\n    \"kiromeetorusquare\", 0x3316,\n    \"kirosquare\", 0x3314,\n    \"kiyeokacirclekorean\", 0x326e,\n    \"kiyeokaparenkorean\", 0x320e,\n    \"kiyeokcirclekorean\", 0x3260,\n    \"kiyeokkorean\", 0x3131,\n    \"kiyeokparenkorean\", 0x3200,\n    \"kiyeoksioskorean\", 0x3133,\n    \"kjecyrillic\", 0x045c,\n    \"klinebelow\", 0x1e35,\n    \"klsquare\", 0x3398,\n    \"kmcubedsquare\", 0x33a6,\n    \"kmonospace\", 0xff4b,\n    \"kmsquaredsquare\", 0x33a2,\n    \"kohiragana\", 0x3053,\n    \"kohmsquare\", 0x33c0,\n    \"kokaithai\", 0x0e01,\n    \"kokatakana\", 0x30b3,\n    \"kokatakanahalfwidth\", 0xff7a,\n    \"kooposquare\", 0x331e,\n    \"koppacyrillic\", 0x0481,\n    \"koreanstandardsymbol\", 0x327f,\n    \"koroniscmb\", 0x0343,\n    \"kparen\", 0x24a6,\n    \"kpasquare\", 0x33aa,\n    \"ksicyrillic\", 0x046f,\n    \"ktsquare\", 0x33cf,\n    \"kturned\", 0x029e,\n    \"kuhiragana\", 0x304f,\n    \"kukatakana\", 0x30af,\n    \"kukatakanahalfwidth\", 0xff78,\n    \"kvsquare\", 0x33b8,\n    \"kwsquare\", 0x33be,\n    \"l\", 0x006c,\n    \"labengali\", 0x09b2,\n    \"lacute\", 0x013a,\n    \"ladeva\", 0x0932,\n    \"lagujarati\", 0x0ab2,\n    \"lagurmukhi\", 0x0a32,\n    \"lakkhangyaothai\", 0x0e45,\n    \"lamaleffinalarabic\", 0xfefc,\n    \"lamalefhamzaabovefinalarabic\", 0xfef8,\n    \"lamalefhamzaaboveisolatedarabic\", 0xfef7,\n    \"lamalefhamzabelowfinalarabic\", 0xfefa,\n    \"lamalefhamzabelowisolatedarabic\", 0xfef9,\n    \"lamalefisolatedarabic\", 0xfefb,\n    \"lamalefmaddaabovefinalarabic\", 0xfef6,\n    \"lamalefmaddaaboveisolatedarabic\", 0xfef5,\n    \"lamarabic\", 0x0644,\n    \"lambda\", 0x03bb,\n    \"lambdastroke\", 0x019b,\n    \"lamed\", 0x05dc,\n    \"lameddagesh\", 0xfb3c,\n    \"lameddageshhebrew\", 0xfb3c,\n    \"lamedhebrew\", 0x05dc,\n    \"lamfinalarabic\", 0xfede,\n    \"lamhahinitialarabic\", 0xfcca,\n    \"laminitialarabic\", 0xfedf,\n    \"lamjeeminitialarabic\", 0xfcc9,\n    \"lamkhahinitialarabic\", 0xfccb,\n    \"lamlamhehisolatedarabic\", 0xfdf2,\n    \"lammedialarabic\", 0xfee0,\n    \"lammeemhahinitialarabic\", 0xfd88,\n    \"lammeeminitialarabic\", 0xfccc,\n    \"largecircle\", 0x25ef,\n    \"lbar\", 0x019a,\n    \"lbelt\", 0x026c,\n    \"lbopomofo\", 0x310c,\n    \"lcaron\", 0x013e,\n    \"lcedilla\", 0x013c,\n    \"lcircle\", 0x24db,\n    \"lcircumflexbelow\", 0x1e3d,\n    \"lcommaaccent\", 0x013c,\n    \"ldot\", 0x0140,\n    \"ldotaccent\", 0x0140,\n    \"ldotbelow\", 0x1e37,\n    \"ldotbelowmacron\", 0x1e39,\n    \"leftangleabovecmb\", 0x031a,\n    \"lefttackbelowcmb\", 0x0318,\n    \"less\", 0x003c,\n    \"lessequal\", 0x2264,\n    \"lessequalorgreater\", 0x22da,\n    \"lessmonospace\", 0xff1c,\n    \"lessorequivalent\", 0x2272,\n    \"lessorgreater\", 0x2276,\n    \"lessoverequal\", 0x2266,\n    \"lesssmall\", 0xfe64,\n    \"lezh\", 0x026e,\n    \"lfblock\", 0x258c,\n    \"lhookretroflex\", 0x026d,\n    \"lira\", 0x20a4,\n    \"liwnarmenian\", 0x056c,\n    \"lj\", 0x01c9,\n    \"ljecyrillic\", 0x0459,\n    \"ll\", 0xf6c0,\n    \"lladeva\", 0x0933,\n    \"llagujarati\", 0x0ab3,\n    \"llinebelow\", 0x1e3b,\n    \"llladeva\", 0x0934,\n    \"llvocalicbengali\", 0x09e1,\n    \"llvocalicdeva\", 0x0961,\n    \"llvocalicvowelsignbengali\", 0x09e3,\n    \"llvocalicvowelsigndeva\", 0x0963,\n    \"lmiddletilde\", 0x026b,\n    \"lmonospace\", 0xff4c,\n    \"lmsquare\", 0x33d0,\n    \"lochulathai\", 0x0e2c,\n    \"logicaland\", 0x2227,\n    \"logicalnot\", 0x00ac,\n    \"logicalnotreversed\", 0x2310,\n    \"logicalor\", 0x2228,\n    \"lolingthai\", 0x0e25,\n    \"longs\", 0x017f,\n    \"lowlinecenterline\", 0xfe4e,\n    \"lowlinecmb\", 0x0332,\n    \"lowlinedashed\", 0xfe4d,\n    \"lozenge\", 0x25ca,\n    \"lparen\", 0x24a7,\n    \"lslash\", 0x0142,\n    \"lsquare\", 0x2113,\n    \"lsuperior\", 0xf6ee,\n    \"ltshade\", 0x2591,\n    \"luthai\", 0x0e26,\n    \"lvocalicbengali\", 0x098c,\n    \"lvocalicdeva\", 0x090c,\n    \"lvocalicvowelsignbengali\", 0x09e2,\n    \"lvocalicvowelsigndeva\", 0x0962,\n    \"lxsquare\", 0x33d3,\n    \"m\", 0x006d,\n    \"mabengali\", 0x09ae,\n    \"macron\", 0x00af,\n    \"macronbelowcmb\", 0x0331,\n    \"macroncmb\", 0x0304,\n    \"macronlowmod\", 0x02cd,\n    \"macronmonospace\", 0xffe3,\n    \"macute\", 0x1e3f,\n    \"madeva\", 0x092e,\n    \"magujarati\", 0x0aae,\n    \"magurmukhi\", 0x0a2e,\n    \"mahapakhhebrew\", 0x05a4,\n    \"mahapakhlefthebrew\", 0x05a4,\n    \"mahiragana\", 0x307e,\n    \"maichattawalowleftthai\", 0xf895,\n    \"maichattawalowrightthai\", 0xf894,\n    \"maichattawathai\", 0x0e4b,\n    \"maichattawaupperleftthai\", 0xf893,\n    \"maieklowleftthai\", 0xf88c,\n    \"maieklowrightthai\", 0xf88b,\n    \"maiekthai\", 0x0e48,\n    \"maiekupperleftthai\", 0xf88a,\n    \"maihanakatleftthai\", 0xf884,\n    \"maihanakatthai\", 0x0e31,\n    \"maitaikhuleftthai\", 0xf889,\n    \"maitaikhuthai\", 0x0e47,\n    \"maitholowleftthai\", 0xf88f,\n    \"maitholowrightthai\", 0xf88e,\n    \"maithothai\", 0x0e49,\n    \"maithoupperleftthai\", 0xf88d,\n    \"maitrilowleftthai\", 0xf892,\n    \"maitrilowrightthai\", 0xf891,\n    \"maitrithai\", 0x0e4a,\n    \"maitriupperleftthai\", 0xf890,\n    \"maiyamokthai\", 0x0e46,\n    \"makatakana\", 0x30de,\n    \"makatakanahalfwidth\", 0xff8f,\n    \"male\", 0x2642,\n    \"mansyonsquare\", 0x3347,\n    \"maqafhebrew\", 0x05be,\n    \"mars\", 0x2642,\n    \"masoracirclehebrew\", 0x05af,\n    \"masquare\", 0x3383,\n    \"mbopomofo\", 0x3107,\n    \"mbsquare\", 0x33d4,\n    \"mcircle\", 0x24dc,\n    \"mcubedsquare\", 0x33a5,\n    \"mdotaccent\", 0x1e41,\n    \"mdotbelow\", 0x1e43,\n    \"meemarabic\", 0x0645,\n    \"meemfinalarabic\", 0xfee2,\n    \"meeminitialarabic\", 0xfee3,\n    \"meemmedialarabic\", 0xfee4,\n    \"meemmeeminitialarabic\", 0xfcd1,\n    \"meemmeemisolatedarabic\", 0xfc48,\n    \"meetorusquare\", 0x334d,\n    \"mehiragana\", 0x3081,\n    \"meizierasquare\", 0x337e,\n    \"mekatakana\", 0x30e1,\n    \"mekatakanahalfwidth\", 0xff92,\n    \"mem\", 0x05de,\n    \"memdagesh\", 0xfb3e,\n    \"memdageshhebrew\", 0xfb3e,\n    \"memhebrew\", 0x05de,\n    \"menarmenian\", 0x0574,\n    \"merkhahebrew\", 0x05a5,\n    \"merkhakefulahebrew\", 0x05a6,\n    \"merkhakefulalefthebrew\", 0x05a6,\n    \"merkhalefthebrew\", 0x05a5,\n    \"mhook\", 0x0271,\n    \"mhzsquare\", 0x3392,\n    \"middledotkatakanahalfwidth\", 0xff65,\n    \"middot\", 0x00b7,\n    \"mieumacirclekorean\", 0x3272,\n    \"mieumaparenkorean\", 0x3212,\n    \"mieumcirclekorean\", 0x3264,\n    \"mieumkorean\", 0x3141,\n    \"mieumpansioskorean\", 0x3170,\n    \"mieumparenkorean\", 0x3204,\n    \"mieumpieupkorean\", 0x316e,\n    \"mieumsioskorean\", 0x316f,\n    \"mihiragana\", 0x307f,\n    \"mikatakana\", 0x30df,\n    \"mikatakanahalfwidth\", 0xff90,\n    \"minus\", 0x2212,\n    \"minusbelowcmb\", 0x0320,\n    \"minuscircle\", 0x2296,\n    \"minusmod\", 0x02d7,\n    \"minusplus\", 0x2213,\n    \"minute\", 0x2032,\n    \"miribaarusquare\", 0x334a,\n    \"mirisquare\", 0x3349,\n    \"mlonglegturned\", 0x0270,\n    \"mlsquare\", 0x3396,\n    \"mmcubedsquare\", 0x33a3,\n    \"mmonospace\", 0xff4d,\n    \"mmsquaredsquare\", 0x339f,\n    \"mohiragana\", 0x3082,\n    \"mohmsquare\", 0x33c1,\n    \"mokatakana\", 0x30e2,\n    \"mokatakanahalfwidth\", 0xff93,\n    \"molsquare\", 0x33d6,\n    \"momathai\", 0x0e21,\n    \"moverssquare\", 0x33a7,\n    \"moverssquaredsquare\", 0x33a8,\n    \"mparen\", 0x24a8,\n    \"mpasquare\", 0x33ab,\n    \"mssquare\", 0x33b3,\n    \"msuperior\", 0xf6ef,\n    \"mturned\", 0x026f,\n    \"mu\", 0x00b5,\n    \"mu1\", 0x00b5,\n    \"muasquare\", 0x3382,\n    \"muchgreater\", 0x226b,\n    \"muchless\", 0x226a,\n    \"mufsquare\", 0x338c,\n    \"mugreek\", 0x03bc,\n    \"mugsquare\", 0x338d,\n    \"muhiragana\", 0x3080,\n    \"mukatakana\", 0x30e0,\n    \"mukatakanahalfwidth\", 0xff91,\n    \"mulsquare\", 0x3395,\n    \"multiply\", 0x00d7,\n    \"mumsquare\", 0x339b,\n    \"munahhebrew\", 0x05a3,\n    \"munahlefthebrew\", 0x05a3,\n    \"musicalnote\", 0x266a,\n    \"musicalnotedbl\", 0x266b,\n    \"musicflatsign\", 0x266d,\n    \"musicsharpsign\", 0x266f,\n    \"mussquare\", 0x33b2,\n    \"muvsquare\", 0x33b6,\n    \"muwsquare\", 0x33bc,\n    \"mvmegasquare\", 0x33b9,\n    \"mvsquare\", 0x33b7,\n    \"mwmegasquare\", 0x33bf,\n    \"mwsquare\", 0x33bd,\n    \"n\", 0x006e,\n    \"nabengali\", 0x09a8,\n    \"nabla\", 0x2207,\n    \"nacute\", 0x0144,\n    \"nadeva\", 0x0928,\n    \"nagujarati\", 0x0aa8,\n    \"nagurmukhi\", 0x0a28,\n    \"nahiragana\", 0x306a,\n    \"nakatakana\", 0x30ca,\n    \"nakatakanahalfwidth\", 0xff85,\n    \"napostrophe\", 0x0149,\n    \"nasquare\", 0x3381,\n    \"nbopomofo\", 0x310b,\n    \"nbspace\", 0x00a0,\n    \"ncaron\", 0x0148,\n    \"ncedilla\", 0x0146,\n    \"ncircle\", 0x24dd,\n    \"ncircumflexbelow\", 0x1e4b,\n    \"ncommaaccent\", 0x0146,\n    \"ndotaccent\", 0x1e45,\n    \"ndotbelow\", 0x1e47,\n    \"nehiragana\", 0x306d,\n    \"nekatakana\", 0x30cd,\n    \"nekatakanahalfwidth\", 0xff88,\n    \"newsheqelsign\", 0x20aa,\n    \"nfsquare\", 0x338b,\n    \"ngabengali\", 0x0999,\n    \"ngadeva\", 0x0919,\n    \"ngagujarati\", 0x0a99,\n    \"ngagurmukhi\", 0x0a19,\n    \"ngonguthai\", 0x0e07,\n    \"nhiragana\", 0x3093,\n    \"nhookleft\", 0x0272,\n    \"nhookretroflex\", 0x0273,\n    \"nieunacirclekorean\", 0x326f,\n    \"nieunaparenkorean\", 0x320f,\n    \"nieuncieuckorean\", 0x3135,\n    \"nieuncirclekorean\", 0x3261,\n    \"nieunhieuhkorean\", 0x3136,\n    \"nieunkorean\", 0x3134,\n    \"nieunpansioskorean\", 0x3168,\n    \"nieunparenkorean\", 0x3201,\n    \"nieunsioskorean\", 0x3167,\n    \"nieuntikeutkorean\", 0x3166,\n    \"nihiragana\", 0x306b,\n    \"nikatakana\", 0x30cb,\n    \"nikatakanahalfwidth\", 0xff86,\n    \"nikhahitleftthai\", 0xf899,\n    \"nikhahitthai\", 0x0e4d,\n    \"nine\", 0x0039,\n    \"ninearabic\", 0x0669,\n    \"ninebengali\", 0x09ef,\n    \"ninecircle\", 0x2468,\n    \"ninecircleinversesansserif\", 0x2792,\n    \"ninedeva\", 0x096f,\n    \"ninegujarati\", 0x0aef,\n    \"ninegurmukhi\", 0x0a6f,\n    \"ninehackarabic\", 0x0669,\n    \"ninehangzhou\", 0x3029,\n    \"nineideographicparen\", 0x3228,\n    \"nineinferior\", 0x2089,\n    \"ninemonospace\", 0xff19,\n    \"nineoldstyle\", 0xf739,\n    \"nineparen\", 0x247c,\n    \"nineperiod\", 0x2490,\n    \"ninepersian\", 0x06f9,\n    \"nineroman\", 0x2178,\n    \"ninesuperior\", 0x2079,\n    \"nineteencircle\", 0x2472,\n    \"nineteenparen\", 0x2486,\n    \"nineteenperiod\", 0x249a,\n    \"ninethai\", 0x0e59,\n    \"nj\", 0x01cc,\n    \"njecyrillic\", 0x045a,\n    \"nkatakana\", 0x30f3,\n    \"nkatakanahalfwidth\", 0xff9d,\n    \"nlegrightlong\", 0x019e,\n    \"nlinebelow\", 0x1e49,\n    \"nmonospace\", 0xff4e,\n    \"nmsquare\", 0x339a,\n    \"nnabengali\", 0x09a3,\n    \"nnadeva\", 0x0923,\n    \"nnagujarati\", 0x0aa3,\n    \"nnagurmukhi\", 0x0a23,\n    \"nnnadeva\", 0x0929,\n    \"nohiragana\", 0x306e,\n    \"nokatakana\", 0x30ce,\n    \"nokatakanahalfwidth\", 0xff89,\n    \"nonbreakingspace\", 0x00a0,\n    \"nonenthai\", 0x0e13,\n    \"nonuthai\", 0x0e19,\n    \"noonarabic\", 0x0646,\n    \"noonfinalarabic\", 0xfee6,\n    \"noonghunnaarabic\", 0x06ba,\n    \"noonghunnafinalarabic\", 0xfb9f,\n    \"nooninitialarabic\", 0xfee7,\n    \"noonjeeminitialarabic\", 0xfcd2,\n    \"noonjeemisolatedarabic\", 0xfc4b,\n    \"noonmedialarabic\", 0xfee8,\n    \"noonmeeminitialarabic\", 0xfcd5,\n    \"noonmeemisolatedarabic\", 0xfc4e,\n    \"noonnoonfinalarabic\", 0xfc8d,\n    \"notcontains\", 0x220c,\n    \"notelement\", 0x2209,\n    \"notelementof\", 0x2209,\n    \"notequal\", 0x2260,\n    \"notgreater\", 0x226f,\n    \"notgreaternorequal\", 0x2271,\n    \"notgreaternorless\", 0x2279,\n    \"notidentical\", 0x2262,\n    \"notless\", 0x226e,\n    \"notlessnorequal\", 0x2270,\n    \"notparallel\", 0x2226,\n    \"notprecedes\", 0x2280,\n    \"notsubset\", 0x2284,\n    \"notsucceeds\", 0x2281,\n    \"notsuperset\", 0x2285,\n    \"nowarmenian\", 0x0576,\n    \"nparen\", 0x24a9,\n    \"nssquare\", 0x33b1,\n    \"nsuperior\", 0x207f,\n    \"ntilde\", 0x00f1,\n    \"nu\", 0x03bd,\n    \"nuhiragana\", 0x306c,\n    \"nukatakana\", 0x30cc,\n    \"nukatakanahalfwidth\", 0xff87,\n    \"nuktabengali\", 0x09bc,\n    \"nuktadeva\", 0x093c,\n    \"nuktagujarati\", 0x0abc,\n    \"nuktagurmukhi\", 0x0a3c,\n    \"numbersign\", 0x0023,\n    \"numbersignmonospace\", 0xff03,\n    \"numbersignsmall\", 0xfe5f,\n    \"numeralsigngreek\", 0x0374,\n    \"numeralsignlowergreek\", 0x0375,\n    \"numero\", 0x2116,\n    \"nun\", 0x05e0,\n    \"nundagesh\", 0xfb40,\n    \"nundageshhebrew\", 0xfb40,\n    \"nunhebrew\", 0x05e0,\n    \"nvsquare\", 0x33b5,\n    \"nwsquare\", 0x33bb,\n    \"nyabengali\", 0x099e,\n    \"nyadeva\", 0x091e,\n    \"nyagujarati\", 0x0a9e,\n    \"nyagurmukhi\", 0x0a1e,\n    \"o\", 0x006f,\n    \"oacute\", 0x00f3,\n    \"oangthai\", 0x0e2d,\n    \"obarred\", 0x0275,\n    \"obarredcyrillic\", 0x04e9,\n    \"obarreddieresiscyrillic\", 0x04eb,\n    \"obengali\", 0x0993,\n    \"obopomofo\", 0x311b,\n    \"obreve\", 0x014f,\n    \"ocandradeva\", 0x0911,\n    \"ocandragujarati\", 0x0a91,\n    \"ocandravowelsigndeva\", 0x0949,\n    \"ocandravowelsigngujarati\", 0x0ac9,\n    \"ocaron\", 0x01d2,\n    \"ocircle\", 0x24de,\n    \"ocircumflex\", 0x00f4,\n    \"ocircumflexacute\", 0x1ed1,\n    \"ocircumflexdotbelow\", 0x1ed9,\n    \"ocircumflexgrave\", 0x1ed3,\n    \"ocircumflexhookabove\", 0x1ed5,\n    \"ocircumflextilde\", 0x1ed7,\n    \"ocyrillic\", 0x043e,\n    \"odblacute\", 0x0151,\n    \"odblgrave\", 0x020d,\n    \"odeva\", 0x0913,\n    \"odieresis\", 0x00f6,\n    \"odieresiscyrillic\", 0x04e7,\n    \"odotbelow\", 0x1ecd,\n    \"oe\", 0x0153,\n    \"oekorean\", 0x315a,\n    \"ogonek\", 0x02db,\n    \"ogonekcmb\", 0x0328,\n    \"ograve\", 0x00f2,\n    \"ogujarati\", 0x0a93,\n    \"oharmenian\", 0x0585,\n    \"ohiragana\", 0x304a,\n    \"ohookabove\", 0x1ecf,\n    \"ohorn\", 0x01a1,\n    \"ohornacute\", 0x1edb,\n    \"ohorndotbelow\", 0x1ee3,\n    \"ohorngrave\", 0x1edd,\n    \"ohornhookabove\", 0x1edf,\n    \"ohorntilde\", 0x1ee1,\n    \"ohungarumlaut\", 0x0151,\n    \"oi\", 0x01a3,\n    \"oinvertedbreve\", 0x020f,\n    \"okatakana\", 0x30aa,\n    \"okatakanahalfwidth\", 0xff75,\n    \"okorean\", 0x3157,\n    \"olehebrew\", 0x05ab,\n    \"omacron\", 0x014d,\n    \"omacronacute\", 0x1e53,\n    \"omacrongrave\", 0x1e51,\n    \"omdeva\", 0x0950,\n    \"omega\", 0x03c9,\n    \"omega1\", 0x03d6,\n    \"omegacyrillic\", 0x0461,\n    \"omegalatinclosed\", 0x0277,\n    \"omegaroundcyrillic\", 0x047b,\n    \"omegatitlocyrillic\", 0x047d,\n    \"omegatonos\", 0x03ce,\n    \"omgujarati\", 0x0ad0,\n    \"omicron\", 0x03bf,\n    \"omicrontonos\", 0x03cc,\n    \"omonospace\", 0xff4f,\n    \"one\", 0x0031,\n    \"onearabic\", 0x0661,\n    \"onebengali\", 0x09e7,\n    \"onecircle\", 0x2460,\n    \"onecircleinversesansserif\", 0x278a,\n    \"onedeva\", 0x0967,\n    \"onedotenleader\", 0x2024,\n    \"oneeighth\", 0x215b,\n    \"onefitted\", 0xf6dc,\n    \"onegujarati\", 0x0ae7,\n    \"onegurmukhi\", 0x0a67,\n    \"onehackarabic\", 0x0661,\n    \"onehalf\", 0x00bd,\n    \"onehangzhou\", 0x3021,\n    \"oneideographicparen\", 0x3220,\n    \"oneinferior\", 0x2081,\n    \"onemonospace\", 0xff11,\n    \"onenumeratorbengali\", 0x09f4,\n    \"oneoldstyle\", 0xf731,\n    \"oneparen\", 0x2474,\n    \"oneperiod\", 0x2488,\n    \"onepersian\", 0x06f1,\n    \"onequarter\", 0x00bc,\n    \"oneroman\", 0x2170,\n    \"onesuperior\", 0x00b9,\n    \"onethai\", 0x0e51,\n    \"onethird\", 0x2153,\n    \"oogonek\", 0x01eb,\n    \"oogonekmacron\", 0x01ed,\n    \"oogurmukhi\", 0x0a13,\n    \"oomatragurmukhi\", 0x0a4b,\n    \"oopen\", 0x0254,\n    \"oparen\", 0x24aa,\n    \"openbullet\", 0x25e6,\n    \"option\", 0x2325,\n    \"ordfeminine\", 0x00aa,\n    \"ordmasculine\", 0x00ba,\n    \"orthogonal\", 0x221f,\n    \"oshortdeva\", 0x0912,\n    \"oshortvowelsigndeva\", 0x094a,\n    \"oslash\", 0x00f8,\n    \"oslashacute\", 0x01ff,\n    \"osmallhiragana\", 0x3049,\n    \"osmallkatakana\", 0x30a9,\n    \"osmallkatakanahalfwidth\", 0xff6b,\n    \"ostrokeacute\", 0x01ff,\n    \"osuperior\", 0xf6f0,\n    \"otcyrillic\", 0x047f,\n    \"otilde\", 0x00f5,\n    \"otildeacute\", 0x1e4d,\n    \"otildedieresis\", 0x1e4f,\n    \"oubopomofo\", 0x3121,\n    \"overline\", 0x203e,\n    \"overlinecenterline\", 0xfe4a,\n    \"overlinecmb\", 0x0305,\n    \"overlinedashed\", 0xfe49,\n    \"overlinedblwavy\", 0xfe4c,\n    \"overlinewavy\", 0xfe4b,\n    \"overscore\", 0x00af,\n    \"ovowelsignbengali\", 0x09cb,\n    \"ovowelsigndeva\", 0x094b,\n    \"ovowelsigngujarati\", 0x0acb,\n    \"p\", 0x0070,\n    \"paampssquare\", 0x3380,\n    \"paasentosquare\", 0x332b,\n    \"pabengali\", 0x09aa,\n    \"pacute\", 0x1e55,\n    \"padeva\", 0x092a,\n    \"pagedown\", 0x21df,\n    \"pageup\", 0x21de,\n    \"pagujarati\", 0x0aaa,\n    \"pagurmukhi\", 0x0a2a,\n    \"pahiragana\", 0x3071,\n    \"paiyannoithai\", 0x0e2f,\n    \"pakatakana\", 0x30d1,\n    \"palatalizationcyrilliccmb\", 0x0484,\n    \"palochkacyrillic\", 0x04c0,\n    \"pansioskorean\", 0x317f,\n    \"paragraph\", 0x00b6,\n    \"parallel\", 0x2225,\n    \"parenleft\", 0x0028,\n    \"parenleftaltonearabic\", 0xfd3e,\n    \"parenleftbt\", 0xf8ed,\n    \"parenleftex\", 0xf8ec,\n    \"parenleftinferior\", 0x208d,\n    \"parenleftmonospace\", 0xff08,\n    \"parenleftsmall\", 0xfe59,\n    \"parenleftsuperior\", 0x207d,\n    \"parenlefttp\", 0xf8eb,\n    \"parenleftvertical\", 0xfe35,\n    \"parenright\", 0x0029,\n    \"parenrightaltonearabic\", 0xfd3f,\n    \"parenrightbt\", 0xf8f8,\n    \"parenrightex\", 0xf8f7,\n    \"parenrightinferior\", 0x208e,\n    \"parenrightmonospace\", 0xff09,\n    \"parenrightsmall\", 0xfe5a,\n    \"parenrightsuperior\", 0x207e,\n    \"parenrighttp\", 0xf8f6,\n    \"parenrightvertical\", 0xfe36,\n    \"partialdiff\", 0x2202,\n    \"paseqhebrew\", 0x05c0,\n    \"pashtahebrew\", 0x0599,\n    \"pasquare\", 0x33a9,\n    \"patah\", 0x05b7,\n    \"patah11\", 0x05b7,\n    \"patah1d\", 0x05b7,\n    \"patah2a\", 0x05b7,\n    \"patahhebrew\", 0x05b7,\n    \"patahnarrowhebrew\", 0x05b7,\n    \"patahquarterhebrew\", 0x05b7,\n    \"patahwidehebrew\", 0x05b7,\n    \"pazerhebrew\", 0x05a1,\n    \"pbopomofo\", 0x3106,\n    \"pcircle\", 0x24df,\n    \"pdotaccent\", 0x1e57,\n    \"pe\", 0x05e4,\n    \"pecyrillic\", 0x043f,\n    \"pedagesh\", 0xfb44,\n    \"pedageshhebrew\", 0xfb44,\n    \"peezisquare\", 0x333b,\n    \"pefinaldageshhebrew\", 0xfb43,\n    \"peharabic\", 0x067e,\n    \"peharmenian\", 0x057a,\n    \"pehebrew\", 0x05e4,\n    \"pehfinalarabic\", 0xfb57,\n    \"pehinitialarabic\", 0xfb58,\n    \"pehiragana\", 0x307a,\n    \"pehmedialarabic\", 0xfb59,\n    \"pekatakana\", 0x30da,\n    \"pemiddlehookcyrillic\", 0x04a7,\n    \"perafehebrew\", 0xfb4e,\n    \"percent\", 0x0025,\n    \"percentarabic\", 0x066a,\n    \"percentmonospace\", 0xff05,\n    \"percentsmall\", 0xfe6a,\n    \"period\", 0x002e,\n    \"periodarmenian\", 0x0589,\n    \"periodcentered\", 0x00b7,\n    \"periodhalfwidth\", 0xff61,\n    \"periodinferior\", 0xf6e7,\n    \"periodmonospace\", 0xff0e,\n    \"periodsmall\", 0xfe52,\n    \"periodsuperior\", 0xf6e8,\n    \"perispomenigreekcmb\", 0x0342,\n    \"perpendicular\", 0x22a5,\n    \"perthousand\", 0x2030,\n    \"peseta\", 0x20a7,\n    \"pfsquare\", 0x338a,\n    \"phabengali\", 0x09ab,\n    \"phadeva\", 0x092b,\n    \"phagujarati\", 0x0aab,\n    \"phagurmukhi\", 0x0a2b,\n    \"phi\", 0x03c6,\n    \"phi1\", 0x03d5,\n    \"phieuphacirclekorean\", 0x327a,\n    \"phieuphaparenkorean\", 0x321a,\n    \"phieuphcirclekorean\", 0x326c,\n    \"phieuphkorean\", 0x314d,\n    \"phieuphparenkorean\", 0x320c,\n    \"philatin\", 0x0278,\n    \"phinthuthai\", 0x0e3a,\n    \"phisymbolgreek\", 0x03d5,\n    \"phook\", 0x01a5,\n    \"phophanthai\", 0x0e1e,\n    \"phophungthai\", 0x0e1c,\n    \"phosamphaothai\", 0x0e20,\n    \"pi\", 0x03c0,\n    \"pieupacirclekorean\", 0x3273,\n    \"pieupaparenkorean\", 0x3213,\n    \"pieupcieuckorean\", 0x3176,\n    \"pieupcirclekorean\", 0x3265,\n    \"pieupkiyeokkorean\", 0x3172,\n    \"pieupkorean\", 0x3142,\n    \"pieupparenkorean\", 0x3205,\n    \"pieupsioskiyeokkorean\", 0x3174,\n    \"pieupsioskorean\", 0x3144,\n    \"pieupsiostikeutkorean\", 0x3175,\n    \"pieupthieuthkorean\", 0x3177,\n    \"pieuptikeutkorean\", 0x3173,\n    \"pihiragana\", 0x3074,\n    \"pikatakana\", 0x30d4,\n    \"pisymbolgreek\", 0x03d6,\n    \"piwrarmenian\", 0x0583,\n    \"plus\", 0x002b,\n    \"plusbelowcmb\", 0x031f,\n    \"pluscircle\", 0x2295,\n    \"plusminus\", 0x00b1,\n    \"plusmod\", 0x02d6,\n    \"plusmonospace\", 0xff0b,\n    \"plussmall\", 0xfe62,\n    \"plussuperior\", 0x207a,\n    \"pmonospace\", 0xff50,\n    \"pmsquare\", 0x33d8,\n    \"pohiragana\", 0x307d,\n    \"pointingindexdownwhite\", 0x261f,\n    \"pointingindexleftwhite\", 0x261c,\n    \"pointingindexrightwhite\", 0x261e,\n    \"pointingindexupwhite\", 0x261d,\n    \"pokatakana\", 0x30dd,\n    \"poplathai\", 0x0e1b,\n    \"postalmark\", 0x3012,\n    \"postalmarkface\", 0x3020,\n    \"pparen\", 0x24ab,\n    \"precedes\", 0x227a,\n    \"prescription\", 0x211e,\n    \"primemod\", 0x02b9,\n    \"primereversed\", 0x2035,\n    \"product\", 0x220f,\n    \"projective\", 0x2305,\n    \"prolongedkana\", 0x30fc,\n    \"propellor\", 0x2318,\n    \"propersubset\", 0x2282,\n    \"propersuperset\", 0x2283,\n    \"proportion\", 0x2237,\n    \"proportional\", 0x221d,\n    \"psi\", 0x03c8,\n    \"psicyrillic\", 0x0471,\n    \"psilipneumatacyrilliccmb\", 0x0486,\n    \"pssquare\", 0x33b0,\n    \"puhiragana\", 0x3077,\n    \"pukatakana\", 0x30d7,\n    \"pvsquare\", 0x33b4,\n    \"pwsquare\", 0x33ba,\n    \"q\", 0x0071,\n    \"qadeva\", 0x0958,\n    \"qadmahebrew\", 0x05a8,\n    \"qafarabic\", 0x0642,\n    \"qaffinalarabic\", 0xfed6,\n    \"qafinitialarabic\", 0xfed7,\n    \"qafmedialarabic\", 0xfed8,\n    \"qamats\", 0x05b8,\n    \"qamats10\", 0x05b8,\n    \"qamats1a\", 0x05b8,\n    \"qamats1c\", 0x05b8,\n    \"qamats27\", 0x05b8,\n    \"qamats29\", 0x05b8,\n    \"qamats33\", 0x05b8,\n    \"qamatsde\", 0x05b8,\n    \"qamatshebrew\", 0x05b8,\n    \"qamatsnarrowhebrew\", 0x05b8,\n    \"qamatsqatanhebrew\", 0x05b8,\n    \"qamatsqatannarrowhebrew\", 0x05b8,\n    \"qamatsqatanquarterhebrew\", 0x05b8,\n    \"qamatsqatanwidehebrew\", 0x05b8,\n    \"qamatsquarterhebrew\", 0x05b8,\n    \"qamatswidehebrew\", 0x05b8,\n    \"qarneyparahebrew\", 0x059f,\n    \"qbopomofo\", 0x3111,\n    \"qcircle\", 0x24e0,\n    \"qhook\", 0x02a0,\n    \"qmonospace\", 0xff51,\n    \"qof\", 0x05e7,\n    \"qofdagesh\", 0xfb47,\n    \"qofdageshhebrew\", 0xfb47,\n    \"qofhebrew\", 0x05e7,\n    \"qparen\", 0x24ac,\n    \"quarternote\", 0x2669,\n    \"qubuts\", 0x05bb,\n    \"qubuts18\", 0x05bb,\n    \"qubuts25\", 0x05bb,\n    \"qubuts31\", 0x05bb,\n    \"qubutshebrew\", 0x05bb,\n    \"qubutsnarrowhebrew\", 0x05bb,\n    \"qubutsquarterhebrew\", 0x05bb,\n    \"qubutswidehebrew\", 0x05bb,\n    \"question\", 0x003f,\n    \"questionarabic\", 0x061f,\n    \"questionarmenian\", 0x055e,\n    \"questiondown\", 0x00bf,\n    \"questiondownsmall\", 0xf7bf,\n    \"questiongreek\", 0x037e,\n    \"questionmonospace\", 0xff1f,\n    \"questionsmall\", 0xf73f,\n    \"quotedbl\", 0x0022,\n    \"quotedblbase\", 0x201e,\n    \"quotedblleft\", 0x201c,\n    \"quotedblmonospace\", 0xff02,\n    \"quotedblprime\", 0x301e,\n    \"quotedblprimereversed\", 0x301d,\n    \"quotedblright\", 0x201d,\n    \"quoteleft\", 0x2018,\n    \"quoteleftreversed\", 0x201b,\n    \"quotereversed\", 0x201b,\n    \"quoteright\", 0x2019,\n    \"quoterightn\", 0x0149,\n    \"quotesinglbase\", 0x201a,\n    \"quotesingle\", 0x0027,\n    \"quotesinglemonospace\", 0xff07,\n    \"r\", 0x0072,\n    \"raarmenian\", 0x057c,\n    \"rabengali\", 0x09b0,\n    \"racute\", 0x0155,\n    \"radeva\", 0x0930,\n    \"radical\", 0x221a,\n    \"radicalex\", 0xf8e5,\n    \"radoverssquare\", 0x33ae,\n    \"radoverssquaredsquare\", 0x33af,\n    \"radsquare\", 0x33ad,\n    \"rafe\", 0x05bf,\n    \"rafehebrew\", 0x05bf,\n    \"ragujarati\", 0x0ab0,\n    \"ragurmukhi\", 0x0a30,\n    \"rahiragana\", 0x3089,\n    \"rakatakana\", 0x30e9,\n    \"rakatakanahalfwidth\", 0xff97,\n    \"ralowerdiagonalbengali\", 0x09f1,\n    \"ramiddlediagonalbengali\", 0x09f0,\n    \"ramshorn\", 0x0264,\n    \"ratio\", 0x2236,\n    \"rbopomofo\", 0x3116,\n    \"rcaron\", 0x0159,\n    \"rcedilla\", 0x0157,\n    \"rcircle\", 0x24e1,\n    \"rcommaaccent\", 0x0157,\n    \"rdblgrave\", 0x0211,\n    \"rdotaccent\", 0x1e59,\n    \"rdotbelow\", 0x1e5b,\n    \"rdotbelowmacron\", 0x1e5d,\n    \"referencemark\", 0x203b,\n    \"reflexsubset\", 0x2286,\n    \"reflexsuperset\", 0x2287,\n    \"registered\", 0x00ae,\n    \"registersans\", 0xf8e8,\n    \"registerserif\", 0xf6da,\n    \"reharabic\", 0x0631,\n    \"reharmenian\", 0x0580,\n    \"rehfinalarabic\", 0xfeae,\n    \"rehiragana\", 0x308c,\n    \"rekatakana\", 0x30ec,\n    \"rekatakanahalfwidth\", 0xff9a,\n    \"resh\", 0x05e8,\n    \"reshdageshhebrew\", 0xfb48,\n    \"reshhebrew\", 0x05e8,\n    \"reversedtilde\", 0x223d,\n    \"reviahebrew\", 0x0597,\n    \"reviamugrashhebrew\", 0x0597,\n    \"revlogicalnot\", 0x2310,\n    \"rfishhook\", 0x027e,\n    \"rfishhookreversed\", 0x027f,\n    \"rhabengali\", 0x09dd,\n    \"rhadeva\", 0x095d,\n    \"rho\", 0x03c1,\n    \"rhook\", 0x027d,\n    \"rhookturned\", 0x027b,\n    \"rhookturnedsuperior\", 0x02b5,\n    \"rhosymbolgreek\", 0x03f1,\n    \"rhotichookmod\", 0x02de,\n    \"rieulacirclekorean\", 0x3271,\n    \"rieulaparenkorean\", 0x3211,\n    \"rieulcirclekorean\", 0x3263,\n    \"rieulhieuhkorean\", 0x3140,\n    \"rieulkiyeokkorean\", 0x313a,\n    \"rieulkiyeoksioskorean\", 0x3169,\n    \"rieulkorean\", 0x3139,\n    \"rieulmieumkorean\", 0x313b,\n    \"rieulpansioskorean\", 0x316c,\n    \"rieulparenkorean\", 0x3203,\n    \"rieulphieuphkorean\", 0x313f,\n    \"rieulpieupkorean\", 0x313c,\n    \"rieulpieupsioskorean\", 0x316b,\n    \"rieulsioskorean\", 0x313d,\n    \"rieulthieuthkorean\", 0x313e,\n    \"rieultikeutkorean\", 0x316a,\n    \"rieulyeorinhieuhkorean\", 0x316d,\n    \"rightangle\", 0x221f,\n    \"righttackbelowcmb\", 0x0319,\n    \"righttriangle\", 0x22bf,\n    \"rihiragana\", 0x308a,\n    \"rikatakana\", 0x30ea,\n    \"rikatakanahalfwidth\", 0xff98,\n    \"ring\", 0x02da,\n    \"ringbelowcmb\", 0x0325,\n    \"ringcmb\", 0x030a,\n    \"ringhalfleft\", 0x02bf,\n    \"ringhalfleftarmenian\", 0x0559,\n    \"ringhalfleftbelowcmb\", 0x031c,\n    \"ringhalfleftcentered\", 0x02d3,\n    \"ringhalfright\", 0x02be,\n    \"ringhalfrightbelowcmb\", 0x0339,\n    \"ringhalfrightcentered\", 0x02d2,\n    \"rinvertedbreve\", 0x0213,\n    \"rittorusquare\", 0x3351,\n    \"rlinebelow\", 0x1e5f,\n    \"rlongleg\", 0x027c,\n    \"rlonglegturned\", 0x027a,\n    \"rmonospace\", 0xff52,\n    \"rohiragana\", 0x308d,\n    \"rokatakana\", 0x30ed,\n    \"rokatakanahalfwidth\", 0xff9b,\n    \"roruathai\", 0x0e23,\n    \"rparen\", 0x24ad,\n    \"rrabengali\", 0x09dc,\n    \"rradeva\", 0x0931,\n    \"rragurmukhi\", 0x0a5c,\n    \"rreharabic\", 0x0691,\n    \"rrehfinalarabic\", 0xfb8d,\n    \"rrvocalicbengali\", 0x09e0,\n    \"rrvocalicdeva\", 0x0960,\n    \"rrvocalicgujarati\", 0x0ae0,\n    \"rrvocalicvowelsignbengali\", 0x09c4,\n    \"rrvocalicvowelsigndeva\", 0x0944,\n    \"rrvocalicvowelsigngujarati\", 0x0ac4,\n    \"rsuperior\", 0xf6f1,\n    \"rtblock\", 0x2590,\n    \"rturned\", 0x0279,\n    \"rturnedsuperior\", 0x02b4,\n    \"ruhiragana\", 0x308b,\n    \"rukatakana\", 0x30eb,\n    \"rukatakanahalfwidth\", 0xff99,\n    \"rupeemarkbengali\", 0x09f2,\n    \"rupeesignbengali\", 0x09f3,\n    \"rupiah\", 0xf6dd,\n    \"ruthai\", 0x0e24,\n    \"rvocalicbengali\", 0x098b,\n    \"rvocalicdeva\", 0x090b,\n    \"rvocalicgujarati\", 0x0a8b,\n    \"rvocalicvowelsignbengali\", 0x09c3,\n    \"rvocalicvowelsigndeva\", 0x0943,\n    \"rvocalicvowelsigngujarati\", 0x0ac3,\n    \"s\", 0x0073,\n    \"sabengali\", 0x09b8,\n    \"sacute\", 0x015b,\n    \"sacutedotaccent\", 0x1e65,\n    \"sadarabic\", 0x0635,\n    \"sadeva\", 0x0938,\n    \"sadfinalarabic\", 0xfeba,\n    \"sadinitialarabic\", 0xfebb,\n    \"sadmedialarabic\", 0xfebc,\n    \"sagujarati\", 0x0ab8,\n    \"sagurmukhi\", 0x0a38,\n    \"sahiragana\", 0x3055,\n    \"sakatakana\", 0x30b5,\n    \"sakatakanahalfwidth\", 0xff7b,\n    \"sallallahoualayhewasallamarabic\", 0xfdfa,\n    \"samekh\", 0x05e1,\n    \"samekhdagesh\", 0xfb41,\n    \"samekhdageshhebrew\", 0xfb41,\n    \"samekhhebrew\", 0x05e1,\n    \"saraaathai\", 0x0e32,\n    \"saraaethai\", 0x0e41,\n    \"saraaimaimalaithai\", 0x0e44,\n    \"saraaimaimuanthai\", 0x0e43,\n    \"saraamthai\", 0x0e33,\n    \"saraathai\", 0x0e30,\n    \"saraethai\", 0x0e40,\n    \"saraiileftthai\", 0xf886,\n    \"saraiithai\", 0x0e35,\n    \"saraileftthai\", 0xf885,\n    \"saraithai\", 0x0e34,\n    \"saraothai\", 0x0e42,\n    \"saraueeleftthai\", 0xf888,\n    \"saraueethai\", 0x0e37,\n    \"saraueleftthai\", 0xf887,\n    \"sarauethai\", 0x0e36,\n    \"sarauthai\", 0x0e38,\n    \"sarauuthai\", 0x0e39,\n    \"sbopomofo\", 0x3119,\n    \"scaron\", 0x0161,\n    \"scarondotaccent\", 0x1e67,\n    \"scedilla\", 0x015f,\n    \"schwa\", 0x0259,\n    \"schwacyrillic\", 0x04d9,\n    \"schwadieresiscyrillic\", 0x04db,\n    \"schwahook\", 0x025a,\n    \"scircle\", 0x24e2,\n    \"scircumflex\", 0x015d,\n    \"scommaaccent\", 0x0219,\n    \"sdotaccent\", 0x1e61,\n    \"sdotbelow\", 0x1e63,\n    \"sdotbelowdotaccent\", 0x1e69,\n    \"seagullbelowcmb\", 0x033c,\n    \"second\", 0x2033,\n    \"secondtonechinese\", 0x02ca,\n    \"section\", 0x00a7,\n    \"seenarabic\", 0x0633,\n    \"seenfinalarabic\", 0xfeb2,\n    \"seeninitialarabic\", 0xfeb3,\n    \"seenmedialarabic\", 0xfeb4,\n    \"segol\", 0x05b6,\n    \"segol13\", 0x05b6,\n    \"segol1f\", 0x05b6,\n    \"segol2c\", 0x05b6,\n    \"segolhebrew\", 0x05b6,\n    \"segolnarrowhebrew\", 0x05b6,\n    \"segolquarterhebrew\", 0x05b6,\n    \"segoltahebrew\", 0x0592,\n    \"segolwidehebrew\", 0x05b6,\n    \"seharmenian\", 0x057d,\n    \"sehiragana\", 0x305b,\n    \"sekatakana\", 0x30bb,\n    \"sekatakanahalfwidth\", 0xff7e,\n    \"semicolon\", 0x003b,\n    \"semicolonarabic\", 0x061b,\n    \"semicolonmonospace\", 0xff1b,\n    \"semicolonsmall\", 0xfe54,\n    \"semivoicedmarkkana\", 0x309c,\n    \"semivoicedmarkkanahalfwidth\", 0xff9f,\n    \"sentisquare\", 0x3322,\n    \"sentosquare\", 0x3323,\n    \"seven\", 0x0037,\n    \"sevenarabic\", 0x0667,\n    \"sevenbengali\", 0x09ed,\n    \"sevencircle\", 0x2466,\n    \"sevencircleinversesansserif\", 0x2790,\n    \"sevendeva\", 0x096d,\n    \"seveneighths\", 0x215e,\n    \"sevengujarati\", 0x0aed,\n    \"sevengurmukhi\", 0x0a6d,\n    \"sevenhackarabic\", 0x0667,\n    \"sevenhangzhou\", 0x3027,\n    \"sevenideographicparen\", 0x3226,\n    \"seveninferior\", 0x2087,\n    \"sevenmonospace\", 0xff17,\n    \"sevenoldstyle\", 0xf737,\n    \"sevenparen\", 0x247a,\n    \"sevenperiod\", 0x248e,\n    \"sevenpersian\", 0x06f7,\n    \"sevenroman\", 0x2176,\n    \"sevensuperior\", 0x2077,\n    \"seventeencircle\", 0x2470,\n    \"seventeenparen\", 0x2484,\n    \"seventeenperiod\", 0x2498,\n    \"seventhai\", 0x0e57,\n    \"sfthyphen\", 0x00ad,\n    \"shaarmenian\", 0x0577,\n    \"shabengali\", 0x09b6,\n    \"shacyrillic\", 0x0448,\n    \"shaddaarabic\", 0x0651,\n    \"shaddadammaarabic\", 0xfc61,\n    \"shaddadammatanarabic\", 0xfc5e,\n    \"shaddafathaarabic\", 0xfc60,\n    \"shaddakasraarabic\", 0xfc62,\n    \"shaddakasratanarabic\", 0xfc5f,\n    \"shade\", 0x2592,\n    \"shadedark\", 0x2593,\n    \"shadelight\", 0x2591,\n    \"shademedium\", 0x2592,\n    \"shadeva\", 0x0936,\n    \"shagujarati\", 0x0ab6,\n    \"shagurmukhi\", 0x0a36,\n    \"shalshelethebrew\", 0x0593,\n    \"shbopomofo\", 0x3115,\n    \"shchacyrillic\", 0x0449,\n    \"sheenarabic\", 0x0634,\n    \"sheenfinalarabic\", 0xfeb6,\n    \"sheeninitialarabic\", 0xfeb7,\n    \"sheenmedialarabic\", 0xfeb8,\n    \"sheicoptic\", 0x03e3,\n    \"sheqel\", 0x20aa,\n    \"sheqelhebrew\", 0x20aa,\n    \"sheva\", 0x05b0,\n    \"sheva115\", 0x05b0,\n    \"sheva15\", 0x05b0,\n    \"sheva22\", 0x05b0,\n    \"sheva2e\", 0x05b0,\n    \"shevahebrew\", 0x05b0,\n    \"shevanarrowhebrew\", 0x05b0,\n    \"shevaquarterhebrew\", 0x05b0,\n    \"shevawidehebrew\", 0x05b0,\n    \"shhacyrillic\", 0x04bb,\n    \"shimacoptic\", 0x03ed,\n    \"shin\", 0x05e9,\n    \"shindagesh\", 0xfb49,\n    \"shindageshhebrew\", 0xfb49,\n    \"shindageshshindot\", 0xfb2c,\n    \"shindageshshindothebrew\", 0xfb2c,\n    \"shindageshsindot\", 0xfb2d,\n    \"shindageshsindothebrew\", 0xfb2d,\n    \"shindothebrew\", 0x05c1,\n    \"shinhebrew\", 0x05e9,\n    \"shinshindot\", 0xfb2a,\n    \"shinshindothebrew\", 0xfb2a,\n    \"shinsindot\", 0xfb2b,\n    \"shinsindothebrew\", 0xfb2b,\n    \"shook\", 0x0282,\n    \"sigma\", 0x03c3,\n    \"sigma1\", 0x03c2,\n    \"sigmafinal\", 0x03c2,\n    \"sigmalunatesymbolgreek\", 0x03f2,\n    \"sihiragana\", 0x3057,\n    \"sikatakana\", 0x30b7,\n    \"sikatakanahalfwidth\", 0xff7c,\n    \"siluqhebrew\", 0x05bd,\n    \"siluqlefthebrew\", 0x05bd,\n    \"similar\", 0x223c,\n    \"sindothebrew\", 0x05c2,\n    \"siosacirclekorean\", 0x3274,\n    \"siosaparenkorean\", 0x3214,\n    \"sioscieuckorean\", 0x317e,\n    \"sioscirclekorean\", 0x3266,\n    \"sioskiyeokkorean\", 0x317a,\n    \"sioskorean\", 0x3145,\n    \"siosnieunkorean\", 0x317b,\n    \"siosparenkorean\", 0x3206,\n    \"siospieupkorean\", 0x317d,\n    \"siostikeutkorean\", 0x317c,\n    \"six\", 0x0036,\n    \"sixarabic\", 0x0666,\n    \"sixbengali\", 0x09ec,\n    \"sixcircle\", 0x2465,\n    \"sixcircleinversesansserif\", 0x278f,\n    \"sixdeva\", 0x096c,\n    \"sixgujarati\", 0x0aec,\n    \"sixgurmukhi\", 0x0a6c,\n    \"sixhackarabic\", 0x0666,\n    \"sixhangzhou\", 0x3026,\n    \"sixideographicparen\", 0x3225,\n    \"sixinferior\", 0x2086,\n    \"sixmonospace\", 0xff16,\n    \"sixoldstyle\", 0xf736,\n    \"sixparen\", 0x2479,\n    \"sixperiod\", 0x248d,\n    \"sixpersian\", 0x06f6,\n    \"sixroman\", 0x2175,\n    \"sixsuperior\", 0x2076,\n    \"sixteencircle\", 0x246f,\n    \"sixteencurrencydenominatorbengali\", 0x09f9,\n    \"sixteenparen\", 0x2483,\n    \"sixteenperiod\", 0x2497,\n    \"sixthai\", 0x0e56,\n    \"slash\", 0x002f,\n    \"slashmonospace\", 0xff0f,\n    \"slong\", 0x017f,\n    \"slongdotaccent\", 0x1e9b,\n    \"smileface\", 0x263a,\n    \"smonospace\", 0xff53,\n    \"sofpasuqhebrew\", 0x05c3,\n    \"softhyphen\", 0x00ad,\n    \"softsigncyrillic\", 0x044c,\n    \"sohiragana\", 0x305d,\n    \"sokatakana\", 0x30bd,\n    \"sokatakanahalfwidth\", 0xff7f,\n    \"soliduslongoverlaycmb\", 0x0338,\n    \"solidusshortoverlaycmb\", 0x0337,\n    \"sorusithai\", 0x0e29,\n    \"sosalathai\", 0x0e28,\n    \"sosothai\", 0x0e0b,\n    \"sosuathai\", 0x0e2a,\n    \"space\", 0x0020,\n    \"spacehackarabic\", 0x0020,\n    \"spade\", 0x2660,\n    \"spadesuitblack\", 0x2660,\n    \"spadesuitwhite\", 0x2664,\n    \"sparen\", 0x24ae,\n    \"squarebelowcmb\", 0x033b,\n    \"squarecc\", 0x33c4,\n    \"squarecm\", 0x339d,\n    \"squarediagonalcrosshatchfill\", 0x25a9,\n    \"squarehorizontalfill\", 0x25a4,\n    \"squarekg\", 0x338f,\n    \"squarekm\", 0x339e,\n    \"squarekmcapital\", 0x33ce,\n    \"squareln\", 0x33d1,\n    \"squarelog\", 0x33d2,\n    \"squaremg\", 0x338e,\n    \"squaremil\", 0x33d5,\n    \"squaremm\", 0x339c,\n    \"squaremsquared\", 0x33a1,\n    \"squareorthogonalcrosshatchfill\", 0x25a6,\n    \"squareupperlefttolowerrightfill\", 0x25a7,\n    \"squareupperrighttolowerleftfill\", 0x25a8,\n    \"squareverticalfill\", 0x25a5,\n    \"squarewhitewithsmallblack\", 0x25a3,\n    \"srsquare\", 0x33db,\n    \"ssabengali\", 0x09b7,\n    \"ssadeva\", 0x0937,\n    \"ssagujarati\", 0x0ab7,\n    \"ssangcieuckorean\", 0x3149,\n    \"ssanghieuhkorean\", 0x3185,\n    \"ssangieungkorean\", 0x3180,\n    \"ssangkiyeokkorean\", 0x3132,\n    \"ssangnieunkorean\", 0x3165,\n    \"ssangpieupkorean\", 0x3143,\n    \"ssangsioskorean\", 0x3146,\n    \"ssangtikeutkorean\", 0x3138,\n    \"ssuperior\", 0xf6f2,\n    \"sterling\", 0x00a3,\n    \"sterlingmonospace\", 0xffe1,\n    \"strokelongoverlaycmb\", 0x0336,\n    \"strokeshortoverlaycmb\", 0x0335,\n    \"subset\", 0x2282,\n    \"subsetnotequal\", 0x228a,\n    \"subsetorequal\", 0x2286,\n    \"succeeds\", 0x227b,\n    \"suchthat\", 0x220b,\n    \"suhiragana\", 0x3059,\n    \"sukatakana\", 0x30b9,\n    \"sukatakanahalfwidth\", 0xff7d,\n    \"sukunarabic\", 0x0652,\n    \"summation\", 0x2211,\n    \"sun\", 0x263c,\n    \"superset\", 0x2283,\n    \"supersetnotequal\", 0x228b,\n    \"supersetorequal\", 0x2287,\n    \"svsquare\", 0x33dc,\n    \"syouwaerasquare\", 0x337c,\n    \"t\", 0x0074,\n    \"tabengali\", 0x09a4,\n    \"tackdown\", 0x22a4,\n    \"tackleft\", 0x22a3,\n    \"tadeva\", 0x0924,\n    \"tagujarati\", 0x0aa4,\n    \"tagurmukhi\", 0x0a24,\n    \"taharabic\", 0x0637,\n    \"tahfinalarabic\", 0xfec2,\n    \"tahinitialarabic\", 0xfec3,\n    \"tahiragana\", 0x305f,\n    \"tahmedialarabic\", 0xfec4,\n    \"taisyouerasquare\", 0x337d,\n    \"takatakana\", 0x30bf,\n    \"takatakanahalfwidth\", 0xff80,\n    \"tatweelarabic\", 0x0640,\n    \"tau\", 0x03c4,\n    \"tav\", 0x05ea,\n    \"tavdages\", 0xfb4a,\n    \"tavdagesh\", 0xfb4a,\n    \"tavdageshhebrew\", 0xfb4a,\n    \"tavhebrew\", 0x05ea,\n    \"tbar\", 0x0167,\n    \"tbopomofo\", 0x310a,\n    \"tcaron\", 0x0165,\n    \"tccurl\", 0x02a8,\n    \"tcedilla\", 0x0163,\n    \"tcheharabic\", 0x0686,\n    \"tchehfinalarabic\", 0xfb7b,\n    \"tchehinitialarabic\", 0xfb7c,\n    \"tchehmedialarabic\", 0xfb7d,\n    \"tcircle\", 0x24e3,\n    \"tcircumflexbelow\", 0x1e71,\n    \"tcommaaccent\", 0x0163,\n    \"tdieresis\", 0x1e97,\n    \"tdotaccent\", 0x1e6b,\n    \"tdotbelow\", 0x1e6d,\n    \"tecyrillic\", 0x0442,\n    \"tedescendercyrillic\", 0x04ad,\n    \"teharabic\", 0x062a,\n    \"tehfinalarabic\", 0xfe96,\n    \"tehhahinitialarabic\", 0xfca2,\n    \"tehhahisolatedarabic\", 0xfc0c,\n    \"tehinitialarabic\", 0xfe97,\n    \"tehiragana\", 0x3066,\n    \"tehjeeminitialarabic\", 0xfca1,\n    \"tehjeemisolatedarabic\", 0xfc0b,\n    \"tehmarbutaarabic\", 0x0629,\n    \"tehmarbutafinalarabic\", 0xfe94,\n    \"tehmedialarabic\", 0xfe98,\n    \"tehmeeminitialarabic\", 0xfca4,\n    \"tehmeemisolatedarabic\", 0xfc0e,\n    \"tehnoonfinalarabic\", 0xfc73,\n    \"tekatakana\", 0x30c6,\n    \"tekatakanahalfwidth\", 0xff83,\n    \"telephone\", 0x2121,\n    \"telephoneblack\", 0x260e,\n    \"telishagedolahebrew\", 0x05a0,\n    \"telishaqetanahebrew\", 0x05a9,\n    \"tencircle\", 0x2469,\n    \"tenideographicparen\", 0x3229,\n    \"tenparen\", 0x247d,\n    \"tenperiod\", 0x2491,\n    \"tenroman\", 0x2179,\n    \"tesh\", 0x02a7,\n    \"tet\", 0x05d8,\n    \"tetdagesh\", 0xfb38,\n    \"tetdageshhebrew\", 0xfb38,\n    \"tethebrew\", 0x05d8,\n    \"tetsecyrillic\", 0x04b5,\n    \"tevirhebrew\", 0x059b,\n    \"tevirlefthebrew\", 0x059b,\n    \"thabengali\", 0x09a5,\n    \"thadeva\", 0x0925,\n    \"thagujarati\", 0x0aa5,\n    \"thagurmukhi\", 0x0a25,\n    \"thalarabic\", 0x0630,\n    \"thalfinalarabic\", 0xfeac,\n    \"thanthakhatlowleftthai\", 0xf898,\n    \"thanthakhatlowrightthai\", 0xf897,\n    \"thanthakhatthai\", 0x0e4c,\n    \"thanthakhatupperleftthai\", 0xf896,\n    \"theharabic\", 0x062b,\n    \"thehfinalarabic\", 0xfe9a,\n    \"thehinitialarabic\", 0xfe9b,\n    \"thehmedialarabic\", 0xfe9c,\n    \"thereexists\", 0x2203,\n    \"therefore\", 0x2234,\n    \"theta\", 0x03b8,\n    \"theta1\", 0x03d1,\n    \"thetasymbolgreek\", 0x03d1,\n    \"thieuthacirclekorean\", 0x3279,\n    \"thieuthaparenkorean\", 0x3219,\n    \"thieuthcirclekorean\", 0x326b,\n    \"thieuthkorean\", 0x314c,\n    \"thieuthparenkorean\", 0x320b,\n    \"thirteencircle\", 0x246c,\n    \"thirteenparen\", 0x2480,\n    \"thirteenperiod\", 0x2494,\n    \"thonangmonthothai\", 0x0e11,\n    \"thook\", 0x01ad,\n    \"thophuthaothai\", 0x0e12,\n    \"thorn\", 0x00fe,\n    \"thothahanthai\", 0x0e17,\n    \"thothanthai\", 0x0e10,\n    \"thothongthai\", 0x0e18,\n    \"thothungthai\", 0x0e16,\n    \"thousandcyrillic\", 0x0482,\n    \"thousandsseparatorarabic\", 0x066c,\n    \"thousandsseparatorpersian\", 0x066c,\n    \"three\", 0x0033,\n    \"threearabic\", 0x0663,\n    \"threebengali\", 0x09e9,\n    \"threecircle\", 0x2462,\n    \"threecircleinversesansserif\", 0x278c,\n    \"threedeva\", 0x0969,\n    \"threeeighths\", 0x215c,\n    \"threegujarati\", 0x0ae9,\n    \"threegurmukhi\", 0x0a69,\n    \"threehackarabic\", 0x0663,\n    \"threehangzhou\", 0x3023,\n    \"threeideographicparen\", 0x3222,\n    \"threeinferior\", 0x2083,\n    \"threemonospace\", 0xff13,\n    \"threenumeratorbengali\", 0x09f6,\n    \"threeoldstyle\", 0xf733,\n    \"threeparen\", 0x2476,\n    \"threeperiod\", 0x248a,\n    \"threepersian\", 0x06f3,\n    \"threequarters\", 0x00be,\n    \"threequartersemdash\", 0xf6de,\n    \"threeroman\", 0x2172,\n    \"threesuperior\", 0x00b3,\n    \"threethai\", 0x0e53,\n    \"thzsquare\", 0x3394,\n    \"tihiragana\", 0x3061,\n    \"tikatakana\", 0x30c1,\n    \"tikatakanahalfwidth\", 0xff81,\n    \"tikeutacirclekorean\", 0x3270,\n    \"tikeutaparenkorean\", 0x3210,\n    \"tikeutcirclekorean\", 0x3262,\n    \"tikeutkorean\", 0x3137,\n    \"tikeutparenkorean\", 0x3202,\n    \"tilde\", 0x02dc,\n    \"tildebelowcmb\", 0x0330,\n    \"tildecmb\", 0x0303,\n    \"tildecomb\", 0x0303,\n    \"tildedoublecmb\", 0x0360,\n    \"tildeoperator\", 0x223c,\n    \"tildeoverlaycmb\", 0x0334,\n    \"tildeverticalcmb\", 0x033e,\n    \"timescircle\", 0x2297,\n    \"tipehahebrew\", 0x0596,\n    \"tipehalefthebrew\", 0x0596,\n    \"tippigurmukhi\", 0x0a70,\n    \"titlocyrilliccmb\", 0x0483,\n    \"tiwnarmenian\", 0x057f,\n    \"tlinebelow\", 0x1e6f,\n    \"tmonospace\", 0xff54,\n    \"toarmenian\", 0x0569,\n    \"tohiragana\", 0x3068,\n    \"tokatakana\", 0x30c8,\n    \"tokatakanahalfwidth\", 0xff84,\n    \"tonebarextrahighmod\", 0x02e5,\n    \"tonebarextralowmod\", 0x02e9,\n    \"tonebarhighmod\", 0x02e6,\n    \"tonebarlowmod\", 0x02e8,\n    \"tonebarmidmod\", 0x02e7,\n    \"tonefive\", 0x01bd,\n    \"tonesix\", 0x0185,\n    \"tonetwo\", 0x01a8,\n    \"tonos\", 0x0384,\n    \"tonsquare\", 0x3327,\n    \"topatakthai\", 0x0e0f,\n    \"tortoiseshellbracketleft\", 0x3014,\n    \"tortoiseshellbracketleftsmall\", 0xfe5d,\n    \"tortoiseshellbracketleftvertical\", 0xfe39,\n    \"tortoiseshellbracketright\", 0x3015,\n    \"tortoiseshellbracketrightsmall\", 0xfe5e,\n    \"tortoiseshellbracketrightvertical\", 0xfe3a,\n    \"totaothai\", 0x0e15,\n    \"tpalatalhook\", 0x01ab,\n    \"tparen\", 0x24af,\n    \"trademark\", 0x2122,\n    \"trademarksans\", 0xf8ea,\n    \"trademarkserif\", 0xf6db,\n    \"tretroflexhook\", 0x0288,\n    \"triagdn\", 0x25bc,\n    \"triaglf\", 0x25c4,\n    \"triagrt\", 0x25ba,\n    \"triagup\", 0x25b2,\n    \"ts\", 0x02a6,\n    \"tsadi\", 0x05e6,\n    \"tsadidagesh\", 0xfb46,\n    \"tsadidageshhebrew\", 0xfb46,\n    \"tsadihebrew\", 0x05e6,\n    \"tsecyrillic\", 0x0446,\n    \"tsere\", 0x05b5,\n    \"tsere12\", 0x05b5,\n    \"tsere1e\", 0x05b5,\n    \"tsere2b\", 0x05b5,\n    \"tserehebrew\", 0x05b5,\n    \"tserenarrowhebrew\", 0x05b5,\n    \"tserequarterhebrew\", 0x05b5,\n    \"tserewidehebrew\", 0x05b5,\n    \"tshecyrillic\", 0x045b,\n    \"tsuperior\", 0xf6f3,\n    \"ttabengali\", 0x099f,\n    \"ttadeva\", 0x091f,\n    \"ttagujarati\", 0x0a9f,\n    \"ttagurmukhi\", 0x0a1f,\n    \"tteharabic\", 0x0679,\n    \"ttehfinalarabic\", 0xfb67,\n    \"ttehinitialarabic\", 0xfb68,\n    \"ttehmedialarabic\", 0xfb69,\n    \"tthabengali\", 0x09a0,\n    \"tthadeva\", 0x0920,\n    \"tthagujarati\", 0x0aa0,\n    \"tthagurmukhi\", 0x0a20,\n    \"tturned\", 0x0287,\n    \"tuhiragana\", 0x3064,\n    \"tukatakana\", 0x30c4,\n    \"tukatakanahalfwidth\", 0xff82,\n    \"tusmallhiragana\", 0x3063,\n    \"tusmallkatakana\", 0x30c3,\n    \"tusmallkatakanahalfwidth\", 0xff6f,\n    \"twelvecircle\", 0x246b,\n    \"twelveparen\", 0x247f,\n    \"twelveperiod\", 0x2493,\n    \"twelveroman\", 0x217b,\n    \"twentycircle\", 0x2473,\n    \"twentyhangzhou\", 0x5344,\n    \"twentyparen\", 0x2487,\n    \"twentyperiod\", 0x249b,\n    \"two\", 0x0032,\n    \"twoarabic\", 0x0662,\n    \"twobengali\", 0x09e8,\n    \"twocircle\", 0x2461,\n    \"twocircleinversesansserif\", 0x278b,\n    \"twodeva\", 0x0968,\n    \"twodotenleader\", 0x2025,\n    \"twodotleader\", 0x2025,\n    \"twodotleadervertical\", 0xfe30,\n    \"twogujarati\", 0x0ae8,\n    \"twogurmukhi\", 0x0a68,\n    \"twohackarabic\", 0x0662,\n    \"twohangzhou\", 0x3022,\n    \"twoideographicparen\", 0x3221,\n    \"twoinferior\", 0x2082,\n    \"twomonospace\", 0xff12,\n    \"twonumeratorbengali\", 0x09f5,\n    \"twooldstyle\", 0xf732,\n    \"twoparen\", 0x2475,\n    \"twoperiod\", 0x2489,\n    \"twopersian\", 0x06f2,\n    \"tworoman\", 0x2171,\n    \"twostroke\", 0x01bb,\n    \"twosuperior\", 0x00b2,\n    \"twothai\", 0x0e52,\n    \"twothirds\", 0x2154,\n    \"u\", 0x0075,\n    \"uacute\", 0x00fa,\n    \"ubar\", 0x0289,\n    \"ubengali\", 0x0989,\n    \"ubopomofo\", 0x3128,\n    \"ubreve\", 0x016d,\n    \"ucaron\", 0x01d4,\n    \"ucircle\", 0x24e4,\n    \"ucircumflex\", 0x00fb,\n    \"ucircumflexbelow\", 0x1e77,\n    \"ucyrillic\", 0x0443,\n    \"udattadeva\", 0x0951,\n    \"udblacute\", 0x0171,\n    \"udblgrave\", 0x0215,\n    \"udeva\", 0x0909,\n    \"udieresis\", 0x00fc,\n    \"udieresisacute\", 0x01d8,\n    \"udieresisbelow\", 0x1e73,\n    \"udieresiscaron\", 0x01da,\n    \"udieresiscyrillic\", 0x04f1,\n    \"udieresisgrave\", 0x01dc,\n    \"udieresismacron\", 0x01d6,\n    \"udotbelow\", 0x1ee5,\n    \"ugrave\", 0x00f9,\n    \"ugujarati\", 0x0a89,\n    \"ugurmukhi\", 0x0a09,\n    \"uhiragana\", 0x3046,\n    \"uhookabove\", 0x1ee7,\n    \"uhorn\", 0x01b0,\n    \"uhornacute\", 0x1ee9,\n    \"uhorndotbelow\", 0x1ef1,\n    \"uhorngrave\", 0x1eeb,\n    \"uhornhookabove\", 0x1eed,\n    \"uhorntilde\", 0x1eef,\n    \"uhungarumlaut\", 0x0171,\n    \"uhungarumlautcyrillic\", 0x04f3,\n    \"uinvertedbreve\", 0x0217,\n    \"ukatakana\", 0x30a6,\n    \"ukatakanahalfwidth\", 0xff73,\n    \"ukcyrillic\", 0x0479,\n    \"ukorean\", 0x315c,\n    \"umacron\", 0x016b,\n    \"umacroncyrillic\", 0x04ef,\n    \"umacrondieresis\", 0x1e7b,\n    \"umatragurmukhi\", 0x0a41,\n    \"umonospace\", 0xff55,\n    \"underscore\", 0x005f,\n    \"underscoredbl\", 0x2017,\n    \"underscoremonospace\", 0xff3f,\n    \"underscorevertical\", 0xfe33,\n    \"underscorewavy\", 0xfe4f,\n    \"union\", 0x222a,\n    \"universal\", 0x2200,\n    \"uogonek\", 0x0173,\n    \"uparen\", 0x24b0,\n    \"upblock\", 0x2580,\n    \"upperdothebrew\", 0x05c4,\n    \"upsilon\", 0x03c5,\n    \"upsilondieresis\", 0x03cb,\n    \"upsilondieresistonos\", 0x03b0,\n    \"upsilonlatin\", 0x028a,\n    \"upsilontonos\", 0x03cd,\n    \"uptackbelowcmb\", 0x031d,\n    \"uptackmod\", 0x02d4,\n    \"uragurmukhi\", 0x0a73,\n    \"uring\", 0x016f,\n    \"ushortcyrillic\", 0x045e,\n    \"usmallhiragana\", 0x3045,\n    \"usmallkatakana\", 0x30a5,\n    \"usmallkatakanahalfwidth\", 0xff69,\n    \"ustraightcyrillic\", 0x04af,\n    \"ustraightstrokecyrillic\", 0x04b1,\n    \"utilde\", 0x0169,\n    \"utildeacute\", 0x1e79,\n    \"utildebelow\", 0x1e75,\n    \"uubengali\", 0x098a,\n    \"uudeva\", 0x090a,\n    \"uugujarati\", 0x0a8a,\n    \"uugurmukhi\", 0x0a0a,\n    \"uumatragurmukhi\", 0x0a42,\n    \"uuvowelsignbengali\", 0x09c2,\n    \"uuvowelsigndeva\", 0x0942,\n    \"uuvowelsigngujarati\", 0x0ac2,\n    \"uvowelsignbengali\", 0x09c1,\n    \"uvowelsigndeva\", 0x0941,\n    \"uvowelsigngujarati\", 0x0ac1,\n    \"v\", 0x0076,\n    \"vadeva\", 0x0935,\n    \"vagujarati\", 0x0ab5,\n    \"vagurmukhi\", 0x0a35,\n    \"vakatakana\", 0x30f7,\n    \"vav\", 0x05d5,\n    \"vavdagesh\", 0xfb35,\n    \"vavdagesh65\", 0xfb35,\n    \"vavdageshhebrew\", 0xfb35,\n    \"vavhebrew\", 0x05d5,\n    \"vavholam\", 0xfb4b,\n    \"vavholamhebrew\", 0xfb4b,\n    \"vavvavhebrew\", 0x05f0,\n    \"vavyodhebrew\", 0x05f1,\n    \"vcircle\", 0x24e5,\n    \"vdotbelow\", 0x1e7f,\n    \"vecyrillic\", 0x0432,\n    \"veharabic\", 0x06a4,\n    \"vehfinalarabic\", 0xfb6b,\n    \"vehinitialarabic\", 0xfb6c,\n    \"vehmedialarabic\", 0xfb6d,\n    \"vekatakana\", 0x30f9,\n    \"venus\", 0x2640,\n    \"verticalbar\", 0x007c,\n    \"verticallineabovecmb\", 0x030d,\n    \"verticallinebelowcmb\", 0x0329,\n    \"verticallinelowmod\", 0x02cc,\n    \"verticallinemod\", 0x02c8,\n    \"vewarmenian\", 0x057e,\n    \"vhook\", 0x028b,\n    \"vikatakana\", 0x30f8,\n    \"viramabengali\", 0x09cd,\n    \"viramadeva\", 0x094d,\n    \"viramagujarati\", 0x0acd,\n    \"visargabengali\", 0x0983,\n    \"visargadeva\", 0x0903,\n    \"visargagujarati\", 0x0a83,\n    \"vmonospace\", 0xff56,\n    \"voarmenian\", 0x0578,\n    \"voicediterationhiragana\", 0x309e,\n    \"voicediterationkatakana\", 0x30fe,\n    \"voicedmarkkana\", 0x309b,\n    \"voicedmarkkanahalfwidth\", 0xff9e,\n    \"vokatakana\", 0x30fa,\n    \"vparen\", 0x24b1,\n    \"vtilde\", 0x1e7d,\n    \"vturned\", 0x028c,\n    \"vuhiragana\", 0x3094,\n    \"vukatakana\", 0x30f4,\n    \"w\", 0x0077,\n    \"wacute\", 0x1e83,\n    \"waekorean\", 0x3159,\n    \"wahiragana\", 0x308f,\n    \"wakatakana\", 0x30ef,\n    \"wakatakanahalfwidth\", 0xff9c,\n    \"wakorean\", 0x3158,\n    \"wasmallhiragana\", 0x308e,\n    \"wasmallkatakana\", 0x30ee,\n    \"wattosquare\", 0x3357,\n    \"wavedash\", 0x301c,\n    \"wavyunderscorevertical\", 0xfe34,\n    \"wawarabic\", 0x0648,\n    \"wawfinalarabic\", 0xfeee,\n    \"wawhamzaabovearabic\", 0x0624,\n    \"wawhamzaabovefinalarabic\", 0xfe86,\n    \"wbsquare\", 0x33dd,\n    \"wcircle\", 0x24e6,\n    \"wcircumflex\", 0x0175,\n    \"wdieresis\", 0x1e85,\n    \"wdotaccent\", 0x1e87,\n    \"wdotbelow\", 0x1e89,\n    \"wehiragana\", 0x3091,\n    \"weierstrass\", 0x2118,\n    \"wekatakana\", 0x30f1,\n    \"wekorean\", 0x315e,\n    \"weokorean\", 0x315d,\n    \"wgrave\", 0x1e81,\n    \"whitebullet\", 0x25e6,\n    \"whitecircle\", 0x25cb,\n    \"whitecircleinverse\", 0x25d9,\n    \"whitecornerbracketleft\", 0x300e,\n    \"whitecornerbracketleftvertical\", 0xfe43,\n    \"whitecornerbracketright\", 0x300f,\n    \"whitecornerbracketrightvertical\", 0xfe44,\n    \"whitediamond\", 0x25c7,\n    \"whitediamondcontainingblacksmalldiamond\", 0x25c8,\n    \"whitedownpointingsmalltriangle\", 0x25bf,\n    \"whitedownpointingtriangle\", 0x25bd,\n    \"whiteleftpointingsmalltriangle\", 0x25c3,\n    \"whiteleftpointingtriangle\", 0x25c1,\n    \"whitelenticularbracketleft\", 0x3016,\n    \"whitelenticularbracketright\", 0x3017,\n    \"whiterightpointingsmalltriangle\", 0x25b9,\n    \"whiterightpointingtriangle\", 0x25b7,\n    \"whitesmallsquare\", 0x25ab,\n    \"whitesmilingface\", 0x263a,\n    \"whitesquare\", 0x25a1,\n    \"whitestar\", 0x2606,\n    \"whitetelephone\", 0x260f,\n    \"whitetortoiseshellbracketleft\", 0x3018,\n    \"whitetortoiseshellbracketright\", 0x3019,\n    \"whiteuppointingsmalltriangle\", 0x25b5,\n    \"whiteuppointingtriangle\", 0x25b3,\n    \"wihiragana\", 0x3090,\n    \"wikatakana\", 0x30f0,\n    \"wikorean\", 0x315f,\n    \"wmonospace\", 0xff57,\n    \"wohiragana\", 0x3092,\n    \"wokatakana\", 0x30f2,\n    \"wokatakanahalfwidth\", 0xff66,\n    \"won\", 0x20a9,\n    \"wonmonospace\", 0xffe6,\n    \"wowaenthai\", 0x0e27,\n    \"wparen\", 0x24b2,\n    \"wring\", 0x1e98,\n    \"wsuperior\", 0x02b7,\n    \"wturned\", 0x028d,\n    \"wynn\", 0x01bf,\n    \"x\", 0x0078,\n    \"xabovecmb\", 0x033d,\n    \"xbopomofo\", 0x3112,\n    \"xcircle\", 0x24e7,\n    \"xdieresis\", 0x1e8d,\n    \"xdotaccent\", 0x1e8b,\n    \"xeharmenian\", 0x056d,\n    \"xi\", 0x03be,\n    \"xmonospace\", 0xff58,\n    \"xparen\", 0x24b3,\n    \"xsuperior\", 0x02e3,\n    \"y\", 0x0079,\n    \"yaadosquare\", 0x334e,\n    \"yabengali\", 0x09af,\n    \"yacute\", 0x00fd,\n    \"yadeva\", 0x092f,\n    \"yaekorean\", 0x3152,\n    \"yagujarati\", 0x0aaf,\n    \"yagurmukhi\", 0x0a2f,\n    \"yahiragana\", 0x3084,\n    \"yakatakana\", 0x30e4,\n    \"yakatakanahalfwidth\", 0xff94,\n    \"yakorean\", 0x3151,\n    \"yamakkanthai\", 0x0e4e,\n    \"yasmallhiragana\", 0x3083,\n    \"yasmallkatakana\", 0x30e3,\n    \"yasmallkatakanahalfwidth\", 0xff6c,\n    \"yatcyrillic\", 0x0463,\n    \"ycircle\", 0x24e8,\n    \"ycircumflex\", 0x0177,\n    \"ydieresis\", 0x00ff,\n    \"ydotaccent\", 0x1e8f,\n    \"ydotbelow\", 0x1ef5,\n    \"yeharabic\", 0x064a,\n    \"yehbarreearabic\", 0x06d2,\n    \"yehbarreefinalarabic\", 0xfbaf,\n    \"yehfinalarabic\", 0xfef2,\n    \"yehhamzaabovearabic\", 0x0626,\n    \"yehhamzaabovefinalarabic\", 0xfe8a,\n    \"yehhamzaaboveinitialarabic\", 0xfe8b,\n    \"yehhamzaabovemedialarabic\", 0xfe8c,\n    \"yehinitialarabic\", 0xfef3,\n    \"yehmedialarabic\", 0xfef4,\n    \"yehmeeminitialarabic\", 0xfcdd,\n    \"yehmeemisolatedarabic\", 0xfc58,\n    \"yehnoonfinalarabic\", 0xfc94,\n    \"yehthreedotsbelowarabic\", 0x06d1,\n    \"yekorean\", 0x3156,\n    \"yen\", 0x00a5,\n    \"yenmonospace\", 0xffe5,\n    \"yeokorean\", 0x3155,\n    \"yeorinhieuhkorean\", 0x3186,\n    \"yerahbenyomohebrew\", 0x05aa,\n    \"yerahbenyomolefthebrew\", 0x05aa,\n    \"yericyrillic\", 0x044b,\n    \"yerudieresiscyrillic\", 0x04f9,\n    \"yesieungkorean\", 0x3181,\n    \"yesieungpansioskorean\", 0x3183,\n    \"yesieungsioskorean\", 0x3182,\n    \"yetivhebrew\", 0x059a,\n    \"ygrave\", 0x1ef3,\n    \"yhook\", 0x01b4,\n    \"yhookabove\", 0x1ef7,\n    \"yiarmenian\", 0x0575,\n    \"yicyrillic\", 0x0457,\n    \"yikorean\", 0x3162,\n    \"yinyang\", 0x262f,\n    \"yiwnarmenian\", 0x0582,\n    \"ymonospace\", 0xff59,\n    \"yod\", 0x05d9,\n    \"yoddagesh\", 0xfb39,\n    \"yoddageshhebrew\", 0xfb39,\n    \"yodhebrew\", 0x05d9,\n    \"yodyodhebrew\", 0x05f2,\n    \"yodyodpatahhebrew\", 0xfb1f,\n    \"yohiragana\", 0x3088,\n    \"yoikorean\", 0x3189,\n    \"yokatakana\", 0x30e8,\n    \"yokatakanahalfwidth\", 0xff96,\n    \"yokorean\", 0x315b,\n    \"yosmallhiragana\", 0x3087,\n    \"yosmallkatakana\", 0x30e7,\n    \"yosmallkatakanahalfwidth\", 0xff6e,\n    \"yotgreek\", 0x03f3,\n    \"yoyaekorean\", 0x3188,\n    \"yoyakorean\", 0x3187,\n    \"yoyakthai\", 0x0e22,\n    \"yoyingthai\", 0x0e0d,\n    \"yparen\", 0x24b4,\n    \"ypogegrammeni\", 0x037a,\n    \"ypogegrammenigreekcmb\", 0x0345,\n    \"yr\", 0x01a6,\n    \"yring\", 0x1e99,\n    \"ysuperior\", 0x02b8,\n    \"ytilde\", 0x1ef9,\n    \"yturned\", 0x028e,\n    \"yuhiragana\", 0x3086,\n    \"yuikorean\", 0x318c,\n    \"yukatakana\", 0x30e6,\n    \"yukatakanahalfwidth\", 0xff95,\n    \"yukorean\", 0x3160,\n    \"yusbigcyrillic\", 0x046b,\n    \"yusbigiotifiedcyrillic\", 0x046d,\n    \"yuslittlecyrillic\", 0x0467,\n    \"yuslittleiotifiedcyrillic\", 0x0469,\n    \"yusmallhiragana\", 0x3085,\n    \"yusmallkatakana\", 0x30e5,\n    \"yusmallkatakanahalfwidth\", 0xff6d,\n    \"yuyekorean\", 0x318b,\n    \"yuyeokorean\", 0x318a,\n    \"yyabengali\", 0x09df,\n    \"yyadeva\", 0x095f,\n    \"z\", 0x007a,\n    \"zaarmenian\", 0x0566,\n    \"zacute\", 0x017a,\n    \"zadeva\", 0x095b,\n    \"zagurmukhi\", 0x0a5b,\n    \"zaharabic\", 0x0638,\n    \"zahfinalarabic\", 0xfec6,\n    \"zahinitialarabic\", 0xfec7,\n    \"zahiragana\", 0x3056,\n    \"zahmedialarabic\", 0xfec8,\n    \"zainarabic\", 0x0632,\n    \"zainfinalarabic\", 0xfeb0,\n    \"zakatakana\", 0x30b6,\n    \"zaqefgadolhebrew\", 0x0595,\n    \"zaqefqatanhebrew\", 0x0594,\n    \"zarqahebrew\", 0x0598,\n    \"zayin\", 0x05d6,\n    \"zayindagesh\", 0xfb36,\n    \"zayindageshhebrew\", 0xfb36,\n    \"zayinhebrew\", 0x05d6,\n    \"zbopomofo\", 0x3117,\n    \"zcaron\", 0x017e,\n    \"zcircle\", 0x24e9,\n    \"zcircumflex\", 0x1e91,\n    \"zcurl\", 0x0291,\n    \"zdot\", 0x017c,\n    \"zdotaccent\", 0x017c,\n    \"zdotbelow\", 0x1e93,\n    \"zecyrillic\", 0x0437,\n    \"zedescendercyrillic\", 0x0499,\n    \"zedieresiscyrillic\", 0x04df,\n    \"zehiragana\", 0x305c,\n    \"zekatakana\", 0x30bc,\n    \"zero\", 0x0030,\n    \"zeroarabic\", 0x0660,\n    \"zerobengali\", 0x09e6,\n    \"zerodeva\", 0x0966,\n    \"zerogujarati\", 0x0ae6,\n    \"zerogurmukhi\", 0x0a66,\n    \"zerohackarabic\", 0x0660,\n    \"zeroinferior\", 0x2080,\n    \"zeromonospace\", 0xff10,\n    \"zerooldstyle\", 0xf730,\n    \"zeropersian\", 0x06f0,\n    \"zerosuperior\", 0x2070,\n    \"zerothai\", 0x0e50,\n    \"zerowidthjoiner\", 0xfeff,\n    \"zerowidthnonjoiner\", 0x200c,\n    \"zerowidthspace\", 0x200b,\n    \"zeta\", 0x03b6,\n    \"zhbopomofo\", 0x3113,\n    \"zhearmenian\", 0x056a,\n    \"zhebrevecyrillic\", 0x04c2,\n    \"zhecyrillic\", 0x0436,\n    \"zhedescendercyrillic\", 0x0497,\n    \"zhedieresiscyrillic\", 0x04dd,\n    \"zihiragana\", 0x3058,\n    \"zikatakana\", 0x30b8,\n    \"zinorhebrew\", 0x05ae,\n    \"zlinebelow\", 0x1e95,\n    \"zmonospace\", 0xff5a,\n    \"zohiragana\", 0x305e,\n    \"zokatakana\", 0x30be,\n    \"zparen\", 0x24b5,\n    \"zretroflexhook\", 0x0290,\n    \"zstroke\", 0x01b6,\n    \"zuhiragana\", 0x305a,\n    \"zukatakana\", 0x30ba,\n    \".notdef\", 0x0000,\n\n    // TeX-specific glyph names.\n    \"angbracketleftbig\", 0x2329,\n    \"angbracketleftBig\", 0x2329,\n    \"angbracketleftbigg\", 0x2329,\n    \"angbracketleftBigg\", 0x2329,\n    \"angbracketrightBig\", 0x232a,\n    \"angbracketrightbig\", 0x232a,\n    \"angbracketrightBigg\", 0x232a,\n    \"angbracketrightbigg\", 0x232a,\n    \"arrowhookleft\", 0x21aa,\n    \"arrowhookright\", 0x21a9,\n    \"arrowlefttophalf\", 0x21bc,\n    \"arrowleftbothalf\", 0x21bd,\n    \"arrownortheast\", 0x2197,\n    \"arrownorthwest\", 0x2196,\n    \"arrowrighttophalf\", 0x21c0,\n    \"arrowrightbothalf\", 0x21c1,\n    \"arrowsoutheast\", 0x2198,\n    \"arrowsouthwest\", 0x2199,\n    \"backslashbig\", 0x2216,\n    \"backslashBig\", 0x2216,\n    \"backslashBigg\", 0x2216,\n    \"backslashbigg\", 0x2216,\n    \"bardbl\", 0x2016,\n    \"bracehtipdownleft\", 0xfe37,\n    \"bracehtipdownright\", 0xfe37,\n    \"bracehtipupleft\", 0xfe38,\n    \"bracehtipupright\", 0xfe38,\n    \"braceleftBig\", 0x007b,\n    \"braceleftbig\", 0x007b,\n    \"braceleftbigg\", 0x007b,\n    \"braceleftBigg\", 0x007b,\n    \"bracerightBig\", 0x007d,\n    \"bracerightbig\", 0x007d,\n    \"bracerightbigg\", 0x007d,\n    \"bracerightBigg\", 0x007d,\n    \"bracketleftbig\", 0x005b,\n    \"bracketleftBig\", 0x005b,\n    \"bracketleftbigg\", 0x005b,\n    \"bracketleftBigg\", 0x005b,\n    \"bracketrightBig\", 0x005d,\n    \"bracketrightbig\", 0x005d,\n    \"bracketrightbigg\", 0x005d,\n    \"bracketrightBigg\", 0x005d,\n    \"ceilingleftbig\", 0x2308,\n    \"ceilingleftBig\", 0x2308,\n    \"ceilingleftBigg\", 0x2308,\n    \"ceilingleftbigg\", 0x2308,\n    \"ceilingrightbig\", 0x2309,\n    \"ceilingrightBig\", 0x2309,\n    \"ceilingrightbigg\", 0x2309,\n    \"ceilingrightBigg\", 0x2309,\n    \"circledotdisplay\", 0x2299,\n    \"circledottext\", 0x2299,\n    \"circlemultiplydisplay\", 0x2297,\n    \"circlemultiplytext\", 0x2297,\n    \"circleplusdisplay\", 0x2295,\n    \"circleplustext\", 0x2295,\n    \"contintegraldisplay\", 0x222e,\n    \"contintegraltext\", 0x222e,\n    \"coproductdisplay\", 0x2210,\n    \"coproducttext\", 0x2210,\n    \"floorleftBig\", 0x230a,\n    \"floorleftbig\", 0x230a,\n    \"floorleftbigg\", 0x230a,\n    \"floorleftBigg\", 0x230a,\n    \"floorrightbig\", 0x230b,\n    \"floorrightBig\", 0x230b,\n    \"floorrightBigg\", 0x230b,\n    \"floorrightbigg\", 0x230b,\n    \"hatwide\", 0x0302,\n    \"hatwider\", 0x0302,\n    \"hatwidest\", 0x0302,\n    \"intercal\", 0x1d40,\n    \"integraldisplay\", 0x222b,\n    \"integraltext\", 0x222b,\n    \"intersectiondisplay\", 0x22c2,\n    \"intersectiontext\", 0x22c2,\n    \"logicalanddisplay\", 0x2227,\n    \"logicalandtext\", 0x2227,\n    \"logicalordisplay\", 0x2228,\n    \"logicalortext\", 0x2228,\n    \"parenleftBig\", 0x0028,\n    \"parenleftbig\", 0x0028,\n    \"parenleftBigg\", 0x0028,\n    \"parenleftbigg\", 0x0028,\n    \"parenrightBig\", 0x0029,\n    \"parenrightbig\", 0x0029,\n    \"parenrightBigg\", 0x0029,\n    \"parenrightbigg\", 0x0029,\n    \"prime\", 0x2032,\n    \"productdisplay\", 0x220f,\n    \"producttext\", 0x220f,\n    \"radicalbig\", 0x221a,\n    \"radicalBig\", 0x221a,\n    \"radicalBigg\", 0x221a,\n    \"radicalbigg\", 0x221a,\n    \"radicalbt\", 0x221a,\n    \"radicaltp\", 0x221a,\n    \"radicalvertex\", 0x221a,\n    \"slashbig\", 0x002f,\n    \"slashBig\", 0x002f,\n    \"slashBigg\", 0x002f,\n    \"slashbigg\", 0x002f,\n    \"summationdisplay\", 0x2211,\n    \"summationtext\", 0x2211,\n    \"tildewide\", 0x02dc,\n    \"tildewider\", 0x02dc,\n    \"tildewidest\", 0x02dc,\n    \"uniondisplay\", 0x22c3,\n    \"unionmultidisplay\", 0x228e,\n    \"unionmultitext\", 0x228e,\n    \"unionsqdisplay\", 0x2294,\n    \"unionsqtext\", 0x2294,\n    \"uniontext\", 0x22c3,\n    \"vextenddouble\", 0x2225,\n    \"vextendsingle\", 0x2223,\n  ];\n});\n\nconst getDingbatsGlyphsUnicode = getArrayLookupTableFactory(function () {\n  // prettier-ignore\n  return [\n    \"space\", 0x0020,\n    \"a1\", 0x2701,\n    \"a2\", 0x2702,\n    \"a202\", 0x2703,\n    \"a3\", 0x2704,\n    \"a4\", 0x260e,\n    \"a5\", 0x2706,\n    \"a119\", 0x2707,\n    \"a118\", 0x2708,\n    \"a117\", 0x2709,\n    \"a11\", 0x261b,\n    \"a12\", 0x261e,\n    \"a13\", 0x270c,\n    \"a14\", 0x270d,\n    \"a15\", 0x270e,\n    \"a16\", 0x270f,\n    \"a105\", 0x2710,\n    \"a17\", 0x2711,\n    \"a18\", 0x2712,\n    \"a19\", 0x2713,\n    \"a20\", 0x2714,\n    \"a21\", 0x2715,\n    \"a22\", 0x2716,\n    \"a23\", 0x2717,\n    \"a24\", 0x2718,\n    \"a25\", 0x2719,\n    \"a26\", 0x271a,\n    \"a27\", 0x271b,\n    \"a28\", 0x271c,\n    \"a6\", 0x271d,\n    \"a7\", 0x271e,\n    \"a8\", 0x271f,\n    \"a9\", 0x2720,\n    \"a10\", 0x2721,\n    \"a29\", 0x2722,\n    \"a30\", 0x2723,\n    \"a31\", 0x2724,\n    \"a32\", 0x2725,\n    \"a33\", 0x2726,\n    \"a34\", 0x2727,\n    \"a35\", 0x2605,\n    \"a36\", 0x2729,\n    \"a37\", 0x272a,\n    \"a38\", 0x272b,\n    \"a39\", 0x272c,\n    \"a40\", 0x272d,\n    \"a41\", 0x272e,\n    \"a42\", 0x272f,\n    \"a43\", 0x2730,\n    \"a44\", 0x2731,\n    \"a45\", 0x2732,\n    \"a46\", 0x2733,\n    \"a47\", 0x2734,\n    \"a48\", 0x2735,\n    \"a49\", 0x2736,\n    \"a50\", 0x2737,\n    \"a51\", 0x2738,\n    \"a52\", 0x2739,\n    \"a53\", 0x273a,\n    \"a54\", 0x273b,\n    \"a55\", 0x273c,\n    \"a56\", 0x273d,\n    \"a57\", 0x273e,\n    \"a58\", 0x273f,\n    \"a59\", 0x2740,\n    \"a60\", 0x2741,\n    \"a61\", 0x2742,\n    \"a62\", 0x2743,\n    \"a63\", 0x2744,\n    \"a64\", 0x2745,\n    \"a65\", 0x2746,\n    \"a66\", 0x2747,\n    \"a67\", 0x2748,\n    \"a68\", 0x2749,\n    \"a69\", 0x274a,\n    \"a70\", 0x274b,\n    \"a71\", 0x25cf,\n    \"a72\", 0x274d,\n    \"a73\", 0x25a0,\n    \"a74\", 0x274f,\n    \"a203\", 0x2750,\n    \"a75\", 0x2751,\n    \"a204\", 0x2752,\n    \"a76\", 0x25b2,\n    \"a77\", 0x25bc,\n    \"a78\", 0x25c6,\n    \"a79\", 0x2756,\n    \"a81\", 0x25d7,\n    \"a82\", 0x2758,\n    \"a83\", 0x2759,\n    \"a84\", 0x275a,\n    \"a97\", 0x275b,\n    \"a98\", 0x275c,\n    \"a99\", 0x275d,\n    \"a100\", 0x275e,\n    \"a101\", 0x2761,\n    \"a102\", 0x2762,\n    \"a103\", 0x2763,\n    \"a104\", 0x2764,\n    \"a106\", 0x2765,\n    \"a107\", 0x2766,\n    \"a108\", 0x2767,\n    \"a112\", 0x2663,\n    \"a111\", 0x2666,\n    \"a110\", 0x2665,\n    \"a109\", 0x2660,\n    \"a120\", 0x2460,\n    \"a121\", 0x2461,\n    \"a122\", 0x2462,\n    \"a123\", 0x2463,\n    \"a124\", 0x2464,\n    \"a125\", 0x2465,\n    \"a126\", 0x2466,\n    \"a127\", 0x2467,\n    \"a128\", 0x2468,\n    \"a129\", 0x2469,\n    \"a130\", 0x2776,\n    \"a131\", 0x2777,\n    \"a132\", 0x2778,\n    \"a133\", 0x2779,\n    \"a134\", 0x277a,\n    \"a135\", 0x277b,\n    \"a136\", 0x277c,\n    \"a137\", 0x277d,\n    \"a138\", 0x277e,\n    \"a139\", 0x277f,\n    \"a140\", 0x2780,\n    \"a141\", 0x2781,\n    \"a142\", 0x2782,\n    \"a143\", 0x2783,\n    \"a144\", 0x2784,\n    \"a145\", 0x2785,\n    \"a146\", 0x2786,\n    \"a147\", 0x2787,\n    \"a148\", 0x2788,\n    \"a149\", 0x2789,\n    \"a150\", 0x278a,\n    \"a151\", 0x278b,\n    \"a152\", 0x278c,\n    \"a153\", 0x278d,\n    \"a154\", 0x278e,\n    \"a155\", 0x278f,\n    \"a156\", 0x2790,\n    \"a157\", 0x2791,\n    \"a158\", 0x2792,\n    \"a159\", 0x2793,\n    \"a160\", 0x2794,\n    \"a161\", 0x2192,\n    \"a163\", 0x2194,\n    \"a164\", 0x2195,\n    \"a196\", 0x2798,\n    \"a165\", 0x2799,\n    \"a192\", 0x279a,\n    \"a166\", 0x279b,\n    \"a167\", 0x279c,\n    \"a168\", 0x279d,\n    \"a169\", 0x279e,\n    \"a170\", 0x279f,\n    \"a171\", 0x27a0,\n    \"a172\", 0x27a1,\n    \"a173\", 0x27a2,\n    \"a162\", 0x27a3,\n    \"a174\", 0x27a4,\n    \"a175\", 0x27a5,\n    \"a176\", 0x27a6,\n    \"a177\", 0x27a7,\n    \"a178\", 0x27a8,\n    \"a179\", 0x27a9,\n    \"a193\", 0x27aa,\n    \"a180\", 0x27ab,\n    \"a199\", 0x27ac,\n    \"a181\", 0x27ad,\n    \"a200\", 0x27ae,\n    \"a182\", 0x27af,\n    \"a201\", 0x27b1,\n    \"a183\", 0x27b2,\n    \"a184\", 0x27b3,\n    \"a197\", 0x27b4,\n    \"a185\", 0x27b5,\n    \"a194\", 0x27b6,\n    \"a198\", 0x27b7,\n    \"a186\", 0x27b8,\n    \"a195\", 0x27b9,\n    \"a187\", 0x27ba,\n    \"a188\", 0x27bb,\n    \"a189\", 0x27bc,\n    \"a190\", 0x27bd,\n    \"a191\", 0x27be,\n    \"a89\", 0x2768, // 0xF8D7\n    \"a90\", 0x2769, // 0xF8D8\n    \"a93\", 0x276a, // 0xF8D9\n    \"a94\", 0x276b, // 0xF8DA\n    \"a91\", 0x276c, // 0xF8DB\n    \"a92\", 0x276d, // 0xF8DC\n    \"a205\", 0x276e, // 0xF8DD\n    \"a85\", 0x276f, // 0xF8DE\n    \"a206\", 0x2770, // 0xF8DF\n    \"a86\", 0x2771, // 0xF8E0\n    \"a87\", 0x2772, // 0xF8E1\n    \"a88\", 0x2773, // 0xF8E2\n    \"a95\", 0x2774, // 0xF8E3\n    \"a96\", 0x2775, // 0xF8E4\n    \".notdef\", 0x0000,\n  ];\n});\n\nexport { getDingbatsGlyphsUnicode, getGlyphsUnicode };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport {\n  getArrayLookupTableFactory,\n  getLookupTableFactory,\n} from \"./core_utils.js\";\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\n  t[63721] = 0x00a9; // copyrightsans (0xF8E9) => copyright\n  t[63193] = 0x00a9; // copyrightserif (0xF6D9) => copyright\n  t[63720] = 0x00ae; // registersans (0xF8E8) => registered\n  t[63194] = 0x00ae; // registerserif (0xF6DA) => registered\n  t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n  t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n  t[63729] = 0x23a7; // bracelefttp (0xF8F1)\n  t[63730] = 0x23a8; // braceleftmid (0xF8F2)\n  t[63731] = 0x23a9; // braceleftbt (0xF8F3)\n  t[63740] = 0x23ab; // bracerighttp (0xF8FC)\n  t[63741] = 0x23ac; // bracerightmid (0xF8FD)\n  t[63742] = 0x23ad; // bracerightbt (0xF8FE)\n  t[63726] = 0x23a1; // bracketlefttp (0xF8EE)\n  t[63727] = 0x23a2; // bracketleftex (0xF8EF)\n  t[63728] = 0x23a3; // bracketleftbt (0xF8F0)\n  t[63737] = 0x23a4; // bracketrighttp (0xF8F9)\n  t[63738] = 0x23a5; // bracketrightex (0xF8FA)\n  t[63739] = 0x23a6; // bracketrightbt (0xF8FB)\n  t[63723] = 0x239b; // parenlefttp (0xF8EB)\n  t[63724] = 0x239c; // parenleftex (0xF8EC)\n  t[63725] = 0x239d; // parenleftbt (0xF8ED)\n  t[63734] = 0x239e; // parenrighttp (0xF8F6)\n  t[63735] = 0x239f; // parenrightex (0xF8F7)\n  t[63736] = 0x23a0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n  if (code >= 0xfff0 && code <= 0xffff) {\n    // Specials unicode block.\n    return 0;\n  } else if (code >= 0xf600 && code <= 0xf8ff) {\n    return getSpecialPUASymbols()[code] || code;\n  } else if (code === /* softhyphen = */ 0x00ad) {\n    return 0x002d; // hyphen\n  }\n  return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n  let unicode = glyphsUnicodeMap[name];\n  if (unicode !== undefined) {\n    return unicode;\n  }\n  if (!name) {\n    return -1;\n  }\n  // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n  if (name[0] === \"u\") {\n    const nameLen = name.length;\n    let hexStr;\n\n    if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n      // 'uniXXXX'\n      hexStr = name.substring(3);\n    } else if (nameLen >= 5 && nameLen <= 7) {\n      // 'uXXXX{XX}'\n      hexStr = name.substring(1);\n    } else {\n      return -1;\n    }\n    // Check for upper-case hexadecimal characters, to avoid false positives.\n    if (hexStr === hexStr.toUpperCase()) {\n      unicode = parseInt(hexStr, 16);\n      if (unicode >= 0) {\n        return unicode;\n      }\n    }\n  }\n  return -1;\n}\n\nconst UnicodeRanges = [\n  { begin: 0x0000, end: 0x007f }, // Basic Latin\n  { begin: 0x0080, end: 0x00ff }, // Latin-1 Supplement\n  { begin: 0x0100, end: 0x017f }, // Latin Extended-A\n  { begin: 0x0180, end: 0x024f }, // Latin Extended-B\n  { begin: 0x0250, end: 0x02af }, // IPA Extensions\n  { begin: 0x02b0, end: 0x02ff }, // Spacing Modifier Letters\n  { begin: 0x0300, end: 0x036f }, // Combining Diacritical Marks\n  { begin: 0x0370, end: 0x03ff }, // Greek and Coptic\n  { begin: 0x2c80, end: 0x2cff }, // Coptic\n  { begin: 0x0400, end: 0x04ff }, // Cyrillic\n  { begin: 0x0530, end: 0x058f }, // Armenian\n  { begin: 0x0590, end: 0x05ff }, // Hebrew\n  { begin: 0xa500, end: 0xa63f }, // Vai\n  { begin: 0x0600, end: 0x06ff }, // Arabic\n  { begin: 0x07c0, end: 0x07ff }, // NKo\n  { begin: 0x0900, end: 0x097f }, // Devanagari\n  { begin: 0x0980, end: 0x09ff }, // Bengali\n  { begin: 0x0a00, end: 0x0a7f }, // Gurmukhi\n  { begin: 0x0a80, end: 0x0aff }, // Gujarati\n  { begin: 0x0b00, end: 0x0b7f }, // Oriya\n  { begin: 0x0b80, end: 0x0bff }, // Tamil\n  { begin: 0x0c00, end: 0x0c7f }, // Telugu\n  { begin: 0x0c80, end: 0x0cff }, // Kannada\n  { begin: 0x0d00, end: 0x0d7f }, // Malayalam\n  { begin: 0x0e00, end: 0x0e7f }, // Thai\n  { begin: 0x0e80, end: 0x0eff }, // Lao\n  { begin: 0x10a0, end: 0x10ff }, // Georgian\n  { begin: 0x1b00, end: 0x1b7f }, // Balinese\n  { begin: 0x1100, end: 0x11ff }, // Hangul Jamo\n  { begin: 0x1e00, end: 0x1eff }, // Latin Extended Additional\n  { begin: 0x1f00, end: 0x1fff }, // Greek Extended\n  { begin: 0x2000, end: 0x206f }, // General Punctuation\n  { begin: 0x2070, end: 0x209f }, // Superscripts And Subscripts\n  { begin: 0x20a0, end: 0x20cf }, // Currency Symbol\n  { begin: 0x20d0, end: 0x20ff }, // Combining Diacritical Marks\n  { begin: 0x2100, end: 0x214f }, // Letterlike Symbols\n  { begin: 0x2150, end: 0x218f }, // Number Forms\n  { begin: 0x2190, end: 0x21ff }, // Arrows\n  { begin: 0x2200, end: 0x22ff }, // Mathematical Operators\n  { begin: 0x2300, end: 0x23ff }, // Miscellaneous Technical\n  { begin: 0x2400, end: 0x243f }, // Control Pictures\n  { begin: 0x2440, end: 0x245f }, // Optical Character Recognition\n  { begin: 0x2460, end: 0x24ff }, // Enclosed Alphanumerics\n  { begin: 0x2500, end: 0x257f }, // Box Drawing\n  { begin: 0x2580, end: 0x259f }, // Block Elements\n  { begin: 0x25a0, end: 0x25ff }, // Geometric Shapes\n  { begin: 0x2600, end: 0x26ff }, // Miscellaneous Symbols\n  { begin: 0x2700, end: 0x27bf }, // Dingbats\n  { begin: 0x3000, end: 0x303f }, // CJK Symbols And Punctuation\n  { begin: 0x3040, end: 0x309f }, // Hiragana\n  { begin: 0x30a0, end: 0x30ff }, // Katakana\n  { begin: 0x3100, end: 0x312f }, // Bopomofo\n  { begin: 0x3130, end: 0x318f }, // Hangul Compatibility Jamo\n  { begin: 0xa840, end: 0xa87f }, // Phags-pa\n  { begin: 0x3200, end: 0x32ff }, // Enclosed CJK Letters And Months\n  { begin: 0x3300, end: 0x33ff }, // CJK Compatibility\n  { begin: 0xac00, end: 0xd7af }, // Hangul Syllables\n  { begin: 0xd800, end: 0xdfff }, // Non-Plane 0 *\n  { begin: 0x10900, end: 0x1091f }, // Phoenicia\n  { begin: 0x4e00, end: 0x9fff }, // CJK Unified Ideographs\n  { begin: 0xe000, end: 0xf8ff }, // Private Use Area (plane 0)\n  { begin: 0x31c0, end: 0x31ef }, // CJK Strokes\n  { begin: 0xfb00, end: 0xfb4f }, // Alphabetic Presentation Forms\n  { begin: 0xfb50, end: 0xfdff }, // Arabic Presentation Forms-A\n  { begin: 0xfe20, end: 0xfe2f }, // Combining Half Marks\n  { begin: 0xfe10, end: 0xfe1f }, // Vertical Forms\n  { begin: 0xfe50, end: 0xfe6f }, // Small Form Variants\n  { begin: 0xfe70, end: 0xfeff }, // Arabic Presentation Forms-B\n  { begin: 0xff00, end: 0xffef }, // Halfwidth And Fullwidth Forms\n  { begin: 0xfff0, end: 0xffff }, // Specials\n  { begin: 0x0f00, end: 0x0fff }, // Tibetan\n  { begin: 0x0700, end: 0x074f }, // Syriac\n  { begin: 0x0780, end: 0x07bf }, // Thaana\n  { begin: 0x0d80, end: 0x0dff }, // Sinhala\n  { begin: 0x1000, end: 0x109f }, // Myanmar\n  { begin: 0x1200, end: 0x137f }, // Ethiopic\n  { begin: 0x13a0, end: 0x13ff }, // Cherokee\n  { begin: 0x1400, end: 0x167f }, // Unified Canadian Aboriginal Syllabics\n  { begin: 0x1680, end: 0x169f }, // Ogham\n  { begin: 0x16a0, end: 0x16ff }, // Runic\n  { begin: 0x1780, end: 0x17ff }, // Khmer\n  { begin: 0x1800, end: 0x18af }, // Mongolian\n  { begin: 0x2800, end: 0x28ff }, // Braille Patterns\n  { begin: 0xa000, end: 0xa48f }, // Yi Syllables\n  { begin: 0x1700, end: 0x171f }, // Tagalog\n  { begin: 0x10300, end: 0x1032f }, // Old Italic\n  { begin: 0x10330, end: 0x1034f }, // Gothic\n  { begin: 0x10400, end: 0x1044f }, // Deseret\n  { begin: 0x1d000, end: 0x1d0ff }, // Byzantine Musical Symbols\n  { begin: 0x1d400, end: 0x1d7ff }, // Mathematical Alphanumeric Symbols\n  { begin: 0xff000, end: 0xffffd }, // Private Use (plane 15)\n  { begin: 0xfe00, end: 0xfe0f }, // Variation Selectors\n  { begin: 0xe0000, end: 0xe007f }, // Tags\n  { begin: 0x1900, end: 0x194f }, // Limbu\n  { begin: 0x1950, end: 0x197f }, // Tai Le\n  { begin: 0x1980, end: 0x19df }, // New Tai Lue\n  { begin: 0x1a00, end: 0x1a1f }, // Buginese\n  { begin: 0x2c00, end: 0x2c5f }, // Glagolitic\n  { begin: 0x2d30, end: 0x2d7f }, // Tifinagh\n  { begin: 0x4dc0, end: 0x4dff }, // Yijing Hexagram Symbols\n  { begin: 0xa800, end: 0xa82f }, // Syloti Nagri\n  { begin: 0x10000, end: 0x1007f }, // Linear B Syllabary\n  { begin: 0x10140, end: 0x1018f }, // Ancient Greek Numbers\n  { begin: 0x10380, end: 0x1039f }, // Ugaritic\n  { begin: 0x103a0, end: 0x103df }, // Old Persian\n  { begin: 0x10450, end: 0x1047f }, // Shavian\n  { begin: 0x10480, end: 0x104af }, // Osmanya\n  { begin: 0x10800, end: 0x1083f }, // Cypriot Syllabary\n  { begin: 0x10a00, end: 0x10a5f }, // Kharoshthi\n  { begin: 0x1d300, end: 0x1d35f }, // Tai Xuan Jing Symbols\n  { begin: 0x12000, end: 0x123ff }, // Cuneiform\n  { begin: 0x1d360, end: 0x1d37f }, // Counting Rod Numerals\n  { begin: 0x1b80, end: 0x1bbf }, // Sundanese\n  { begin: 0x1c00, end: 0x1c4f }, // Lepcha\n  { begin: 0x1c50, end: 0x1c7f }, // Ol Chiki\n  { begin: 0xa880, end: 0xa8df }, // Saurashtra\n  { begin: 0xa900, end: 0xa92f }, // Kayah Li\n  { begin: 0xa930, end: 0xa95f }, // Rejang\n  { begin: 0xaa00, end: 0xaa5f }, // Cham\n  { begin: 0x10190, end: 0x101cf }, // Ancient Symbols\n  { begin: 0x101d0, end: 0x101ff }, // Phaistos Disc\n  { begin: 0x102a0, end: 0x102df }, // Carian\n  { begin: 0x1f030, end: 0x1f09f }, // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n  for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n    const range = UnicodeRanges[i];\n    if (value >= range.begin && value < range.end) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nfunction isRTLRangeFor(value) {\n  let range = UnicodeRanges[13];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  range = UnicodeRanges[11];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nconst getNormalizedUnicodes = getArrayLookupTableFactory(function () {\n  // prettier-ignore\n  return [\n    \"\\u00A8\", \"\\u0020\\u0308\",\n    \"\\u00AF\", \"\\u0020\\u0304\",\n    \"\\u00B4\", \"\\u0020\\u0301\",\n    \"\\u00B5\", \"\\u03BC\",\n    \"\\u00B8\", \"\\u0020\\u0327\",\n    \"\\u0132\", \"\\u0049\\u004A\",\n    \"\\u0133\", \"\\u0069\\u006A\",\n    \"\\u013F\", \"\\u004C\\u00B7\",\n    \"\\u0140\", \"\\u006C\\u00B7\",\n    \"\\u0149\", \"\\u02BC\\u006E\",\n    \"\\u017F\", \"\\u0073\",\n    \"\\u01C4\", \"\\u0044\\u017D\",\n    \"\\u01C5\", \"\\u0044\\u017E\",\n    \"\\u01C6\", \"\\u0064\\u017E\",\n    \"\\u01C7\", \"\\u004C\\u004A\",\n    \"\\u01C8\", \"\\u004C\\u006A\",\n    \"\\u01C9\", \"\\u006C\\u006A\",\n    \"\\u01CA\", \"\\u004E\\u004A\",\n    \"\\u01CB\", \"\\u004E\\u006A\",\n    \"\\u01CC\", \"\\u006E\\u006A\",\n    \"\\u01F1\", \"\\u0044\\u005A\",\n    \"\\u01F2\", \"\\u0044\\u007A\",\n    \"\\u01F3\", \"\\u0064\\u007A\",\n    \"\\u02D8\", \"\\u0020\\u0306\",\n    \"\\u02D9\", \"\\u0020\\u0307\",\n    \"\\u02DA\", \"\\u0020\\u030A\",\n    \"\\u02DB\", \"\\u0020\\u0328\",\n    \"\\u02DC\", \"\\u0020\\u0303\",\n    \"\\u02DD\", \"\\u0020\\u030B\",\n    \"\\u037A\", \"\\u0020\\u0345\",\n    \"\\u0384\", \"\\u0020\\u0301\",\n    \"\\u03D0\", \"\\u03B2\",\n    \"\\u03D1\", \"\\u03B8\",\n    \"\\u03D2\", \"\\u03A5\",\n    \"\\u03D5\", \"\\u03C6\",\n    \"\\u03D6\", \"\\u03C0\",\n    \"\\u03F0\", \"\\u03BA\",\n    \"\\u03F1\", \"\\u03C1\",\n    \"\\u03F2\", \"\\u03C2\",\n    \"\\u03F4\", \"\\u0398\",\n    \"\\u03F5\", \"\\u03B5\",\n    \"\\u03F9\", \"\\u03A3\",\n    \"\\u0587\", \"\\u0565\\u0582\",\n    \"\\u0675\", \"\\u0627\\u0674\",\n    \"\\u0676\", \"\\u0648\\u0674\",\n    \"\\u0677\", \"\\u06C7\\u0674\",\n    \"\\u0678\", \"\\u064A\\u0674\",\n    \"\\u0E33\", \"\\u0E4D\\u0E32\",\n    \"\\u0EB3\", \"\\u0ECD\\u0EB2\",\n    \"\\u0EDC\", \"\\u0EAB\\u0E99\",\n    \"\\u0EDD\", \"\\u0EAB\\u0EA1\",\n    \"\\u0F77\", \"\\u0FB2\\u0F81\",\n    \"\\u0F79\", \"\\u0FB3\\u0F81\",\n    \"\\u1E9A\", \"\\u0061\\u02BE\",\n    \"\\u1FBD\", \"\\u0020\\u0313\",\n    \"\\u1FBF\", \"\\u0020\\u0313\",\n    \"\\u1FC0\", \"\\u0020\\u0342\",\n    \"\\u1FFE\", \"\\u0020\\u0314\",\n    \"\\u2002\", \"\\u0020\",\n    \"\\u2003\", \"\\u0020\",\n    \"\\u2004\", \"\\u0020\",\n    \"\\u2005\", \"\\u0020\",\n    \"\\u2006\", \"\\u0020\",\n    \"\\u2008\", \"\\u0020\",\n    \"\\u2009\", \"\\u0020\",\n    \"\\u200A\", \"\\u0020\",\n    \"\\u2017\", \"\\u0020\\u0333\",\n    \"\\u2024\", \"\\u002E\",\n    \"\\u2025\", \"\\u002E\\u002E\",\n    \"\\u2026\", \"\\u002E\\u002E\\u002E\",\n    \"\\u2033\", \"\\u2032\\u2032\",\n    \"\\u2034\", \"\\u2032\\u2032\\u2032\",\n    \"\\u2036\", \"\\u2035\\u2035\",\n    \"\\u2037\", \"\\u2035\\u2035\\u2035\",\n    \"\\u203C\", \"\\u0021\\u0021\",\n    \"\\u203E\", \"\\u0020\\u0305\",\n    \"\\u2047\", \"\\u003F\\u003F\",\n    \"\\u2048\", \"\\u003F\\u0021\",\n    \"\\u2049\", \"\\u0021\\u003F\",\n    \"\\u2057\", \"\\u2032\\u2032\\u2032\\u2032\",\n    \"\\u205F\", \"\\u0020\",\n    \"\\u20A8\", \"\\u0052\\u0073\",\n    \"\\u2100\", \"\\u0061\\u002F\\u0063\",\n    \"\\u2101\", \"\\u0061\\u002F\\u0073\",\n    \"\\u2103\", \"\\u00B0\\u0043\",\n    \"\\u2105\", \"\\u0063\\u002F\\u006F\",\n    \"\\u2106\", \"\\u0063\\u002F\\u0075\",\n    \"\\u2107\", \"\\u0190\",\n    \"\\u2109\", \"\\u00B0\\u0046\",\n    \"\\u2116\", \"\\u004E\\u006F\",\n    \"\\u2121\", \"\\u0054\\u0045\\u004C\",\n    \"\\u2135\", \"\\u05D0\",\n    \"\\u2136\", \"\\u05D1\",\n    \"\\u2137\", \"\\u05D2\",\n    \"\\u2138\", \"\\u05D3\",\n    \"\\u213B\", \"\\u0046\\u0041\\u0058\",\n    \"\\u2160\", \"\\u0049\",\n    \"\\u2161\", \"\\u0049\\u0049\",\n    \"\\u2162\", \"\\u0049\\u0049\\u0049\",\n    \"\\u2163\", \"\\u0049\\u0056\",\n    \"\\u2164\", \"\\u0056\",\n    \"\\u2165\", \"\\u0056\\u0049\",\n    \"\\u2166\", \"\\u0056\\u0049\\u0049\",\n    \"\\u2167\", \"\\u0056\\u0049\\u0049\\u0049\",\n    \"\\u2168\", \"\\u0049\\u0058\",\n    \"\\u2169\", \"\\u0058\",\n    \"\\u216A\", \"\\u0058\\u0049\",\n    \"\\u216B\", \"\\u0058\\u0049\\u0049\",\n    \"\\u216C\", \"\\u004C\",\n    \"\\u216D\", \"\\u0043\",\n    \"\\u216E\", \"\\u0044\",\n    \"\\u216F\", \"\\u004D\",\n    \"\\u2170\", \"\\u0069\",\n    \"\\u2171\", \"\\u0069\\u0069\",\n    \"\\u2172\", \"\\u0069\\u0069\\u0069\",\n    \"\\u2173\", \"\\u0069\\u0076\",\n    \"\\u2174\", \"\\u0076\",\n    \"\\u2175\", \"\\u0076\\u0069\",\n    \"\\u2176\", \"\\u0076\\u0069\\u0069\",\n    \"\\u2177\", \"\\u0076\\u0069\\u0069\\u0069\",\n    \"\\u2178\", \"\\u0069\\u0078\",\n    \"\\u2179\", \"\\u0078\",\n    \"\\u217A\", \"\\u0078\\u0069\",\n    \"\\u217B\", \"\\u0078\\u0069\\u0069\",\n    \"\\u217C\", \"\\u006C\",\n    \"\\u217D\", \"\\u0063\",\n    \"\\u217E\", \"\\u0064\",\n    \"\\u217F\", \"\\u006D\",\n    \"\\u222C\", \"\\u222B\\u222B\",\n    \"\\u222D\", \"\\u222B\\u222B\\u222B\",\n    \"\\u222F\", \"\\u222E\\u222E\",\n    \"\\u2230\", \"\\u222E\\u222E\\u222E\",\n    \"\\u2474\", \"\\u0028\\u0031\\u0029\",\n    \"\\u2475\", \"\\u0028\\u0032\\u0029\",\n    \"\\u2476\", \"\\u0028\\u0033\\u0029\",\n    \"\\u2477\", \"\\u0028\\u0034\\u0029\",\n    \"\\u2478\", \"\\u0028\\u0035\\u0029\",\n    \"\\u2479\", \"\\u0028\\u0036\\u0029\",\n    \"\\u247A\", \"\\u0028\\u0037\\u0029\",\n    \"\\u247B\", \"\\u0028\\u0038\\u0029\",\n    \"\\u247C\", \"\\u0028\\u0039\\u0029\",\n    \"\\u247D\", \"\\u0028\\u0031\\u0030\\u0029\",\n    \"\\u247E\", \"\\u0028\\u0031\\u0031\\u0029\",\n    \"\\u247F\", \"\\u0028\\u0031\\u0032\\u0029\",\n    \"\\u2480\", \"\\u0028\\u0031\\u0033\\u0029\",\n    \"\\u2481\", \"\\u0028\\u0031\\u0034\\u0029\",\n    \"\\u2482\", \"\\u0028\\u0031\\u0035\\u0029\",\n    \"\\u2483\", \"\\u0028\\u0031\\u0036\\u0029\",\n    \"\\u2484\", \"\\u0028\\u0031\\u0037\\u0029\",\n    \"\\u2485\", \"\\u0028\\u0031\\u0038\\u0029\",\n    \"\\u2486\", \"\\u0028\\u0031\\u0039\\u0029\",\n    \"\\u2487\", \"\\u0028\\u0032\\u0030\\u0029\",\n    \"\\u2488\", \"\\u0031\\u002E\",\n    \"\\u2489\", \"\\u0032\\u002E\",\n    \"\\u248A\", \"\\u0033\\u002E\",\n    \"\\u248B\", \"\\u0034\\u002E\",\n    \"\\u248C\", \"\\u0035\\u002E\",\n    \"\\u248D\", \"\\u0036\\u002E\",\n    \"\\u248E\", \"\\u0037\\u002E\",\n    \"\\u248F\", \"\\u0038\\u002E\",\n    \"\\u2490\", \"\\u0039\\u002E\",\n    \"\\u2491\", \"\\u0031\\u0030\\u002E\",\n    \"\\u2492\", \"\\u0031\\u0031\\u002E\",\n    \"\\u2493\", \"\\u0031\\u0032\\u002E\",\n    \"\\u2494\", \"\\u0031\\u0033\\u002E\",\n    \"\\u2495\", \"\\u0031\\u0034\\u002E\",\n    \"\\u2496\", \"\\u0031\\u0035\\u002E\",\n    \"\\u2497\", \"\\u0031\\u0036\\u002E\",\n    \"\\u2498\", \"\\u0031\\u0037\\u002E\",\n    \"\\u2499\", \"\\u0031\\u0038\\u002E\",\n    \"\\u249A\", \"\\u0031\\u0039\\u002E\",\n    \"\\u249B\", \"\\u0032\\u0030\\u002E\",\n    \"\\u249C\", \"\\u0028\\u0061\\u0029\",\n    \"\\u249D\", \"\\u0028\\u0062\\u0029\",\n    \"\\u249E\", \"\\u0028\\u0063\\u0029\",\n    \"\\u249F\", \"\\u0028\\u0064\\u0029\",\n    \"\\u24A0\", \"\\u0028\\u0065\\u0029\",\n    \"\\u24A1\", \"\\u0028\\u0066\\u0029\",\n    \"\\u24A2\", \"\\u0028\\u0067\\u0029\",\n    \"\\u24A3\", \"\\u0028\\u0068\\u0029\",\n    \"\\u24A4\", \"\\u0028\\u0069\\u0029\",\n    \"\\u24A5\", \"\\u0028\\u006A\\u0029\",\n    \"\\u24A6\", \"\\u0028\\u006B\\u0029\",\n    \"\\u24A7\", \"\\u0028\\u006C\\u0029\",\n    \"\\u24A8\", \"\\u0028\\u006D\\u0029\",\n    \"\\u24A9\", \"\\u0028\\u006E\\u0029\",\n    \"\\u24AA\", \"\\u0028\\u006F\\u0029\",\n    \"\\u24AB\", \"\\u0028\\u0070\\u0029\",\n    \"\\u24AC\", \"\\u0028\\u0071\\u0029\",\n    \"\\u24AD\", \"\\u0028\\u0072\\u0029\",\n    \"\\u24AE\", \"\\u0028\\u0073\\u0029\",\n    \"\\u24AF\", \"\\u0028\\u0074\\u0029\",\n    \"\\u24B0\", \"\\u0028\\u0075\\u0029\",\n    \"\\u24B1\", \"\\u0028\\u0076\\u0029\",\n    \"\\u24B2\", \"\\u0028\\u0077\\u0029\",\n    \"\\u24B3\", \"\\u0028\\u0078\\u0029\",\n    \"\\u24B4\", \"\\u0028\\u0079\\u0029\",\n    \"\\u24B5\", \"\\u0028\\u007A\\u0029\",\n    \"\\u2A0C\", \"\\u222B\\u222B\\u222B\\u222B\",\n    \"\\u2A74\", \"\\u003A\\u003A\\u003D\",\n    \"\\u2A75\", \"\\u003D\\u003D\",\n    \"\\u2A76\", \"\\u003D\\u003D\\u003D\",\n    \"\\u2E9F\", \"\\u6BCD\",\n    \"\\u2EF3\", \"\\u9F9F\",\n    \"\\u2F00\", \"\\u4E00\",\n    \"\\u2F01\", \"\\u4E28\",\n    \"\\u2F02\", \"\\u4E36\",\n    \"\\u2F03\", \"\\u4E3F\",\n    \"\\u2F04\", \"\\u4E59\",\n    \"\\u2F05\", \"\\u4E85\",\n    \"\\u2F06\", \"\\u4E8C\",\n    \"\\u2F07\", \"\\u4EA0\",\n    \"\\u2F08\", \"\\u4EBA\",\n    \"\\u2F09\", \"\\u513F\",\n    \"\\u2F0A\", \"\\u5165\",\n    \"\\u2F0B\", \"\\u516B\",\n    \"\\u2F0C\", \"\\u5182\",\n    \"\\u2F0D\", \"\\u5196\",\n    \"\\u2F0E\", \"\\u51AB\",\n    \"\\u2F0F\", \"\\u51E0\",\n    \"\\u2F10\", \"\\u51F5\",\n    \"\\u2F11\", \"\\u5200\",\n    \"\\u2F12\", \"\\u529B\",\n    \"\\u2F13\", \"\\u52F9\",\n    \"\\u2F14\", \"\\u5315\",\n    \"\\u2F15\", \"\\u531A\",\n    \"\\u2F16\", \"\\u5338\",\n    \"\\u2F17\", \"\\u5341\",\n    \"\\u2F18\", \"\\u535C\",\n    \"\\u2F19\", \"\\u5369\",\n    \"\\u2F1A\", \"\\u5382\",\n    \"\\u2F1B\", \"\\u53B6\",\n    \"\\u2F1C\", \"\\u53C8\",\n    \"\\u2F1D\", \"\\u53E3\",\n    \"\\u2F1E\", \"\\u56D7\",\n    \"\\u2F1F\", \"\\u571F\",\n    \"\\u2F20\", \"\\u58EB\",\n    \"\\u2F21\", \"\\u5902\",\n    \"\\u2F22\", \"\\u590A\",\n    \"\\u2F23\", \"\\u5915\",\n    \"\\u2F24\", \"\\u5927\",\n    \"\\u2F25\", \"\\u5973\",\n    \"\\u2F26\", \"\\u5B50\",\n    \"\\u2F27\", \"\\u5B80\",\n    \"\\u2F28\", \"\\u5BF8\",\n    \"\\u2F29\", \"\\u5C0F\",\n    \"\\u2F2A\", \"\\u5C22\",\n    \"\\u2F2B\", \"\\u5C38\",\n    \"\\u2F2C\", \"\\u5C6E\",\n    \"\\u2F2D\", \"\\u5C71\",\n    \"\\u2F2E\", \"\\u5DDB\",\n    \"\\u2F2F\", \"\\u5DE5\",\n    \"\\u2F30\", \"\\u5DF1\",\n    \"\\u2F31\", \"\\u5DFE\",\n    \"\\u2F32\", \"\\u5E72\",\n    \"\\u2F33\", \"\\u5E7A\",\n    \"\\u2F34\", \"\\u5E7F\",\n    \"\\u2F35\", \"\\u5EF4\",\n    \"\\u2F36\", \"\\u5EFE\",\n    \"\\u2F37\", \"\\u5F0B\",\n    \"\\u2F38\", \"\\u5F13\",\n    \"\\u2F39\", \"\\u5F50\",\n    \"\\u2F3A\", \"\\u5F61\",\n    \"\\u2F3B\", \"\\u5F73\",\n    \"\\u2F3C\", \"\\u5FC3\",\n    \"\\u2F3D\", \"\\u6208\",\n    \"\\u2F3E\", \"\\u6236\",\n    \"\\u2F3F\", \"\\u624B\",\n    \"\\u2F40\", \"\\u652F\",\n    \"\\u2F41\", \"\\u6534\",\n    \"\\u2F42\", \"\\u6587\",\n    \"\\u2F43\", \"\\u6597\",\n    \"\\u2F44\", \"\\u65A4\",\n    \"\\u2F45\", \"\\u65B9\",\n    \"\\u2F46\", \"\\u65E0\",\n    \"\\u2F47\", \"\\u65E5\",\n    \"\\u2F48\", \"\\u66F0\",\n    \"\\u2F49\", \"\\u6708\",\n    \"\\u2F4A\", \"\\u6728\",\n    \"\\u2F4B\", \"\\u6B20\",\n    \"\\u2F4C\", \"\\u6B62\",\n    \"\\u2F4D\", \"\\u6B79\",\n    \"\\u2F4E\", \"\\u6BB3\",\n    \"\\u2F4F\", \"\\u6BCB\",\n    \"\\u2F50\", \"\\u6BD4\",\n    \"\\u2F51\", \"\\u6BDB\",\n    \"\\u2F52\", \"\\u6C0F\",\n    \"\\u2F53\", \"\\u6C14\",\n    \"\\u2F54\", \"\\u6C34\",\n    \"\\u2F55\", \"\\u706B\",\n    \"\\u2F56\", \"\\u722A\",\n    \"\\u2F57\", \"\\u7236\",\n    \"\\u2F58\", \"\\u723B\",\n    \"\\u2F59\", \"\\u723F\",\n    \"\\u2F5A\", \"\\u7247\",\n    \"\\u2F5B\", \"\\u7259\",\n    \"\\u2F5C\", \"\\u725B\",\n    \"\\u2F5D\", \"\\u72AC\",\n    \"\\u2F5E\", \"\\u7384\",\n    \"\\u2F5F\", \"\\u7389\",\n    \"\\u2F60\", \"\\u74DC\",\n    \"\\u2F61\", \"\\u74E6\",\n    \"\\u2F62\", \"\\u7518\",\n    \"\\u2F63\", \"\\u751F\",\n    \"\\u2F64\", \"\\u7528\",\n    \"\\u2F65\", \"\\u7530\",\n    \"\\u2F66\", \"\\u758B\",\n    \"\\u2F67\", \"\\u7592\",\n    \"\\u2F68\", \"\\u7676\",\n    \"\\u2F69\", \"\\u767D\",\n    \"\\u2F6A\", \"\\u76AE\",\n    \"\\u2F6B\", \"\\u76BF\",\n    \"\\u2F6C\", \"\\u76EE\",\n    \"\\u2F6D\", \"\\u77DB\",\n    \"\\u2F6E\", \"\\u77E2\",\n    \"\\u2F6F\", \"\\u77F3\",\n    \"\\u2F70\", \"\\u793A\",\n    \"\\u2F71\", \"\\u79B8\",\n    \"\\u2F72\", \"\\u79BE\",\n    \"\\u2F73\", \"\\u7A74\",\n    \"\\u2F74\", \"\\u7ACB\",\n    \"\\u2F75\", \"\\u7AF9\",\n    \"\\u2F76\", \"\\u7C73\",\n    \"\\u2F77\", \"\\u7CF8\",\n    \"\\u2F78\", \"\\u7F36\",\n    \"\\u2F79\", \"\\u7F51\",\n    \"\\u2F7A\", \"\\u7F8A\",\n    \"\\u2F7B\", \"\\u7FBD\",\n    \"\\u2F7C\", \"\\u8001\",\n    \"\\u2F7D\", \"\\u800C\",\n    \"\\u2F7E\", \"\\u8012\",\n    \"\\u2F7F\", \"\\u8033\",\n    \"\\u2F80\", \"\\u807F\",\n    \"\\u2F81\", \"\\u8089\",\n    \"\\u2F82\", \"\\u81E3\",\n    \"\\u2F83\", \"\\u81EA\",\n    \"\\u2F84\", \"\\u81F3\",\n    \"\\u2F85\", \"\\u81FC\",\n    \"\\u2F86\", \"\\u820C\",\n    \"\\u2F87\", \"\\u821B\",\n    \"\\u2F88\", \"\\u821F\",\n    \"\\u2F89\", \"\\u826E\",\n    \"\\u2F8A\", \"\\u8272\",\n    \"\\u2F8B\", \"\\u8278\",\n    \"\\u2F8C\", \"\\u864D\",\n    \"\\u2F8D\", \"\\u866B\",\n    \"\\u2F8E\", \"\\u8840\",\n    \"\\u2F8F\", \"\\u884C\",\n    \"\\u2F90\", \"\\u8863\",\n    \"\\u2F91\", \"\\u897E\",\n    \"\\u2F92\", \"\\u898B\",\n    \"\\u2F93\", \"\\u89D2\",\n    \"\\u2F94\", \"\\u8A00\",\n    \"\\u2F95\", \"\\u8C37\",\n    \"\\u2F96\", \"\\u8C46\",\n    \"\\u2F97\", \"\\u8C55\",\n    \"\\u2F98\", \"\\u8C78\",\n    \"\\u2F99\", \"\\u8C9D\",\n    \"\\u2F9A\", \"\\u8D64\",\n    \"\\u2F9B\", \"\\u8D70\",\n    \"\\u2F9C\", \"\\u8DB3\",\n    \"\\u2F9D\", \"\\u8EAB\",\n    \"\\u2F9E\", \"\\u8ECA\",\n    \"\\u2F9F\", \"\\u8F9B\",\n    \"\\u2FA0\", \"\\u8FB0\",\n    \"\\u2FA1\", \"\\u8FB5\",\n    \"\\u2FA2\", \"\\u9091\",\n    \"\\u2FA3\", \"\\u9149\",\n    \"\\u2FA4\", \"\\u91C6\",\n    \"\\u2FA5\", \"\\u91CC\",\n    \"\\u2FA6\", \"\\u91D1\",\n    \"\\u2FA7\", \"\\u9577\",\n    \"\\u2FA8\", \"\\u9580\",\n    \"\\u2FA9\", \"\\u961C\",\n    \"\\u2FAA\", \"\\u96B6\",\n    \"\\u2FAB\", \"\\u96B9\",\n    \"\\u2FAC\", \"\\u96E8\",\n    \"\\u2FAD\", \"\\u9751\",\n    \"\\u2FAE\", \"\\u975E\",\n    \"\\u2FAF\", \"\\u9762\",\n    \"\\u2FB0\", \"\\u9769\",\n    \"\\u2FB1\", \"\\u97CB\",\n    \"\\u2FB2\", \"\\u97ED\",\n    \"\\u2FB3\", \"\\u97F3\",\n    \"\\u2FB4\", \"\\u9801\",\n    \"\\u2FB5\", \"\\u98A8\",\n    \"\\u2FB6\", \"\\u98DB\",\n    \"\\u2FB7\", \"\\u98DF\",\n    \"\\u2FB8\", \"\\u9996\",\n    \"\\u2FB9\", \"\\u9999\",\n    \"\\u2FBA\", \"\\u99AC\",\n    \"\\u2FBB\", \"\\u9AA8\",\n    \"\\u2FBC\", \"\\u9AD8\",\n    \"\\u2FBD\", \"\\u9ADF\",\n    \"\\u2FBE\", \"\\u9B25\",\n    \"\\u2FBF\", \"\\u9B2F\",\n    \"\\u2FC0\", \"\\u9B32\",\n    \"\\u2FC1\", \"\\u9B3C\",\n    \"\\u2FC2\", \"\\u9B5A\",\n    \"\\u2FC3\", \"\\u9CE5\",\n    \"\\u2FC4\", \"\\u9E75\",\n    \"\\u2FC5\", \"\\u9E7F\",\n    \"\\u2FC6\", \"\\u9EA5\",\n    \"\\u2FC7\", \"\\u9EBB\",\n    \"\\u2FC8\", \"\\u9EC3\",\n    \"\\u2FC9\", \"\\u9ECD\",\n    \"\\u2FCA\", \"\\u9ED1\",\n    \"\\u2FCB\", \"\\u9EF9\",\n    \"\\u2FCC\", \"\\u9EFD\",\n    \"\\u2FCD\", \"\\u9F0E\",\n    \"\\u2FCE\", \"\\u9F13\",\n    \"\\u2FCF\", \"\\u9F20\",\n    \"\\u2FD0\", \"\\u9F3B\",\n    \"\\u2FD1\", \"\\u9F4A\",\n    \"\\u2FD2\", \"\\u9F52\",\n    \"\\u2FD3\", \"\\u9F8D\",\n    \"\\u2FD4\", \"\\u9F9C\",\n    \"\\u2FD5\", \"\\u9FA0\",\n    \"\\u3036\", \"\\u3012\",\n    \"\\u3038\", \"\\u5341\",\n    \"\\u3039\", \"\\u5344\",\n    \"\\u303A\", \"\\u5345\",\n    \"\\u309B\", \"\\u0020\\u3099\",\n    \"\\u309C\", \"\\u0020\\u309A\",\n    \"\\u3131\", \"\\u1100\",\n    \"\\u3132\", \"\\u1101\",\n    \"\\u3133\", \"\\u11AA\",\n    \"\\u3134\", \"\\u1102\",\n    \"\\u3135\", \"\\u11AC\",\n    \"\\u3136\", \"\\u11AD\",\n    \"\\u3137\", \"\\u1103\",\n    \"\\u3138\", \"\\u1104\",\n    \"\\u3139\", \"\\u1105\",\n    \"\\u313A\", \"\\u11B0\",\n    \"\\u313B\", \"\\u11B1\",\n    \"\\u313C\", \"\\u11B2\",\n    \"\\u313D\", \"\\u11B3\",\n    \"\\u313E\", \"\\u11B4\",\n    \"\\u313F\", \"\\u11B5\",\n    \"\\u3140\", \"\\u111A\",\n    \"\\u3141\", \"\\u1106\",\n    \"\\u3142\", \"\\u1107\",\n    \"\\u3143\", \"\\u1108\",\n    \"\\u3144\", \"\\u1121\",\n    \"\\u3145\", \"\\u1109\",\n    \"\\u3146\", \"\\u110A\",\n    \"\\u3147\", \"\\u110B\",\n    \"\\u3148\", \"\\u110C\",\n    \"\\u3149\", \"\\u110D\",\n    \"\\u314A\", \"\\u110E\",\n    \"\\u314B\", \"\\u110F\",\n    \"\\u314C\", \"\\u1110\",\n    \"\\u314D\", \"\\u1111\",\n    \"\\u314E\", \"\\u1112\",\n    \"\\u314F\", \"\\u1161\",\n    \"\\u3150\", \"\\u1162\",\n    \"\\u3151\", \"\\u1163\",\n    \"\\u3152\", \"\\u1164\",\n    \"\\u3153\", \"\\u1165\",\n    \"\\u3154\", \"\\u1166\",\n    \"\\u3155\", \"\\u1167\",\n    \"\\u3156\", \"\\u1168\",\n    \"\\u3157\", \"\\u1169\",\n    \"\\u3158\", \"\\u116A\",\n    \"\\u3159\", \"\\u116B\",\n    \"\\u315A\", \"\\u116C\",\n    \"\\u315B\", \"\\u116D\",\n    \"\\u315C\", \"\\u116E\",\n    \"\\u315D\", \"\\u116F\",\n    \"\\u315E\", \"\\u1170\",\n    \"\\u315F\", \"\\u1171\",\n    \"\\u3160\", \"\\u1172\",\n    \"\\u3161\", \"\\u1173\",\n    \"\\u3162\", \"\\u1174\",\n    \"\\u3163\", \"\\u1175\",\n    \"\\u3164\", \"\\u1160\",\n    \"\\u3165\", \"\\u1114\",\n    \"\\u3166\", \"\\u1115\",\n    \"\\u3167\", \"\\u11C7\",\n    \"\\u3168\", \"\\u11C8\",\n    \"\\u3169\", \"\\u11CC\",\n    \"\\u316A\", \"\\u11CE\",\n    \"\\u316B\", \"\\u11D3\",\n    \"\\u316C\", \"\\u11D7\",\n    \"\\u316D\", \"\\u11D9\",\n    \"\\u316E\", \"\\u111C\",\n    \"\\u316F\", \"\\u11DD\",\n    \"\\u3170\", \"\\u11DF\",\n    \"\\u3171\", \"\\u111D\",\n    \"\\u3172\", \"\\u111E\",\n    \"\\u3173\", \"\\u1120\",\n    \"\\u3174\", \"\\u1122\",\n    \"\\u3175\", \"\\u1123\",\n    \"\\u3176\", \"\\u1127\",\n    \"\\u3177\", \"\\u1129\",\n    \"\\u3178\", \"\\u112B\",\n    \"\\u3179\", \"\\u112C\",\n    \"\\u317A\", \"\\u112D\",\n    \"\\u317B\", \"\\u112E\",\n    \"\\u317C\", \"\\u112F\",\n    \"\\u317D\", \"\\u1132\",\n    \"\\u317E\", \"\\u1136\",\n    \"\\u317F\", \"\\u1140\",\n    \"\\u3180\", \"\\u1147\",\n    \"\\u3181\", \"\\u114C\",\n    \"\\u3182\", \"\\u11F1\",\n    \"\\u3183\", \"\\u11F2\",\n    \"\\u3184\", \"\\u1157\",\n    \"\\u3185\", \"\\u1158\",\n    \"\\u3186\", \"\\u1159\",\n    \"\\u3187\", \"\\u1184\",\n    \"\\u3188\", \"\\u1185\",\n    \"\\u3189\", \"\\u1188\",\n    \"\\u318A\", \"\\u1191\",\n    \"\\u318B\", \"\\u1192\",\n    \"\\u318C\", \"\\u1194\",\n    \"\\u318D\", \"\\u119E\",\n    \"\\u318E\", \"\\u11A1\",\n    \"\\u3200\", \"\\u0028\\u1100\\u0029\",\n    \"\\u3201\", \"\\u0028\\u1102\\u0029\",\n    \"\\u3202\", \"\\u0028\\u1103\\u0029\",\n    \"\\u3203\", \"\\u0028\\u1105\\u0029\",\n    \"\\u3204\", \"\\u0028\\u1106\\u0029\",\n    \"\\u3205\", \"\\u0028\\u1107\\u0029\",\n    \"\\u3206\", \"\\u0028\\u1109\\u0029\",\n    \"\\u3207\", \"\\u0028\\u110B\\u0029\",\n    \"\\u3208\", \"\\u0028\\u110C\\u0029\",\n    \"\\u3209\", \"\\u0028\\u110E\\u0029\",\n    \"\\u320A\", \"\\u0028\\u110F\\u0029\",\n    \"\\u320B\", \"\\u0028\\u1110\\u0029\",\n    \"\\u320C\", \"\\u0028\\u1111\\u0029\",\n    \"\\u320D\", \"\\u0028\\u1112\\u0029\",\n    \"\\u320E\", \"\\u0028\\u1100\\u1161\\u0029\",\n    \"\\u320F\", \"\\u0028\\u1102\\u1161\\u0029\",\n    \"\\u3210\", \"\\u0028\\u1103\\u1161\\u0029\",\n    \"\\u3211\", \"\\u0028\\u1105\\u1161\\u0029\",\n    \"\\u3212\", \"\\u0028\\u1106\\u1161\\u0029\",\n    \"\\u3213\", \"\\u0028\\u1107\\u1161\\u0029\",\n    \"\\u3214\", \"\\u0028\\u1109\\u1161\\u0029\",\n    \"\\u3215\", \"\\u0028\\u110B\\u1161\\u0029\",\n    \"\\u3216\", \"\\u0028\\u110C\\u1161\\u0029\",\n    \"\\u3217\", \"\\u0028\\u110E\\u1161\\u0029\",\n    \"\\u3218\", \"\\u0028\\u110F\\u1161\\u0029\",\n    \"\\u3219\", \"\\u0028\\u1110\\u1161\\u0029\",\n    \"\\u321A\", \"\\u0028\\u1111\\u1161\\u0029\",\n    \"\\u321B\", \"\\u0028\\u1112\\u1161\\u0029\",\n    \"\\u321C\", \"\\u0028\\u110C\\u116E\\u0029\",\n    \"\\u321D\", \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\",\n    \"\\u321E\", \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\",\n    \"\\u3220\", \"\\u0028\\u4E00\\u0029\",\n    \"\\u3221\", \"\\u0028\\u4E8C\\u0029\",\n    \"\\u3222\", \"\\u0028\\u4E09\\u0029\",\n    \"\\u3223\", \"\\u0028\\u56DB\\u0029\",\n    \"\\u3224\", \"\\u0028\\u4E94\\u0029\",\n    \"\\u3225\", \"\\u0028\\u516D\\u0029\",\n    \"\\u3226\", \"\\u0028\\u4E03\\u0029\",\n    \"\\u3227\", \"\\u0028\\u516B\\u0029\",\n    \"\\u3228\", \"\\u0028\\u4E5D\\u0029\",\n    \"\\u3229\", \"\\u0028\\u5341\\u0029\",\n    \"\\u322A\", \"\\u0028\\u6708\\u0029\",\n    \"\\u322B\", \"\\u0028\\u706B\\u0029\",\n    \"\\u322C\", \"\\u0028\\u6C34\\u0029\",\n    \"\\u322D\", \"\\u0028\\u6728\\u0029\",\n    \"\\u322E\", \"\\u0028\\u91D1\\u0029\",\n    \"\\u322F\", \"\\u0028\\u571F\\u0029\",\n    \"\\u3230\", \"\\u0028\\u65E5\\u0029\",\n    \"\\u3231\", \"\\u0028\\u682A\\u0029\",\n    \"\\u3232\", \"\\u0028\\u6709\\u0029\",\n    \"\\u3233\", \"\\u0028\\u793E\\u0029\",\n    \"\\u3234\", \"\\u0028\\u540D\\u0029\",\n    \"\\u3235\", \"\\u0028\\u7279\\u0029\",\n    \"\\u3236\", \"\\u0028\\u8CA1\\u0029\",\n    \"\\u3237\", \"\\u0028\\u795D\\u0029\",\n    \"\\u3238\", \"\\u0028\\u52B4\\u0029\",\n    \"\\u3239\", \"\\u0028\\u4EE3\\u0029\",\n    \"\\u323A\", \"\\u0028\\u547C\\u0029\",\n    \"\\u323B\", \"\\u0028\\u5B66\\u0029\",\n    \"\\u323C\", \"\\u0028\\u76E3\\u0029\",\n    \"\\u323D\", \"\\u0028\\u4F01\\u0029\",\n    \"\\u323E\", \"\\u0028\\u8CC7\\u0029\",\n    \"\\u323F\", \"\\u0028\\u5354\\u0029\",\n    \"\\u3240\", \"\\u0028\\u796D\\u0029\",\n    \"\\u3241\", \"\\u0028\\u4F11\\u0029\",\n    \"\\u3242\", \"\\u0028\\u81EA\\u0029\",\n    \"\\u3243\", \"\\u0028\\u81F3\\u0029\",\n    \"\\u32C0\", \"\\u0031\\u6708\",\n    \"\\u32C1\", \"\\u0032\\u6708\",\n    \"\\u32C2\", \"\\u0033\\u6708\",\n    \"\\u32C3\", \"\\u0034\\u6708\",\n    \"\\u32C4\", \"\\u0035\\u6708\",\n    \"\\u32C5\", \"\\u0036\\u6708\",\n    \"\\u32C6\", \"\\u0037\\u6708\",\n    \"\\u32C7\", \"\\u0038\\u6708\",\n    \"\\u32C8\", \"\\u0039\\u6708\",\n    \"\\u32C9\", \"\\u0031\\u0030\\u6708\",\n    \"\\u32CA\", \"\\u0031\\u0031\\u6708\",\n    \"\\u32CB\", \"\\u0031\\u0032\\u6708\",\n    \"\\u3358\", \"\\u0030\\u70B9\",\n    \"\\u3359\", \"\\u0031\\u70B9\",\n    \"\\u335A\", \"\\u0032\\u70B9\",\n    \"\\u335B\", \"\\u0033\\u70B9\",\n    \"\\u335C\", \"\\u0034\\u70B9\",\n    \"\\u335D\", \"\\u0035\\u70B9\",\n    \"\\u335E\", \"\\u0036\\u70B9\",\n    \"\\u335F\", \"\\u0037\\u70B9\",\n    \"\\u3360\", \"\\u0038\\u70B9\",\n    \"\\u3361\", \"\\u0039\\u70B9\",\n    \"\\u3362\", \"\\u0031\\u0030\\u70B9\",\n    \"\\u3363\", \"\\u0031\\u0031\\u70B9\",\n    \"\\u3364\", \"\\u0031\\u0032\\u70B9\",\n    \"\\u3365\", \"\\u0031\\u0033\\u70B9\",\n    \"\\u3366\", \"\\u0031\\u0034\\u70B9\",\n    \"\\u3367\", \"\\u0031\\u0035\\u70B9\",\n    \"\\u3368\", \"\\u0031\\u0036\\u70B9\",\n    \"\\u3369\", \"\\u0031\\u0037\\u70B9\",\n    \"\\u336A\", \"\\u0031\\u0038\\u70B9\",\n    \"\\u336B\", \"\\u0031\\u0039\\u70B9\",\n    \"\\u336C\", \"\\u0032\\u0030\\u70B9\",\n    \"\\u336D\", \"\\u0032\\u0031\\u70B9\",\n    \"\\u336E\", \"\\u0032\\u0032\\u70B9\",\n    \"\\u336F\", \"\\u0032\\u0033\\u70B9\",\n    \"\\u3370\", \"\\u0032\\u0034\\u70B9\",\n    \"\\u33E0\", \"\\u0031\\u65E5\",\n    \"\\u33E1\", \"\\u0032\\u65E5\",\n    \"\\u33E2\", \"\\u0033\\u65E5\",\n    \"\\u33E3\", \"\\u0034\\u65E5\",\n    \"\\u33E4\", \"\\u0035\\u65E5\",\n    \"\\u33E5\", \"\\u0036\\u65E5\",\n    \"\\u33E6\", \"\\u0037\\u65E5\",\n    \"\\u33E7\", \"\\u0038\\u65E5\",\n    \"\\u33E8\", \"\\u0039\\u65E5\",\n    \"\\u33E9\", \"\\u0031\\u0030\\u65E5\",\n    \"\\u33EA\", \"\\u0031\\u0031\\u65E5\",\n    \"\\u33EB\", \"\\u0031\\u0032\\u65E5\",\n    \"\\u33EC\", \"\\u0031\\u0033\\u65E5\",\n    \"\\u33ED\", \"\\u0031\\u0034\\u65E5\",\n    \"\\u33EE\", \"\\u0031\\u0035\\u65E5\",\n    \"\\u33EF\", \"\\u0031\\u0036\\u65E5\",\n    \"\\u33F0\", \"\\u0031\\u0037\\u65E5\",\n    \"\\u33F1\", \"\\u0031\\u0038\\u65E5\",\n    \"\\u33F2\", \"\\u0031\\u0039\\u65E5\",\n    \"\\u33F3\", \"\\u0032\\u0030\\u65E5\",\n    \"\\u33F4\", \"\\u0032\\u0031\\u65E5\",\n    \"\\u33F5\", \"\\u0032\\u0032\\u65E5\",\n    \"\\u33F6\", \"\\u0032\\u0033\\u65E5\",\n    \"\\u33F7\", \"\\u0032\\u0034\\u65E5\",\n    \"\\u33F8\", \"\\u0032\\u0035\\u65E5\",\n    \"\\u33F9\", \"\\u0032\\u0036\\u65E5\",\n    \"\\u33FA\", \"\\u0032\\u0037\\u65E5\",\n    \"\\u33FB\", \"\\u0032\\u0038\\u65E5\",\n    \"\\u33FC\", \"\\u0032\\u0039\\u65E5\",\n    \"\\u33FD\", \"\\u0033\\u0030\\u65E5\",\n    \"\\u33FE\", \"\\u0033\\u0031\\u65E5\",\n    \"\\uFB00\", \"\\u0066\\u0066\",\n    \"\\uFB01\", \"\\u0066\\u0069\",\n    \"\\uFB02\", \"\\u0066\\u006C\",\n    \"\\uFB03\", \"\\u0066\\u0066\\u0069\",\n    \"\\uFB04\", \"\\u0066\\u0066\\u006C\",\n    \"\\uFB05\", \"\\u017F\\u0074\",\n    \"\\uFB06\", \"\\u0073\\u0074\",\n    \"\\uFB13\", \"\\u0574\\u0576\",\n    \"\\uFB14\", \"\\u0574\\u0565\",\n    \"\\uFB15\", \"\\u0574\\u056B\",\n    \"\\uFB16\", \"\\u057E\\u0576\",\n    \"\\uFB17\", \"\\u0574\\u056D\",\n    \"\\uFB4F\", \"\\u05D0\\u05DC\",\n    \"\\uFB50\", \"\\u0671\",\n    \"\\uFB51\", \"\\u0671\",\n    \"\\uFB52\", \"\\u067B\",\n    \"\\uFB53\", \"\\u067B\",\n    \"\\uFB54\", \"\\u067B\",\n    \"\\uFB55\", \"\\u067B\",\n    \"\\uFB56\", \"\\u067E\",\n    \"\\uFB57\", \"\\u067E\",\n    \"\\uFB58\", \"\\u067E\",\n    \"\\uFB59\", \"\\u067E\",\n    \"\\uFB5A\", \"\\u0680\",\n    \"\\uFB5B\", \"\\u0680\",\n    \"\\uFB5C\", \"\\u0680\",\n    \"\\uFB5D\", \"\\u0680\",\n    \"\\uFB5E\", \"\\u067A\",\n    \"\\uFB5F\", \"\\u067A\",\n    \"\\uFB60\", \"\\u067A\",\n    \"\\uFB61\", \"\\u067A\",\n    \"\\uFB62\", \"\\u067F\",\n    \"\\uFB63\", \"\\u067F\",\n    \"\\uFB64\", \"\\u067F\",\n    \"\\uFB65\", \"\\u067F\",\n    \"\\uFB66\", \"\\u0679\",\n    \"\\uFB67\", \"\\u0679\",\n    \"\\uFB68\", \"\\u0679\",\n    \"\\uFB69\", \"\\u0679\",\n    \"\\uFB6A\", \"\\u06A4\",\n    \"\\uFB6B\", \"\\u06A4\",\n    \"\\uFB6C\", \"\\u06A4\",\n    \"\\uFB6D\", \"\\u06A4\",\n    \"\\uFB6E\", \"\\u06A6\",\n    \"\\uFB6F\", \"\\u06A6\",\n    \"\\uFB70\", \"\\u06A6\",\n    \"\\uFB71\", \"\\u06A6\",\n    \"\\uFB72\", \"\\u0684\",\n    \"\\uFB73\", \"\\u0684\",\n    \"\\uFB74\", \"\\u0684\",\n    \"\\uFB75\", \"\\u0684\",\n    \"\\uFB76\", \"\\u0683\",\n    \"\\uFB77\", \"\\u0683\",\n    \"\\uFB78\", \"\\u0683\",\n    \"\\uFB79\", \"\\u0683\",\n    \"\\uFB7A\", \"\\u0686\",\n    \"\\uFB7B\", \"\\u0686\",\n    \"\\uFB7C\", \"\\u0686\",\n    \"\\uFB7D\", \"\\u0686\",\n    \"\\uFB7E\", \"\\u0687\",\n    \"\\uFB7F\", \"\\u0687\",\n    \"\\uFB80\", \"\\u0687\",\n    \"\\uFB81\", \"\\u0687\",\n    \"\\uFB82\", \"\\u068D\",\n    \"\\uFB83\", \"\\u068D\",\n    \"\\uFB84\", \"\\u068C\",\n    \"\\uFB85\", \"\\u068C\",\n    \"\\uFB86\", \"\\u068E\",\n    \"\\uFB87\", \"\\u068E\",\n    \"\\uFB88\", \"\\u0688\",\n    \"\\uFB89\", \"\\u0688\",\n    \"\\uFB8A\", \"\\u0698\",\n    \"\\uFB8B\", \"\\u0698\",\n    \"\\uFB8C\", \"\\u0691\",\n    \"\\uFB8D\", \"\\u0691\",\n    \"\\uFB8E\", \"\\u06A9\",\n    \"\\uFB8F\", \"\\u06A9\",\n    \"\\uFB90\", \"\\u06A9\",\n    \"\\uFB91\", \"\\u06A9\",\n    \"\\uFB92\", \"\\u06AF\",\n    \"\\uFB93\", \"\\u06AF\",\n    \"\\uFB94\", \"\\u06AF\",\n    \"\\uFB95\", \"\\u06AF\",\n    \"\\uFB96\", \"\\u06B3\",\n    \"\\uFB97\", \"\\u06B3\",\n    \"\\uFB98\", \"\\u06B3\",\n    \"\\uFB99\", \"\\u06B3\",\n    \"\\uFB9A\", \"\\u06B1\",\n    \"\\uFB9B\", \"\\u06B1\",\n    \"\\uFB9C\", \"\\u06B1\",\n    \"\\uFB9D\", \"\\u06B1\",\n    \"\\uFB9E\", \"\\u06BA\",\n    \"\\uFB9F\", \"\\u06BA\",\n    \"\\uFBA0\", \"\\u06BB\",\n    \"\\uFBA1\", \"\\u06BB\",\n    \"\\uFBA2\", \"\\u06BB\",\n    \"\\uFBA3\", \"\\u06BB\",\n    \"\\uFBA4\", \"\\u06C0\",\n    \"\\uFBA5\", \"\\u06C0\",\n    \"\\uFBA6\", \"\\u06C1\",\n    \"\\uFBA7\", \"\\u06C1\",\n    \"\\uFBA8\", \"\\u06C1\",\n    \"\\uFBA9\", \"\\u06C1\",\n    \"\\uFBAA\", \"\\u06BE\",\n    \"\\uFBAB\", \"\\u06BE\",\n    \"\\uFBAC\", \"\\u06BE\",\n    \"\\uFBAD\", \"\\u06BE\",\n    \"\\uFBAE\", \"\\u06D2\",\n    \"\\uFBAF\", \"\\u06D2\",\n    \"\\uFBB0\", \"\\u06D3\",\n    \"\\uFBB1\", \"\\u06D3\",\n    \"\\uFBD3\", \"\\u06AD\",\n    \"\\uFBD4\", \"\\u06AD\",\n    \"\\uFBD5\", \"\\u06AD\",\n    \"\\uFBD6\", \"\\u06AD\",\n    \"\\uFBD7\", \"\\u06C7\",\n    \"\\uFBD8\", \"\\u06C7\",\n    \"\\uFBD9\", \"\\u06C6\",\n    \"\\uFBDA\", \"\\u06C6\",\n    \"\\uFBDB\", \"\\u06C8\",\n    \"\\uFBDC\", \"\\u06C8\",\n    \"\\uFBDD\", \"\\u0677\",\n    \"\\uFBDE\", \"\\u06CB\",\n    \"\\uFBDF\", \"\\u06CB\",\n    \"\\uFBE0\", \"\\u06C5\",\n    \"\\uFBE1\", \"\\u06C5\",\n    \"\\uFBE2\", \"\\u06C9\",\n    \"\\uFBE3\", \"\\u06C9\",\n    \"\\uFBE4\", \"\\u06D0\",\n    \"\\uFBE5\", \"\\u06D0\",\n    \"\\uFBE6\", \"\\u06D0\",\n    \"\\uFBE7\", \"\\u06D0\",\n    \"\\uFBE8\", \"\\u0649\",\n    \"\\uFBE9\", \"\\u0649\",\n    \"\\uFBEA\", \"\\u0626\\u0627\",\n    \"\\uFBEB\", \"\\u0626\\u0627\",\n    \"\\uFBEC\", \"\\u0626\\u06D5\",\n    \"\\uFBED\", \"\\u0626\\u06D5\",\n    \"\\uFBEE\", \"\\u0626\\u0648\",\n    \"\\uFBEF\", \"\\u0626\\u0648\",\n    \"\\uFBF0\", \"\\u0626\\u06C7\",\n    \"\\uFBF1\", \"\\u0626\\u06C7\",\n    \"\\uFBF2\", \"\\u0626\\u06C6\",\n    \"\\uFBF3\", \"\\u0626\\u06C6\",\n    \"\\uFBF4\", \"\\u0626\\u06C8\",\n    \"\\uFBF5\", \"\\u0626\\u06C8\",\n    \"\\uFBF6\", \"\\u0626\\u06D0\",\n    \"\\uFBF7\", \"\\u0626\\u06D0\",\n    \"\\uFBF8\", \"\\u0626\\u06D0\",\n    \"\\uFBF9\", \"\\u0626\\u0649\",\n    \"\\uFBFA\", \"\\u0626\\u0649\",\n    \"\\uFBFB\", \"\\u0626\\u0649\",\n    \"\\uFBFC\", \"\\u06CC\",\n    \"\\uFBFD\", \"\\u06CC\",\n    \"\\uFBFE\", \"\\u06CC\",\n    \"\\uFBFF\", \"\\u06CC\",\n    \"\\uFC00\", \"\\u0626\\u062C\",\n    \"\\uFC01\", \"\\u0626\\u062D\",\n    \"\\uFC02\", \"\\u0626\\u0645\",\n    \"\\uFC03\", \"\\u0626\\u0649\",\n    \"\\uFC04\", \"\\u0626\\u064A\",\n    \"\\uFC05\", \"\\u0628\\u062C\",\n    \"\\uFC06\", \"\\u0628\\u062D\",\n    \"\\uFC07\", \"\\u0628\\u062E\",\n    \"\\uFC08\", \"\\u0628\\u0645\",\n    \"\\uFC09\", \"\\u0628\\u0649\",\n    \"\\uFC0A\", \"\\u0628\\u064A\",\n    \"\\uFC0B\", \"\\u062A\\u062C\",\n    \"\\uFC0C\", \"\\u062A\\u062D\",\n    \"\\uFC0D\", \"\\u062A\\u062E\",\n    \"\\uFC0E\", \"\\u062A\\u0645\",\n    \"\\uFC0F\", \"\\u062A\\u0649\",\n    \"\\uFC10\", \"\\u062A\\u064A\",\n    \"\\uFC11\", \"\\u062B\\u062C\",\n    \"\\uFC12\", \"\\u062B\\u0645\",\n    \"\\uFC13\", \"\\u062B\\u0649\",\n    \"\\uFC14\", \"\\u062B\\u064A\",\n    \"\\uFC15\", \"\\u062C\\u062D\",\n    \"\\uFC16\", \"\\u062C\\u0645\",\n    \"\\uFC17\", \"\\u062D\\u062C\",\n    \"\\uFC18\", \"\\u062D\\u0645\",\n    \"\\uFC19\", \"\\u062E\\u062C\",\n    \"\\uFC1A\", \"\\u062E\\u062D\",\n    \"\\uFC1B\", \"\\u062E\\u0645\",\n    \"\\uFC1C\", \"\\u0633\\u062C\",\n    \"\\uFC1D\", \"\\u0633\\u062D\",\n    \"\\uFC1E\", \"\\u0633\\u062E\",\n    \"\\uFC1F\", \"\\u0633\\u0645\",\n    \"\\uFC20\", \"\\u0635\\u062D\",\n    \"\\uFC21\", \"\\u0635\\u0645\",\n    \"\\uFC22\", \"\\u0636\\u062C\",\n    \"\\uFC23\", \"\\u0636\\u062D\",\n    \"\\uFC24\", \"\\u0636\\u062E\",\n    \"\\uFC25\", \"\\u0636\\u0645\",\n    \"\\uFC26\", \"\\u0637\\u062D\",\n    \"\\uFC27\", \"\\u0637\\u0645\",\n    \"\\uFC28\", \"\\u0638\\u0645\",\n    \"\\uFC29\", \"\\u0639\\u062C\",\n    \"\\uFC2A\", \"\\u0639\\u0645\",\n    \"\\uFC2B\", \"\\u063A\\u062C\",\n    \"\\uFC2C\", \"\\u063A\\u0645\",\n    \"\\uFC2D\", \"\\u0641\\u062C\",\n    \"\\uFC2E\", \"\\u0641\\u062D\",\n    \"\\uFC2F\", \"\\u0641\\u062E\",\n    \"\\uFC30\", \"\\u0641\\u0645\",\n    \"\\uFC31\", \"\\u0641\\u0649\",\n    \"\\uFC32\", \"\\u0641\\u064A\",\n    \"\\uFC33\", \"\\u0642\\u062D\",\n    \"\\uFC34\", \"\\u0642\\u0645\",\n    \"\\uFC35\", \"\\u0642\\u0649\",\n    \"\\uFC36\", \"\\u0642\\u064A\",\n    \"\\uFC37\", \"\\u0643\\u0627\",\n    \"\\uFC38\", \"\\u0643\\u062C\",\n    \"\\uFC39\", \"\\u0643\\u062D\",\n    \"\\uFC3A\", \"\\u0643\\u062E\",\n    \"\\uFC3B\", \"\\u0643\\u0644\",\n    \"\\uFC3C\", \"\\u0643\\u0645\",\n    \"\\uFC3D\", \"\\u0643\\u0649\",\n    \"\\uFC3E\", \"\\u0643\\u064A\",\n    \"\\uFC3F\", \"\\u0644\\u062C\",\n    \"\\uFC40\", \"\\u0644\\u062D\",\n    \"\\uFC41\", \"\\u0644\\u062E\",\n    \"\\uFC42\", \"\\u0644\\u0645\",\n    \"\\uFC43\", \"\\u0644\\u0649\",\n    \"\\uFC44\", \"\\u0644\\u064A\",\n    \"\\uFC45\", \"\\u0645\\u062C\",\n    \"\\uFC46\", \"\\u0645\\u062D\",\n    \"\\uFC47\", \"\\u0645\\u062E\",\n    \"\\uFC48\", \"\\u0645\\u0645\",\n    \"\\uFC49\", \"\\u0645\\u0649\",\n    \"\\uFC4A\", \"\\u0645\\u064A\",\n    \"\\uFC4B\", \"\\u0646\\u062C\",\n    \"\\uFC4C\", \"\\u0646\\u062D\",\n    \"\\uFC4D\", \"\\u0646\\u062E\",\n    \"\\uFC4E\", \"\\u0646\\u0645\",\n    \"\\uFC4F\", \"\\u0646\\u0649\",\n    \"\\uFC50\", \"\\u0646\\u064A\",\n    \"\\uFC51\", \"\\u0647\\u062C\",\n    \"\\uFC52\", \"\\u0647\\u0645\",\n    \"\\uFC53\", \"\\u0647\\u0649\",\n    \"\\uFC54\", \"\\u0647\\u064A\",\n    \"\\uFC55\", \"\\u064A\\u062C\",\n    \"\\uFC56\", \"\\u064A\\u062D\",\n    \"\\uFC57\", \"\\u064A\\u062E\",\n    \"\\uFC58\", \"\\u064A\\u0645\",\n    \"\\uFC59\", \"\\u064A\\u0649\",\n    \"\\uFC5A\", \"\\u064A\\u064A\",\n    \"\\uFC5B\", \"\\u0630\\u0670\",\n    \"\\uFC5C\", \"\\u0631\\u0670\",\n    \"\\uFC5D\", \"\\u0649\\u0670\",\n    \"\\uFC5E\", \"\\u0020\\u064C\\u0651\",\n    \"\\uFC5F\", \"\\u0020\\u064D\\u0651\",\n    \"\\uFC60\", \"\\u0020\\u064E\\u0651\",\n    \"\\uFC61\", \"\\u0020\\u064F\\u0651\",\n    \"\\uFC62\", \"\\u0020\\u0650\\u0651\",\n    \"\\uFC63\", \"\\u0020\\u0651\\u0670\",\n    \"\\uFC64\", \"\\u0626\\u0631\",\n    \"\\uFC65\", \"\\u0626\\u0632\",\n    \"\\uFC66\", \"\\u0626\\u0645\",\n    \"\\uFC67\", \"\\u0626\\u0646\",\n    \"\\uFC68\", \"\\u0626\\u0649\",\n    \"\\uFC69\", \"\\u0626\\u064A\",\n    \"\\uFC6A\", \"\\u0628\\u0631\",\n    \"\\uFC6B\", \"\\u0628\\u0632\",\n    \"\\uFC6C\", \"\\u0628\\u0645\",\n    \"\\uFC6D\", \"\\u0628\\u0646\",\n    \"\\uFC6E\", \"\\u0628\\u0649\",\n    \"\\uFC6F\", \"\\u0628\\u064A\",\n    \"\\uFC70\", \"\\u062A\\u0631\",\n    \"\\uFC71\", \"\\u062A\\u0632\",\n    \"\\uFC72\", \"\\u062A\\u0645\",\n    \"\\uFC73\", \"\\u062A\\u0646\",\n    \"\\uFC74\", \"\\u062A\\u0649\",\n    \"\\uFC75\", \"\\u062A\\u064A\",\n    \"\\uFC76\", \"\\u062B\\u0631\",\n    \"\\uFC77\", \"\\u062B\\u0632\",\n    \"\\uFC78\", \"\\u062B\\u0645\",\n    \"\\uFC79\", \"\\u062B\\u0646\",\n    \"\\uFC7A\", \"\\u062B\\u0649\",\n    \"\\uFC7B\", \"\\u062B\\u064A\",\n    \"\\uFC7C\", \"\\u0641\\u0649\",\n    \"\\uFC7D\", \"\\u0641\\u064A\",\n    \"\\uFC7E\", \"\\u0642\\u0649\",\n    \"\\uFC7F\", \"\\u0642\\u064A\",\n    \"\\uFC80\", \"\\u0643\\u0627\",\n    \"\\uFC81\", \"\\u0643\\u0644\",\n    \"\\uFC82\", \"\\u0643\\u0645\",\n    \"\\uFC83\", \"\\u0643\\u0649\",\n    \"\\uFC84\", \"\\u0643\\u064A\",\n    \"\\uFC85\", \"\\u0644\\u0645\",\n    \"\\uFC86\", \"\\u0644\\u0649\",\n    \"\\uFC87\", \"\\u0644\\u064A\",\n    \"\\uFC88\", \"\\u0645\\u0627\",\n    \"\\uFC89\", \"\\u0645\\u0645\",\n    \"\\uFC8A\", \"\\u0646\\u0631\",\n    \"\\uFC8B\", \"\\u0646\\u0632\",\n    \"\\uFC8C\", \"\\u0646\\u0645\",\n    \"\\uFC8D\", \"\\u0646\\u0646\",\n    \"\\uFC8E\", \"\\u0646\\u0649\",\n    \"\\uFC8F\", \"\\u0646\\u064A\",\n    \"\\uFC90\", \"\\u0649\\u0670\",\n    \"\\uFC91\", \"\\u064A\\u0631\",\n    \"\\uFC92\", \"\\u064A\\u0632\",\n    \"\\uFC93\", \"\\u064A\\u0645\",\n    \"\\uFC94\", \"\\u064A\\u0646\",\n    \"\\uFC95\", \"\\u064A\\u0649\",\n    \"\\uFC96\", \"\\u064A\\u064A\",\n    \"\\uFC97\", \"\\u0626\\u062C\",\n    \"\\uFC98\", \"\\u0626\\u062D\",\n    \"\\uFC99\", \"\\u0626\\u062E\",\n    \"\\uFC9A\", \"\\u0626\\u0645\",\n    \"\\uFC9B\", \"\\u0626\\u0647\",\n    \"\\uFC9C\", \"\\u0628\\u062C\",\n    \"\\uFC9D\", \"\\u0628\\u062D\",\n    \"\\uFC9E\", \"\\u0628\\u062E\",\n    \"\\uFC9F\", \"\\u0628\\u0645\",\n    \"\\uFCA0\", \"\\u0628\\u0647\",\n    \"\\uFCA1\", \"\\u062A\\u062C\",\n    \"\\uFCA2\", \"\\u062A\\u062D\",\n    \"\\uFCA3\", \"\\u062A\\u062E\",\n    \"\\uFCA4\", \"\\u062A\\u0645\",\n    \"\\uFCA5\", \"\\u062A\\u0647\",\n    \"\\uFCA6\", \"\\u062B\\u0645\",\n    \"\\uFCA7\", \"\\u062C\\u062D\",\n    \"\\uFCA8\", \"\\u062C\\u0645\",\n    \"\\uFCA9\", \"\\u062D\\u062C\",\n    \"\\uFCAA\", \"\\u062D\\u0645\",\n    \"\\uFCAB\", \"\\u062E\\u062C\",\n    \"\\uFCAC\", \"\\u062E\\u0645\",\n    \"\\uFCAD\", \"\\u0633\\u062C\",\n    \"\\uFCAE\", \"\\u0633\\u062D\",\n    \"\\uFCAF\", \"\\u0633\\u062E\",\n    \"\\uFCB0\", \"\\u0633\\u0645\",\n    \"\\uFCB1\", \"\\u0635\\u062D\",\n    \"\\uFCB2\", \"\\u0635\\u062E\",\n    \"\\uFCB3\", \"\\u0635\\u0645\",\n    \"\\uFCB4\", \"\\u0636\\u062C\",\n    \"\\uFCB5\", \"\\u0636\\u062D\",\n    \"\\uFCB6\", \"\\u0636\\u062E\",\n    \"\\uFCB7\", \"\\u0636\\u0645\",\n    \"\\uFCB8\", \"\\u0637\\u062D\",\n    \"\\uFCB9\", \"\\u0638\\u0645\",\n    \"\\uFCBA\", \"\\u0639\\u062C\",\n    \"\\uFCBB\", \"\\u0639\\u0645\",\n    \"\\uFCBC\", \"\\u063A\\u062C\",\n    \"\\uFCBD\", \"\\u063A\\u0645\",\n    \"\\uFCBE\", \"\\u0641\\u062C\",\n    \"\\uFCBF\", \"\\u0641\\u062D\",\n    \"\\uFCC0\", \"\\u0641\\u062E\",\n    \"\\uFCC1\", \"\\u0641\\u0645\",\n    \"\\uFCC2\", \"\\u0642\\u062D\",\n    \"\\uFCC3\", \"\\u0642\\u0645\",\n    \"\\uFCC4\", \"\\u0643\\u062C\",\n    \"\\uFCC5\", \"\\u0643\\u062D\",\n    \"\\uFCC6\", \"\\u0643\\u062E\",\n    \"\\uFCC7\", \"\\u0643\\u0644\",\n    \"\\uFCC8\", \"\\u0643\\u0645\",\n    \"\\uFCC9\", \"\\u0644\\u062C\",\n    \"\\uFCCA\", \"\\u0644\\u062D\",\n    \"\\uFCCB\", \"\\u0644\\u062E\",\n    \"\\uFCCC\", \"\\u0644\\u0645\",\n    \"\\uFCCD\", \"\\u0644\\u0647\",\n    \"\\uFCCE\", \"\\u0645\\u062C\",\n    \"\\uFCCF\", \"\\u0645\\u062D\",\n    \"\\uFCD0\", \"\\u0645\\u062E\",\n    \"\\uFCD1\", \"\\u0645\\u0645\",\n    \"\\uFCD2\", \"\\u0646\\u062C\",\n    \"\\uFCD3\", \"\\u0646\\u062D\",\n    \"\\uFCD4\", \"\\u0646\\u062E\",\n    \"\\uFCD5\", \"\\u0646\\u0645\",\n    \"\\uFCD6\", \"\\u0646\\u0647\",\n    \"\\uFCD7\", \"\\u0647\\u062C\",\n    \"\\uFCD8\", \"\\u0647\\u0645\",\n    \"\\uFCD9\", \"\\u0647\\u0670\",\n    \"\\uFCDA\", \"\\u064A\\u062C\",\n    \"\\uFCDB\", \"\\u064A\\u062D\",\n    \"\\uFCDC\", \"\\u064A\\u062E\",\n    \"\\uFCDD\", \"\\u064A\\u0645\",\n    \"\\uFCDE\", \"\\u064A\\u0647\",\n    \"\\uFCDF\", \"\\u0626\\u0645\",\n    \"\\uFCE0\", \"\\u0626\\u0647\",\n    \"\\uFCE1\", \"\\u0628\\u0645\",\n    \"\\uFCE2\", \"\\u0628\\u0647\",\n    \"\\uFCE3\", \"\\u062A\\u0645\",\n    \"\\uFCE4\", \"\\u062A\\u0647\",\n    \"\\uFCE5\", \"\\u062B\\u0645\",\n    \"\\uFCE6\", \"\\u062B\\u0647\",\n    \"\\uFCE7\", \"\\u0633\\u0645\",\n    \"\\uFCE8\", \"\\u0633\\u0647\",\n    \"\\uFCE9\", \"\\u0634\\u0645\",\n    \"\\uFCEA\", \"\\u0634\\u0647\",\n    \"\\uFCEB\", \"\\u0643\\u0644\",\n    \"\\uFCEC\", \"\\u0643\\u0645\",\n    \"\\uFCED\", \"\\u0644\\u0645\",\n    \"\\uFCEE\", \"\\u0646\\u0645\",\n    \"\\uFCEF\", \"\\u0646\\u0647\",\n    \"\\uFCF0\", \"\\u064A\\u0645\",\n    \"\\uFCF1\", \"\\u064A\\u0647\",\n    \"\\uFCF2\", \"\\u0640\\u064E\\u0651\",\n    \"\\uFCF3\", \"\\u0640\\u064F\\u0651\",\n    \"\\uFCF4\", \"\\u0640\\u0650\\u0651\",\n    \"\\uFCF5\", \"\\u0637\\u0649\",\n    \"\\uFCF6\", \"\\u0637\\u064A\",\n    \"\\uFCF7\", \"\\u0639\\u0649\",\n    \"\\uFCF8\", \"\\u0639\\u064A\",\n    \"\\uFCF9\", \"\\u063A\\u0649\",\n    \"\\uFCFA\", \"\\u063A\\u064A\",\n    \"\\uFCFB\", \"\\u0633\\u0649\",\n    \"\\uFCFC\", \"\\u0633\\u064A\",\n    \"\\uFCFD\", \"\\u0634\\u0649\",\n    \"\\uFCFE\", \"\\u0634\\u064A\",\n    \"\\uFCFF\", \"\\u062D\\u0649\",\n    \"\\uFD00\", \"\\u062D\\u064A\",\n    \"\\uFD01\", \"\\u062C\\u0649\",\n    \"\\uFD02\", \"\\u062C\\u064A\",\n    \"\\uFD03\", \"\\u062E\\u0649\",\n    \"\\uFD04\", \"\\u062E\\u064A\",\n    \"\\uFD05\", \"\\u0635\\u0649\",\n    \"\\uFD06\", \"\\u0635\\u064A\",\n    \"\\uFD07\", \"\\u0636\\u0649\",\n    \"\\uFD08\", \"\\u0636\\u064A\",\n    \"\\uFD09\", \"\\u0634\\u062C\",\n    \"\\uFD0A\", \"\\u0634\\u062D\",\n    \"\\uFD0B\", \"\\u0634\\u062E\",\n    \"\\uFD0C\", \"\\u0634\\u0645\",\n    \"\\uFD0D\", \"\\u0634\\u0631\",\n    \"\\uFD0E\", \"\\u0633\\u0631\",\n    \"\\uFD0F\", \"\\u0635\\u0631\",\n    \"\\uFD10\", \"\\u0636\\u0631\",\n    \"\\uFD11\", \"\\u0637\\u0649\",\n    \"\\uFD12\", \"\\u0637\\u064A\",\n    \"\\uFD13\", \"\\u0639\\u0649\",\n    \"\\uFD14\", \"\\u0639\\u064A\",\n    \"\\uFD15\", \"\\u063A\\u0649\",\n    \"\\uFD16\", \"\\u063A\\u064A\",\n    \"\\uFD17\", \"\\u0633\\u0649\",\n    \"\\uFD18\", \"\\u0633\\u064A\",\n    \"\\uFD19\", \"\\u0634\\u0649\",\n    \"\\uFD1A\", \"\\u0634\\u064A\",\n    \"\\uFD1B\", \"\\u062D\\u0649\",\n    \"\\uFD1C\", \"\\u062D\\u064A\",\n    \"\\uFD1D\", \"\\u062C\\u0649\",\n    \"\\uFD1E\", \"\\u062C\\u064A\",\n    \"\\uFD1F\", \"\\u062E\\u0649\",\n    \"\\uFD20\", \"\\u062E\\u064A\",\n    \"\\uFD21\", \"\\u0635\\u0649\",\n    \"\\uFD22\", \"\\u0635\\u064A\",\n    \"\\uFD23\", \"\\u0636\\u0649\",\n    \"\\uFD24\", \"\\u0636\\u064A\",\n    \"\\uFD25\", \"\\u0634\\u062C\",\n    \"\\uFD26\", \"\\u0634\\u062D\",\n    \"\\uFD27\", \"\\u0634\\u062E\",\n    \"\\uFD28\", \"\\u0634\\u0645\",\n    \"\\uFD29\", \"\\u0634\\u0631\",\n    \"\\uFD2A\", \"\\u0633\\u0631\",\n    \"\\uFD2B\", \"\\u0635\\u0631\",\n    \"\\uFD2C\", \"\\u0636\\u0631\",\n    \"\\uFD2D\", \"\\u0634\\u062C\",\n    \"\\uFD2E\", \"\\u0634\\u062D\",\n    \"\\uFD2F\", \"\\u0634\\u062E\",\n    \"\\uFD30\", \"\\u0634\\u0645\",\n    \"\\uFD31\", \"\\u0633\\u0647\",\n    \"\\uFD32\", \"\\u0634\\u0647\",\n    \"\\uFD33\", \"\\u0637\\u0645\",\n    \"\\uFD34\", \"\\u0633\\u062C\",\n    \"\\uFD35\", \"\\u0633\\u062D\",\n    \"\\uFD36\", \"\\u0633\\u062E\",\n    \"\\uFD37\", \"\\u0634\\u062C\",\n    \"\\uFD38\", \"\\u0634\\u062D\",\n    \"\\uFD39\", \"\\u0634\\u062E\",\n    \"\\uFD3A\", \"\\u0637\\u0645\",\n    \"\\uFD3B\", \"\\u0638\\u0645\",\n    \"\\uFD3C\", \"\\u0627\\u064B\",\n    \"\\uFD3D\", \"\\u0627\\u064B\",\n    \"\\uFD50\", \"\\u062A\\u062C\\u0645\",\n    \"\\uFD51\", \"\\u062A\\u062D\\u062C\",\n    \"\\uFD52\", \"\\u062A\\u062D\\u062C\",\n    \"\\uFD53\", \"\\u062A\\u062D\\u0645\",\n    \"\\uFD54\", \"\\u062A\\u062E\\u0645\",\n    \"\\uFD55\", \"\\u062A\\u0645\\u062C\",\n    \"\\uFD56\", \"\\u062A\\u0645\\u062D\",\n    \"\\uFD57\", \"\\u062A\\u0645\\u062E\",\n    \"\\uFD58\", \"\\u062C\\u0645\\u062D\",\n    \"\\uFD59\", \"\\u062C\\u0645\\u062D\",\n    \"\\uFD5A\", \"\\u062D\\u0645\\u064A\",\n    \"\\uFD5B\", \"\\u062D\\u0645\\u0649\",\n    \"\\uFD5C\", \"\\u0633\\u062D\\u062C\",\n    \"\\uFD5D\", \"\\u0633\\u062C\\u062D\",\n    \"\\uFD5E\", \"\\u0633\\u062C\\u0649\",\n    \"\\uFD5F\", \"\\u0633\\u0645\\u062D\",\n    \"\\uFD60\", \"\\u0633\\u0645\\u062D\",\n    \"\\uFD61\", \"\\u0633\\u0645\\u062C\",\n    \"\\uFD62\", \"\\u0633\\u0645\\u0645\",\n    \"\\uFD63\", \"\\u0633\\u0645\\u0645\",\n    \"\\uFD64\", \"\\u0635\\u062D\\u062D\",\n    \"\\uFD65\", \"\\u0635\\u062D\\u062D\",\n    \"\\uFD66\", \"\\u0635\\u0645\\u0645\",\n    \"\\uFD67\", \"\\u0634\\u062D\\u0645\",\n    \"\\uFD68\", \"\\u0634\\u062D\\u0645\",\n    \"\\uFD69\", \"\\u0634\\u062C\\u064A\",\n    \"\\uFD6A\", \"\\u0634\\u0645\\u062E\",\n    \"\\uFD6B\", \"\\u0634\\u0645\\u062E\",\n    \"\\uFD6C\", \"\\u0634\\u0645\\u0645\",\n    \"\\uFD6D\", \"\\u0634\\u0645\\u0645\",\n    \"\\uFD6E\", \"\\u0636\\u062D\\u0649\",\n    \"\\uFD6F\", \"\\u0636\\u062E\\u0645\",\n    \"\\uFD70\", \"\\u0636\\u062E\\u0645\",\n    \"\\uFD71\", \"\\u0637\\u0645\\u062D\",\n    \"\\uFD72\", \"\\u0637\\u0645\\u062D\",\n    \"\\uFD73\", \"\\u0637\\u0645\\u0645\",\n    \"\\uFD74\", \"\\u0637\\u0645\\u064A\",\n    \"\\uFD75\", \"\\u0639\\u062C\\u0645\",\n    \"\\uFD76\", \"\\u0639\\u0645\\u0645\",\n    \"\\uFD77\", \"\\u0639\\u0645\\u0645\",\n    \"\\uFD78\", \"\\u0639\\u0645\\u0649\",\n    \"\\uFD79\", \"\\u063A\\u0645\\u0645\",\n    \"\\uFD7A\", \"\\u063A\\u0645\\u064A\",\n    \"\\uFD7B\", \"\\u063A\\u0645\\u0649\",\n    \"\\uFD7C\", \"\\u0641\\u062E\\u0645\",\n    \"\\uFD7D\", \"\\u0641\\u062E\\u0645\",\n    \"\\uFD7E\", \"\\u0642\\u0645\\u062D\",\n    \"\\uFD7F\", \"\\u0642\\u0645\\u0645\",\n    \"\\uFD80\", \"\\u0644\\u062D\\u0645\",\n    \"\\uFD81\", \"\\u0644\\u062D\\u064A\",\n    \"\\uFD82\", \"\\u0644\\u062D\\u0649\",\n    \"\\uFD83\", \"\\u0644\\u062C\\u062C\",\n    \"\\uFD84\", \"\\u0644\\u062C\\u062C\",\n    \"\\uFD85\", \"\\u0644\\u062E\\u0645\",\n    \"\\uFD86\", \"\\u0644\\u062E\\u0645\",\n    \"\\uFD87\", \"\\u0644\\u0645\\u062D\",\n    \"\\uFD88\", \"\\u0644\\u0645\\u062D\",\n    \"\\uFD89\", \"\\u0645\\u062D\\u062C\",\n    \"\\uFD8A\", \"\\u0645\\u062D\\u0645\",\n    \"\\uFD8B\", \"\\u0645\\u062D\\u064A\",\n    \"\\uFD8C\", \"\\u0645\\u062C\\u062D\",\n    \"\\uFD8D\", \"\\u0645\\u062C\\u0645\",\n    \"\\uFD8E\", \"\\u0645\\u062E\\u062C\",\n    \"\\uFD8F\", \"\\u0645\\u062E\\u0645\",\n    \"\\uFD92\", \"\\u0645\\u062C\\u062E\",\n    \"\\uFD93\", \"\\u0647\\u0645\\u062C\",\n    \"\\uFD94\", \"\\u0647\\u0645\\u0645\",\n    \"\\uFD95\", \"\\u0646\\u062D\\u0645\",\n    \"\\uFD96\", \"\\u0646\\u062D\\u0649\",\n    \"\\uFD97\", \"\\u0646\\u062C\\u0645\",\n    \"\\uFD98\", \"\\u0646\\u062C\\u0645\",\n    \"\\uFD99\", \"\\u0646\\u062C\\u0649\",\n    \"\\uFD9A\", \"\\u0646\\u0645\\u064A\",\n    \"\\uFD9B\", \"\\u0646\\u0645\\u0649\",\n    \"\\uFD9C\", \"\\u064A\\u0645\\u0645\",\n    \"\\uFD9D\", \"\\u064A\\u0645\\u0645\",\n    \"\\uFD9E\", \"\\u0628\\u062E\\u064A\",\n    \"\\uFD9F\", \"\\u062A\\u062C\\u064A\",\n    \"\\uFDA0\", \"\\u062A\\u062C\\u0649\",\n    \"\\uFDA1\", \"\\u062A\\u062E\\u064A\",\n    \"\\uFDA2\", \"\\u062A\\u062E\\u0649\",\n    \"\\uFDA3\", \"\\u062A\\u0645\\u064A\",\n    \"\\uFDA4\", \"\\u062A\\u0645\\u0649\",\n    \"\\uFDA5\", \"\\u062C\\u0645\\u064A\",\n    \"\\uFDA6\", \"\\u062C\\u062D\\u0649\",\n    \"\\uFDA7\", \"\\u062C\\u0645\\u0649\",\n    \"\\uFDA8\", \"\\u0633\\u062E\\u0649\",\n    \"\\uFDA9\", \"\\u0635\\u062D\\u064A\",\n    \"\\uFDAA\", \"\\u0634\\u062D\\u064A\",\n    \"\\uFDAB\", \"\\u0636\\u062D\\u064A\",\n    \"\\uFDAC\", \"\\u0644\\u062C\\u064A\",\n    \"\\uFDAD\", \"\\u0644\\u0645\\u064A\",\n    \"\\uFDAE\", \"\\u064A\\u062D\\u064A\",\n    \"\\uFDAF\", \"\\u064A\\u062C\\u064A\",\n    \"\\uFDB0\", \"\\u064A\\u0645\\u064A\",\n    \"\\uFDB1\", \"\\u0645\\u0645\\u064A\",\n    \"\\uFDB2\", \"\\u0642\\u0645\\u064A\",\n    \"\\uFDB3\", \"\\u0646\\u062D\\u064A\",\n    \"\\uFDB4\", \"\\u0642\\u0645\\u062D\",\n    \"\\uFDB5\", \"\\u0644\\u062D\\u0645\",\n    \"\\uFDB6\", \"\\u0639\\u0645\\u064A\",\n    \"\\uFDB7\", \"\\u0643\\u0645\\u064A\",\n    \"\\uFDB8\", \"\\u0646\\u062C\\u062D\",\n    \"\\uFDB9\", \"\\u0645\\u062E\\u064A\",\n    \"\\uFDBA\", \"\\u0644\\u062C\\u0645\",\n    \"\\uFDBB\", \"\\u0643\\u0645\\u0645\",\n    \"\\uFDBC\", \"\\u0644\\u062C\\u0645\",\n    \"\\uFDBD\", \"\\u0646\\u062C\\u062D\",\n    \"\\uFDBE\", \"\\u062C\\u062D\\u064A\",\n    \"\\uFDBF\", \"\\u062D\\u062C\\u064A\",\n    \"\\uFDC0\", \"\\u0645\\u062C\\u064A\",\n    \"\\uFDC1\", \"\\u0641\\u0645\\u064A\",\n    \"\\uFDC2\", \"\\u0628\\u062D\\u064A\",\n    \"\\uFDC3\", \"\\u0643\\u0645\\u0645\",\n    \"\\uFDC4\", \"\\u0639\\u062C\\u0645\",\n    \"\\uFDC5\", \"\\u0635\\u0645\\u0645\",\n    \"\\uFDC6\", \"\\u0633\\u062E\\u064A\",\n    \"\\uFDC7\", \"\\u0646\\u062C\\u064A\",\n    \"\\uFE49\", \"\\u203E\",\n    \"\\uFE4A\", \"\\u203E\",\n    \"\\uFE4B\", \"\\u203E\",\n    \"\\uFE4C\", \"\\u203E\",\n    \"\\uFE4D\", \"\\u005F\",\n    \"\\uFE4E\", \"\\u005F\",\n    \"\\uFE4F\", \"\\u005F\",\n    \"\\uFE80\", \"\\u0621\",\n    \"\\uFE81\", \"\\u0622\",\n    \"\\uFE82\", \"\\u0622\",\n    \"\\uFE83\", \"\\u0623\",\n    \"\\uFE84\", \"\\u0623\",\n    \"\\uFE85\", \"\\u0624\",\n    \"\\uFE86\", \"\\u0624\",\n    \"\\uFE87\", \"\\u0625\",\n    \"\\uFE88\", \"\\u0625\",\n    \"\\uFE89\", \"\\u0626\",\n    \"\\uFE8A\", \"\\u0626\",\n    \"\\uFE8B\", \"\\u0626\",\n    \"\\uFE8C\", \"\\u0626\",\n    \"\\uFE8D\", \"\\u0627\",\n    \"\\uFE8E\", \"\\u0627\",\n    \"\\uFE8F\", \"\\u0628\",\n    \"\\uFE90\", \"\\u0628\",\n    \"\\uFE91\", \"\\u0628\",\n    \"\\uFE92\", \"\\u0628\",\n    \"\\uFE93\", \"\\u0629\",\n    \"\\uFE94\", \"\\u0629\",\n    \"\\uFE95\", \"\\u062A\",\n    \"\\uFE96\", \"\\u062A\",\n    \"\\uFE97\", \"\\u062A\",\n    \"\\uFE98\", \"\\u062A\",\n    \"\\uFE99\", \"\\u062B\",\n    \"\\uFE9A\", \"\\u062B\",\n    \"\\uFE9B\", \"\\u062B\",\n    \"\\uFE9C\", \"\\u062B\",\n    \"\\uFE9D\", \"\\u062C\",\n    \"\\uFE9E\", \"\\u062C\",\n    \"\\uFE9F\", \"\\u062C\",\n    \"\\uFEA0\", \"\\u062C\",\n    \"\\uFEA1\", \"\\u062D\",\n    \"\\uFEA2\", \"\\u062D\",\n    \"\\uFEA3\", \"\\u062D\",\n    \"\\uFEA4\", \"\\u062D\",\n    \"\\uFEA5\", \"\\u062E\",\n    \"\\uFEA6\", \"\\u062E\",\n    \"\\uFEA7\", \"\\u062E\",\n    \"\\uFEA8\", \"\\u062E\",\n    \"\\uFEA9\", \"\\u062F\",\n    \"\\uFEAA\", \"\\u062F\",\n    \"\\uFEAB\", \"\\u0630\",\n    \"\\uFEAC\", \"\\u0630\",\n    \"\\uFEAD\", \"\\u0631\",\n    \"\\uFEAE\", \"\\u0631\",\n    \"\\uFEAF\", \"\\u0632\",\n    \"\\uFEB0\", \"\\u0632\",\n    \"\\uFEB1\", \"\\u0633\",\n    \"\\uFEB2\", \"\\u0633\",\n    \"\\uFEB3\", \"\\u0633\",\n    \"\\uFEB4\", \"\\u0633\",\n    \"\\uFEB5\", \"\\u0634\",\n    \"\\uFEB6\", \"\\u0634\",\n    \"\\uFEB7\", \"\\u0634\",\n    \"\\uFEB8\", \"\\u0634\",\n    \"\\uFEB9\", \"\\u0635\",\n    \"\\uFEBA\", \"\\u0635\",\n    \"\\uFEBB\", \"\\u0635\",\n    \"\\uFEBC\", \"\\u0635\",\n    \"\\uFEBD\", \"\\u0636\",\n    \"\\uFEBE\", \"\\u0636\",\n    \"\\uFEBF\", \"\\u0636\",\n    \"\\uFEC0\", \"\\u0636\",\n    \"\\uFEC1\", \"\\u0637\",\n    \"\\uFEC2\", \"\\u0637\",\n    \"\\uFEC3\", \"\\u0637\",\n    \"\\uFEC4\", \"\\u0637\",\n    \"\\uFEC5\", \"\\u0638\",\n    \"\\uFEC6\", \"\\u0638\",\n    \"\\uFEC7\", \"\\u0638\",\n    \"\\uFEC8\", \"\\u0638\",\n    \"\\uFEC9\", \"\\u0639\",\n    \"\\uFECA\", \"\\u0639\",\n    \"\\uFECB\", \"\\u0639\",\n    \"\\uFECC\", \"\\u0639\",\n    \"\\uFECD\", \"\\u063A\",\n    \"\\uFECE\", \"\\u063A\",\n    \"\\uFECF\", \"\\u063A\",\n    \"\\uFED0\", \"\\u063A\",\n    \"\\uFED1\", \"\\u0641\",\n    \"\\uFED2\", \"\\u0641\",\n    \"\\uFED3\", \"\\u0641\",\n    \"\\uFED4\", \"\\u0641\",\n    \"\\uFED5\", \"\\u0642\",\n    \"\\uFED6\", \"\\u0642\",\n    \"\\uFED7\", \"\\u0642\",\n    \"\\uFED8\", \"\\u0642\",\n    \"\\uFED9\", \"\\u0643\",\n    \"\\uFEDA\", \"\\u0643\",\n    \"\\uFEDB\", \"\\u0643\",\n    \"\\uFEDC\", \"\\u0643\",\n    \"\\uFEDD\", \"\\u0644\",\n    \"\\uFEDE\", \"\\u0644\",\n    \"\\uFEDF\", \"\\u0644\",\n    \"\\uFEE0\", \"\\u0644\",\n    \"\\uFEE1\", \"\\u0645\",\n    \"\\uFEE2\", \"\\u0645\",\n    \"\\uFEE3\", \"\\u0645\",\n    \"\\uFEE4\", \"\\u0645\",\n    \"\\uFEE5\", \"\\u0646\",\n    \"\\uFEE6\", \"\\u0646\",\n    \"\\uFEE7\", \"\\u0646\",\n    \"\\uFEE8\", \"\\u0646\",\n    \"\\uFEE9\", \"\\u0647\",\n    \"\\uFEEA\", \"\\u0647\",\n    \"\\uFEEB\", \"\\u0647\",\n    \"\\uFEEC\", \"\\u0647\",\n    \"\\uFEED\", \"\\u0648\",\n    \"\\uFEEE\", \"\\u0648\",\n    \"\\uFEEF\", \"\\u0649\",\n    \"\\uFEF0\", \"\\u0649\",\n    \"\\uFEF1\", \"\\u064A\",\n    \"\\uFEF2\", \"\\u064A\",\n    \"\\uFEF3\", \"\\u064A\",\n    \"\\uFEF4\", \"\\u064A\",\n    \"\\uFEF5\", \"\\u0644\\u0622\",\n    \"\\uFEF6\", \"\\u0644\\u0622\",\n    \"\\uFEF7\", \"\\u0644\\u0623\",\n    \"\\uFEF8\", \"\\u0644\\u0623\",\n    \"\\uFEF9\", \"\\u0644\\u0625\",\n    \"\\uFEFA\", \"\\u0644\\u0625\",\n    \"\\uFEFB\", \"\\u0644\\u0627\",\n    \"\\uFEFC\", \"\\u0644\\u0627\",\n  ];\n});\n\nfunction reverseIfRtl(chars) {\n  const charsLength = chars.length;\n  // Reverse an arabic ligature.\n  if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n    return chars;\n  }\n  const buf = [];\n  for (let ii = charsLength - 1; ii >= 0; ii--) {\n    buf.push(chars[ii]);\n  }\n  return buf.join(\"\");\n}\n\nconst SpecialCharRegExp = new RegExp(\"^(\\\\s)|(\\\\p{Mn})|(\\\\p{Cf})$\", \"u\");\nconst CategoryCache = new Map();\n\nfunction getCharUnicodeCategory(char) {\n  const cachedCategory = CategoryCache.get(char);\n  if (cachedCategory) {\n    return cachedCategory;\n  }\n  const groups = char.match(SpecialCharRegExp);\n  const category = {\n    isWhitespace: !!(groups && groups[1]),\n    isZeroWidthDiacritic: !!(groups && groups[2]),\n    isInvisibleFormatMark: !!(groups && groups[3]),\n  };\n  CategoryCache.set(char, category);\n  return category;\n}\n\nfunction clearUnicodeCaches() {\n  CategoryCache.clear();\n}\n\nexport {\n  clearUnicodeCaches,\n  getCharUnicodeCategory,\n  getNormalizedUnicodes,\n  getUnicodeForGlyph,\n  getUnicodeRangeFor,\n  mapSpecialUnicodeValues,\n  reverseIfRtl,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AnnotationActionEventType,\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationReplyType,\n  AnnotationType,\n  assert,\n  escapeString,\n  getModificationDate,\n  isAscii,\n  OPS,\n  RenderingIntentFlag,\n  shadow,\n  stringToPDFString,\n  stringToUTF16BEString,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { collectActions, getInheritableProperty } from \"./core_utils.js\";\nimport {\n  createDefaultAppearance,\n  parseDefaultAppearance,\n} from \"./default_appearance.js\";\nimport { Dict, isName, Name, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { StringStream } from \"./stream.js\";\nimport { writeDict } from \"./writer.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\n\nclass AnnotationFactory {\n  /**\n   * Create an `Annotation` object of the correct type for the given reference\n   * to an annotation dictionary. This yields a promise that is resolved when\n   * the `Annotation` object is constructed.\n   *\n   * @param {XRef} xref\n   * @param {Object} ref\n   * @param {PDFManager} pdfManager\n   * @param {Object} idFactory\n   * @param {boolean} collectFields\n   * @returns {Promise} A promise that is resolved with an {Annotation}\n   *   instance.\n   */\n  static create(xref, ref, pdfManager, idFactory, collectFields) {\n    return Promise.all([\n      pdfManager.ensureCatalog(\"acroForm\"),\n      collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1,\n    ]).then(([acroForm, pageIndex]) =>\n      pdfManager.ensure(this, \"_create\", [\n        xref,\n        ref,\n        pdfManager,\n        idFactory,\n        acroForm,\n        collectFields,\n        pageIndex,\n      ])\n    );\n  }\n\n  /**\n   * @private\n   */\n  static _create(\n    xref,\n    ref,\n    pdfManager,\n    idFactory,\n    acroForm,\n    collectFields,\n    pageIndex = -1\n  ) {\n    const dict = xref.fetchIfRef(ref);\n    if (!(dict instanceof Dict)) {\n      return undefined;\n    }\n\n    const id =\n      ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\n\n    // Determine the annotation's subtype.\n    let subtype = dict.get(\"Subtype\");\n    subtype = subtype instanceof Name ? subtype.name : null;\n\n    // Return the right annotation object based on the subtype and field type.\n    const parameters = {\n      xref,\n      ref,\n      dict,\n      subtype,\n      id,\n      pdfManager,\n      acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n      collectFields,\n      pageIndex,\n    };\n\n    switch (subtype) {\n      case \"Link\":\n        return new LinkAnnotation(parameters);\n\n      case \"Text\":\n        return new TextAnnotation(parameters);\n\n      case \"Widget\":\n        let fieldType = getInheritableProperty({ dict, key: \"FT\" });\n        fieldType = fieldType instanceof Name ? fieldType.name : null;\n\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotation(parameters);\n          case \"Btn\":\n            return new ButtonWidgetAnnotation(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotation(parameters);\n          case \"Sig\":\n            return new SignatureWidgetAnnotation(parameters);\n        }\n        warn(\n          `Unimplemented widget field type \"${fieldType}\", ` +\n            \"falling back to base field type.\"\n        );\n        return new WidgetAnnotation(parameters);\n\n      case \"Popup\":\n        return new PopupAnnotation(parameters);\n\n      case \"FreeText\":\n        return new FreeTextAnnotation(parameters);\n\n      case \"Line\":\n        return new LineAnnotation(parameters);\n\n      case \"Square\":\n        return new SquareAnnotation(parameters);\n\n      case \"Circle\":\n        return new CircleAnnotation(parameters);\n\n      case \"PolyLine\":\n        return new PolylineAnnotation(parameters);\n\n      case \"Polygon\":\n        return new PolygonAnnotation(parameters);\n\n      case \"Caret\":\n        return new CaretAnnotation(parameters);\n\n      case \"Ink\":\n        return new InkAnnotation(parameters);\n\n      case \"Highlight\":\n        return new HighlightAnnotation(parameters);\n\n      case \"Underline\":\n        return new UnderlineAnnotation(parameters);\n\n      case \"Squiggly\":\n        return new SquigglyAnnotation(parameters);\n\n      case \"StrikeOut\":\n        return new StrikeOutAnnotation(parameters);\n\n      case \"Stamp\":\n        return new StampAnnotation(parameters);\n\n      case \"FileAttachment\":\n        return new FileAttachmentAnnotation(parameters);\n\n      default:\n        if (!collectFields) {\n          if (!subtype) {\n            warn(\"Annotation is missing the required /Subtype.\");\n          } else {\n            warn(\n              `Unimplemented annotation type \"${subtype}\", ` +\n                \"falling back to base annotation.\"\n            );\n          }\n        }\n        return new Annotation(parameters);\n    }\n  }\n\n  static async _getPageIndex(xref, ref, pdfManager) {\n    try {\n      const annotDict = await xref.fetchIfRefAsync(ref);\n      if (!(annotDict instanceof Dict)) {\n        return -1;\n      }\n      const pageRef = annotDict.getRaw(\"P\");\n      if (!(pageRef instanceof Ref)) {\n        return -1;\n      }\n      const pageIndex = await pdfManager.ensureCatalog(\"getPageIndex\", [\n        pageRef,\n      ]);\n      return pageIndex;\n    } catch (ex) {\n      warn(`_getPageIndex: \"${ex}\".`);\n      return -1;\n    }\n  }\n}\n\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n  if (!Array.isArray(color)) {\n    return defaultColor;\n  }\n\n  const rgbColor = defaultColor || new Uint8ClampedArray(3);\n  switch (color.length) {\n    case 0: // Transparent, which we indicate with a null value\n      return null;\n\n    case 1: // Convert grayscale to RGB\n      ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n      return rgbColor;\n\n    case 3: // Convert RGB percentages to RGB\n      ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n      return rgbColor;\n\n    case 4: // Convert CMYK to RGB\n      ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n      return rgbColor;\n\n    default:\n      return defaultColor;\n  }\n}\n\nfunction getQuadPoints(dict, rect) {\n  if (!dict.has(\"QuadPoints\")) {\n    return null;\n  }\n\n  // The region is described as a number of quadrilaterals.\n  // Each quadrilateral must consist of eight coordinates.\n  const quadPoints = dict.getArray(\"QuadPoints\");\n  if (\n    !Array.isArray(quadPoints) ||\n    quadPoints.length === 0 ||\n    quadPoints.length % 8 > 0\n  ) {\n    return null;\n  }\n\n  const quadPointsLists = [];\n  for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n    // Each series of eight numbers represents the coordinates for one\n    // quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\n    // Convert this to an array of objects with x and y coordinates.\n    quadPointsLists.push([]);\n    for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n      const x = quadPoints[j];\n      const y = quadPoints[j + 1];\n\n      // The quadpoints should be ignored if any coordinate in the array\n      // lies outside the region specified by the rectangle. The rectangle\n      // can be `null` for markup annotations since their rectangle may be\n      // incorrect (fixes bug 1538111).\n      if (\n        rect !== null &&\n        (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])\n      ) {\n        return null;\n      }\n      quadPointsLists[i].push({ x, y });\n    }\n  }\n\n  // The PDF specification states in section 12.5.6.10 (figure 64) that the\n  // order of the quadpoints should be bottom left, bottom right, top right\n  // and top left. However, in practice PDF files use a different order,\n  // namely bottom left, bottom right, top left and top right (this is also\n  // mentioned on https://github.com/highkite/pdfAnnotate#QuadPoints), so\n  // this is the actual order we should work with. However, the situation is\n  // even worse since Adobe's own applications and other applications violate\n  // the specification and create annotations with other orders, namely top\n  // left, top right, bottom left and bottom right or even top left, top right,\n  // bottom right and bottom left. To avoid inconsistency and broken rendering,\n  // we normalize all lists to put the quadpoints in the same standard order\n  // (see https://stackoverflow.com/a/10729881).\n  return quadPointsLists.map(quadPointsList => {\n    const [minX, maxX, minY, maxY] = quadPointsList.reduce(\n      ([mX, MX, mY, MY], quadPoint) => [\n        Math.min(mX, quadPoint.x),\n        Math.max(MX, quadPoint.x),\n        Math.min(mY, quadPoint.y),\n        Math.max(MY, quadPoint.y),\n      ],\n      [Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]\n    );\n    return [\n      { x: minX, y: maxY },\n      { x: maxX, y: maxY },\n      { x: minX, y: minY },\n      { x: maxX, y: minY },\n    ];\n  });\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n  // 12.5.5: Algorithm: Appearance streams\n  const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n    bbox,\n    matrix\n  );\n  if (minX === maxX || minY === maxY) {\n    // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n    // just apply the transform for rect\n    return [1, 0, 0, 1, rect[0], rect[1]];\n  }\n\n  const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n  const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n  return [\n    xRatio,\n    0,\n    0,\n    yRatio,\n    rect[0] - minX * xRatio,\n    rect[1] - minY * yRatio,\n  ];\n}\n\nclass Annotation {\n  constructor(params) {\n    const dict = params.dict;\n\n    this.setTitle(dict.get(\"T\"));\n    this.setContents(dict.get(\"Contents\"));\n    this.setModificationDate(dict.get(\"M\"));\n    this.setFlags(dict.get(\"F\"));\n    this.setRectangle(dict.getArray(\"Rect\"));\n    this.setColor(dict.getArray(\"C\"));\n    this.setBorderStyle(dict);\n    this.setAppearance(dict);\n    this.setBorderAndBackgroundColors(dict.get(\"MK\"));\n\n    this._streams = [];\n    if (this.appearance) {\n      this._streams.push(this.appearance);\n    }\n\n    // Expose public properties using a data object.\n    this.data = {\n      annotationFlags: this.flags,\n      borderStyle: this.borderStyle,\n      color: this.color,\n      backgroundColor: this.backgroundColor,\n      borderColor: this.borderColor,\n      contentsObj: this._contents,\n      hasAppearance: !!this.appearance,\n      id: params.id,\n      modificationDate: this.modificationDate,\n      rect: this.rectangle,\n      subtype: params.subtype,\n      hasOwnCanvas: false,\n    };\n\n    if (params.collectFields) {\n      // Fields can act as container for other fields and have\n      // some actions even if no Annotation inherit from them.\n      // Those fields can be referenced by CO (calculation order).\n      const kids = dict.get(\"Kids\");\n      if (Array.isArray(kids)) {\n        const kidIds = [];\n        for (const kid of kids) {\n          if (kid instanceof Ref) {\n            kidIds.push(kid.toString());\n          }\n        }\n        if (kidIds.length !== 0) {\n          this.data.kidIds = kidIds;\n        }\n      }\n\n      this.data.actions = collectActions(\n        params.xref,\n        dict,\n        AnnotationActionEventType\n      );\n      this.data.fieldName = this._constructFieldName(dict);\n      this.data.pageIndex = params.pageIndex;\n    }\n\n    this._fallbackFontDict = null;\n  }\n\n  /**\n   * @private\n   */\n  _hasFlag(flags, flag) {\n    return !!(flags & flag);\n  }\n\n  /**\n   * @private\n   */\n  _isViewable(flags) {\n    return (\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n      !this._hasFlag(flags, AnnotationFlag.NOVIEW)\n    );\n  }\n\n  /**\n   * @private\n   */\n  _isPrintable(flags) {\n    return (\n      this._hasFlag(flags, AnnotationFlag.PRINT) &&\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE)\n    );\n  }\n\n  /**\n   * Check if the annotation must be displayed by taking into account\n   * the value found in the annotationStorage which may have been set\n   * through JS.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n   */\n  mustBeViewed(annotationStorage) {\n    const storageEntry =\n      annotationStorage && annotationStorage.get(this.data.id);\n    if (storageEntry && storageEntry.hidden !== undefined) {\n      return !storageEntry.hidden;\n    }\n    return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n  }\n\n  /**\n   * Check if the annotation must be printed by taking into account\n   * the value found in the annotationStorage which may have been set\n   * through JS.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n   */\n  mustBePrinted(annotationStorage) {\n    const storageEntry =\n      annotationStorage && annotationStorage.get(this.data.id);\n    if (storageEntry && storageEntry.print !== undefined) {\n      return storageEntry.print;\n    }\n    return this.printable;\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get viewable() {\n    if (this.data.quadPoints === null) {\n      return false;\n    }\n    if (this.flags === 0) {\n      return true;\n    }\n    return this._isViewable(this.flags);\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get printable() {\n    if (this.data.quadPoints === null) {\n      return false;\n    }\n    if (this.flags === 0) {\n      return false;\n    }\n    return this._isPrintable(this.flags);\n  }\n\n  /**\n   * @private\n   */\n  _parseStringHelper(data) {\n    const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n    const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n\n    return { str, dir };\n  }\n\n  /**\n   * Set the title.\n   *\n   * @param {string} title - The title of the annotation, used e.g. with\n   *   PopupAnnotations.\n   */\n  setTitle(title) {\n    this._title = this._parseStringHelper(title);\n  }\n\n  /**\n   * Set the contents.\n   *\n   * @param {string} contents - Text to display for the annotation or, if the\n   *                            type of annotation does not display text, a\n   *                            description of the annotation's contents\n   */\n  setContents(contents) {\n    this._contents = this._parseStringHelper(contents);\n  }\n\n  /**\n   * Set the modification date.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {string} modificationDate - PDF date string that indicates when the\n   *                                    annotation was last modified\n   */\n  setModificationDate(modificationDate) {\n    this.modificationDate =\n      typeof modificationDate === \"string\" ? modificationDate : null;\n  }\n\n  /**\n   * Set the flags.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flags - Unsigned 32-bit integer specifying annotation\n   *                         characteristics\n   * @see {@link shared/util.js}\n   */\n  setFlags(flags) {\n    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n  }\n\n  /**\n   * Check if a provided flag is set.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        characteristic\n   * @returns {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFlag(flag) {\n    return this._hasFlag(this.flags, flag);\n  }\n\n  /**\n   * Set the rectangle.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} rectangle - The rectangle array with exactly four entries\n   */\n  setRectangle(rectangle) {\n    if (Array.isArray(rectangle) && rectangle.length === 4) {\n      this.rectangle = Util.normalizeRect(rectangle);\n    } else {\n      this.rectangle = [0, 0, 0, 0];\n    }\n  }\n\n  /**\n   * Set the color and take care of color space conversion.\n   * The default value is black, in RGB color space.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} color - The color array containing either 0\n   *                        (transparent), 1 (grayscale), 3 (RGB) or\n   *                        4 (CMYK) elements\n   */\n  setColor(color) {\n    this.color = getRgbColor(color);\n  }\n\n  /**\n   * Set the color for background and border if any.\n   * The default values are transparent.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} mk - The MK dictionary\n   */\n  setBorderAndBackgroundColors(mk) {\n    if (mk instanceof Dict) {\n      this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n      this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n    } else {\n      this.borderColor = this.backgroundColor = null;\n    }\n  }\n\n  /**\n   * Set the border style (as AnnotationBorderStyle object).\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} borderStyle - The border style dictionary\n   */\n  setBorderStyle(borderStyle) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(this.rectangle, \"setRectangle must have been called previously.\");\n    }\n\n    this.borderStyle = new AnnotationBorderStyle();\n    if (!(borderStyle instanceof Dict)) {\n      return;\n    }\n    if (borderStyle.has(\"BS\")) {\n      const dict = borderStyle.get(\"BS\");\n      const dictType = dict.get(\"Type\");\n\n      if (!dictType || isName(dictType, \"Border\")) {\n        this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n        this.borderStyle.setStyle(dict.get(\"S\"));\n        this.borderStyle.setDashArray(dict.getArray(\"D\"));\n      }\n    } else if (borderStyle.has(\"Border\")) {\n      const array = borderStyle.getArray(\"Border\");\n      if (Array.isArray(array) && array.length >= 3) {\n        this.borderStyle.setHorizontalCornerRadius(array[0]);\n        this.borderStyle.setVerticalCornerRadius(array[1]);\n        this.borderStyle.setWidth(array[2], this.rectangle);\n\n        if (array.length === 4) {\n          // Dash array available\n          this.borderStyle.setDashArray(array[3], /* forceStyle = */ true);\n        }\n      }\n    } else {\n      // There are no border entries in the dictionary. According to the\n      // specification, we should draw a solid border of width 1 in that\n      // case, but Adobe Reader did not implement that part of the\n      // specification and instead draws no border at all, so we do the same.\n      // See also https://github.com/mozilla/pdf.js/issues/6179.\n      this.borderStyle.setWidth(0);\n    }\n  }\n\n  /**\n   * Set the (normal) appearance.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} dict - The annotation's data dictionary\n   */\n  setAppearance(dict) {\n    this.appearance = null;\n\n    const appearanceStates = dict.get(\"AP\");\n    if (!(appearanceStates instanceof Dict)) {\n      return;\n    }\n\n    // In case the normal appearance is a stream, then it is used directly.\n    const normalAppearanceState = appearanceStates.get(\"N\");\n    if (normalAppearanceState instanceof BaseStream) {\n      this.appearance = normalAppearanceState;\n      return;\n    }\n    if (!(normalAppearanceState instanceof Dict)) {\n      return;\n    }\n\n    // In case the normal appearance is a dictionary, the `AS` entry provides\n    // the key of the stream in this dictionary.\n    const as = dict.get(\"AS\");\n    if (!(as instanceof Name) || !normalAppearanceState.has(as.name)) {\n      return;\n    }\n    this.appearance = normalAppearanceState.get(as.name);\n  }\n\n  loadResources(keys, appearance) {\n    return appearance.dict.getAsync(\"Resources\").then(resources => {\n      if (!resources) {\n        return undefined;\n      }\n\n      const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n      return objectLoader.load().then(function () {\n        return resources;\n      });\n    });\n  }\n\n  getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n    const data = this.data;\n    let appearance = this.appearance;\n    const isUsingOwnCanvas =\n      data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY;\n    if (!appearance) {\n      if (!isUsingOwnCanvas) {\n        return Promise.resolve(new OperatorList());\n      }\n      appearance = new StringStream(\"\");\n      appearance.dict = new Dict();\n    }\n\n    const appearanceDict = appearance.dict;\n    const resourcesPromise = this.loadResources(\n      [\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"],\n      appearance\n    );\n    const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n    const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n    const transform = getTransformMatrix(data.rect, bbox, matrix);\n\n    return resourcesPromise.then(resources => {\n      const opList = new OperatorList();\n      opList.addOp(OPS.beginAnnotation, [\n        data.id,\n        data.rect,\n        transform,\n        matrix,\n        isUsingOwnCanvas,\n      ]);\n\n      return evaluator\n        .getOperatorList({\n          stream: appearance,\n          task,\n          resources,\n          operatorList: opList,\n          fallbackFontDict: this._fallbackFontDict,\n        })\n        .then(() => {\n          opList.addOp(OPS.endAnnotation, []);\n          this.reset();\n          return opList;\n        });\n    });\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    return null;\n  }\n\n  /**\n   * Get field data for usage in JS sandbox.\n   *\n   * Field object is defined here:\n   * https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf#page=16\n   *\n   * @public\n   * @memberof Annotation\n   * @returns {Object | null}\n   */\n  getFieldObject() {\n    if (this.data.kidIds) {\n      return {\n        id: this.data.id,\n        actions: this.data.actions,\n        name: this.data.fieldName,\n        strokeColor: this.data.borderColor,\n        fillColor: this.data.backgroundColor,\n        type: \"\",\n        kidIds: this.data.kidIds,\n        page: this.data.pageIndex,\n      };\n    }\n    return null;\n  }\n\n  /**\n   * Reset the annotation.\n   *\n   * This involves resetting the various streams that are either cached on the\n   * annotation instance or created during its construction.\n   *\n   * @public\n   * @memberof Annotation\n   */\n  reset() {\n    if (\n      (typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n      this.appearance &&\n      !this._streams.includes(this.appearance)\n    ) {\n      unreachable(\"The appearance stream should always be reset.\");\n    }\n\n    for (const stream of this._streams) {\n      stream.reset();\n    }\n  }\n\n  /**\n   * Construct the (fully qualified) field name from the (partial) field\n   * names of the field and its ancestors.\n   *\n   * @private\n   * @memberof Annotation\n   * @param {Dict} dict - Complete widget annotation dictionary\n   * @returns {string}\n   */\n  _constructFieldName(dict) {\n    // Both the `Parent` and `T` fields are optional. While at least one of\n    // them should be provided, bad PDF generators may fail to do so.\n    if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n      warn(\"Unknown field name, falling back to empty field name.\");\n      return \"\";\n    }\n\n    // If no parent exists, the partial and fully qualified names are equal.\n    if (!dict.has(\"Parent\")) {\n      return stringToPDFString(dict.get(\"T\"));\n    }\n\n    // Form the fully qualified field name by appending the partial name to\n    // the parent's fully qualified name, separated by a period.\n    const fieldName = [];\n    if (dict.has(\"T\")) {\n      fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n    }\n\n    let loopDict = dict;\n    const visited = new RefSet();\n    if (dict.objId) {\n      visited.put(dict.objId);\n    }\n    while (loopDict.has(\"Parent\")) {\n      loopDict = loopDict.get(\"Parent\");\n      if (\n        !(loopDict instanceof Dict) ||\n        (loopDict.objId && visited.has(loopDict.objId))\n      ) {\n        // Even though it is not allowed according to the PDF specification,\n        // bad PDF generators may provide a `Parent` entry that is not a\n        // dictionary, but `null` for example (issue 8143).\n        //\n        // If parent has been already visited, it means that we're\n        // in an infinite loop.\n        break;\n      }\n      if (loopDict.objId) {\n        visited.put(loopDict.objId);\n      }\n\n      if (loopDict.has(\"T\")) {\n        fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n      }\n    }\n    return fieldName.join(\".\");\n  }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n  constructor() {\n    this.width = 1;\n    this.style = AnnotationBorderStyleType.SOLID;\n    this.dashArray = [3];\n    this.horizontalCornerRadius = 0;\n    this.verticalCornerRadius = 0;\n  }\n\n  /**\n   * Set the width.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} width - The width.\n   * @param {Array} rect - The annotation `Rect` entry.\n   */\n  setWidth(width, rect = [0, 0, 0, 0]) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        Array.isArray(rect) && rect.length === 4,\n        \"A valid `rect` parameter must be provided.\"\n      );\n    }\n\n    // Some corrupt PDF generators may provide the width as a `Name`,\n    // rather than as a number (fixes issue 10385).\n    if (width instanceof Name) {\n      this.width = 0; // This is consistent with the behaviour in Adobe Reader.\n      return;\n    }\n    if (typeof width === \"number\") {\n      if (width > 0) {\n        const maxWidth = (rect[2] - rect[0]) / 2;\n        const maxHeight = (rect[3] - rect[1]) / 2;\n\n        // Ignore large `width`s, since they lead to the Annotation overflowing\n        // the size set by the `Rect` entry thus causing the `annotationLayer`\n        // to render it over the surrounding document (fixes bug1552113.pdf).\n        if (\n          maxWidth > 0 &&\n          maxHeight > 0 &&\n          (width > maxWidth || width > maxHeight)\n        ) {\n          warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n          width = 1;\n        }\n      }\n      this.width = width;\n    }\n  }\n\n  /**\n   * Set the style.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Name} style - The annotation style.\n   * @see {@link shared/util.js}\n   */\n  setStyle(style) {\n    if (!(style instanceof Name)) {\n      return;\n    }\n    switch (style.name) {\n      case \"S\":\n        this.style = AnnotationBorderStyleType.SOLID;\n        break;\n\n      case \"D\":\n        this.style = AnnotationBorderStyleType.DASHED;\n        break;\n\n      case \"B\":\n        this.style = AnnotationBorderStyleType.BEVELED;\n        break;\n\n      case \"I\":\n        this.style = AnnotationBorderStyleType.INSET;\n        break;\n\n      case \"U\":\n        this.style = AnnotationBorderStyleType.UNDERLINE;\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  /**\n   * Set the dash array.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Array} dashArray - The dash array with at least one element\n   * @param {boolean} [forceStyle]\n   */\n  setDashArray(dashArray, forceStyle = false) {\n    // We validate the dash array, but we do not use it because CSS does not\n    // allow us to change spacing of dashes. For more information, visit\n    // http://www.w3.org/TR/css3-background/#the-border-style.\n    if (Array.isArray(dashArray) && dashArray.length > 0) {\n      // According to the PDF specification: the elements in `dashArray`\n      // shall be numbers that are nonnegative and not all equal to zero.\n      let isValid = true;\n      let allZeros = true;\n      for (const element of dashArray) {\n        const validNumber = +element >= 0;\n        if (!validNumber) {\n          isValid = false;\n          break;\n        } else if (element > 0) {\n          allZeros = false;\n        }\n      }\n      if (isValid && !allZeros) {\n        this.dashArray = dashArray;\n\n        if (forceStyle) {\n          // Even though we cannot use the dash array in the display layer,\n          // at least ensure that we use the correct border-style.\n          this.setStyle(Name.get(\"D\"));\n        }\n      } else {\n        this.width = 0; // Adobe behavior when the array is invalid.\n      }\n    } else if (dashArray) {\n      this.width = 0; // Adobe behavior when the array is invalid.\n    }\n  }\n\n  /**\n   * Set the horizontal corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} radius - The horizontal corner radius.\n   */\n  setHorizontalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.horizontalCornerRadius = radius;\n    }\n  }\n\n  /**\n   * Set the vertical corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} radius - The vertical corner radius.\n   */\n  setVerticalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.verticalCornerRadius = radius;\n    }\n  }\n}\n\nclass MarkupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    const dict = parameters.dict;\n\n    if (dict.has(\"IRT\")) {\n      const rawIRT = dict.getRaw(\"IRT\");\n      this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null;\n\n      const rt = dict.get(\"RT\");\n      this.data.replyType =\n        rt instanceof Name ? rt.name : AnnotationReplyType.REPLY;\n    }\n\n    if (this.data.replyType === AnnotationReplyType.GROUP) {\n      // Subordinate annotations in a group should inherit\n      // the group attributes from the primary annotation.\n      const parent = dict.get(\"IRT\");\n\n      this.setTitle(parent.get(\"T\"));\n      this.data.titleObj = this._title;\n\n      this.setContents(parent.get(\"Contents\"));\n      this.data.contentsObj = this._contents;\n\n      if (!parent.has(\"CreationDate\")) {\n        this.data.creationDate = null;\n      } else {\n        this.setCreationDate(parent.get(\"CreationDate\"));\n        this.data.creationDate = this.creationDate;\n      }\n\n      if (!parent.has(\"M\")) {\n        this.data.modificationDate = null;\n      } else {\n        this.setModificationDate(parent.get(\"M\"));\n        this.data.modificationDate = this.modificationDate;\n      }\n\n      this.data.hasPopup = parent.has(\"Popup\");\n\n      if (!parent.has(\"C\")) {\n        // Fall back to the default background color.\n        this.data.color = null;\n      } else {\n        this.setColor(parent.getArray(\"C\"));\n        this.data.color = this.color;\n      }\n    } else {\n      this.data.titleObj = this._title;\n\n      this.setCreationDate(dict.get(\"CreationDate\"));\n      this.data.creationDate = this.creationDate;\n\n      this.data.hasPopup = dict.has(\"Popup\");\n\n      if (!dict.has(\"C\")) {\n        // Fall back to the default background color.\n        this.data.color = null;\n      }\n    }\n\n    if (dict.has(\"RC\")) {\n      this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n    }\n  }\n\n  /**\n   * Set the creation date.\n   *\n   * @public\n   * @memberof MarkupAnnotation\n   * @param {string} creationDate - PDF date string that indicates when the\n   *                                annotation was originally created\n   */\n  setCreationDate(creationDate) {\n    this.creationDate = typeof creationDate === \"string\" ? creationDate : null;\n  }\n\n  _setDefaultAppearance({\n    xref,\n    extra,\n    strokeColor,\n    fillColor,\n    blendMode,\n    strokeAlpha,\n    fillAlpha,\n    pointsCallback,\n  }) {\n    let minX = Number.MAX_VALUE;\n    let minY = Number.MAX_VALUE;\n    let maxX = Number.MIN_VALUE;\n    let maxY = Number.MIN_VALUE;\n\n    const buffer = [\"q\"];\n    if (extra) {\n      buffer.push(extra);\n    }\n    if (strokeColor) {\n      buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n    }\n    if (fillColor) {\n      buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n    }\n\n    let pointsArray = this.data.quadPoints;\n    if (!pointsArray) {\n      // If there are no quadpoints, the rectangle should be used instead.\n      // Convert the rectangle definition to a points array similar to how the\n      // quadpoints are defined.\n      pointsArray = [\n        [\n          { x: this.rectangle[0], y: this.rectangle[3] },\n          { x: this.rectangle[2], y: this.rectangle[3] },\n          { x: this.rectangle[0], y: this.rectangle[1] },\n          { x: this.rectangle[2], y: this.rectangle[1] },\n        ],\n      ];\n    }\n\n    for (const points of pointsArray) {\n      const [mX, MX, mY, MY] = pointsCallback(buffer, points);\n      minX = Math.min(minX, mX);\n      maxX = Math.max(maxX, MX);\n      minY = Math.min(minY, mY);\n      maxY = Math.max(maxY, MY);\n    }\n    buffer.push(\"Q\");\n\n    const formDict = new Dict(xref);\n    const appearanceStreamDict = new Dict(xref);\n    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n\n    const appearanceStream = new StringStream(buffer.join(\" \"));\n    appearanceStream.dict = appearanceStreamDict;\n    formDict.set(\"Fm0\", appearanceStream);\n\n    const gsDict = new Dict(xref);\n    if (blendMode) {\n      gsDict.set(\"BM\", Name.get(blendMode));\n    }\n    if (typeof strokeAlpha === \"number\") {\n      gsDict.set(\"CA\", strokeAlpha);\n    }\n    if (typeof fillAlpha === \"number\") {\n      gsDict.set(\"ca\", fillAlpha);\n    }\n\n    const stateDict = new Dict(xref);\n    stateDict.set(\"GS0\", gsDict);\n\n    const resources = new Dict(xref);\n    resources.set(\"ExtGState\", stateDict);\n    resources.set(\"XObject\", formDict);\n\n    const appearanceDict = new Dict(xref);\n    appearanceDict.set(\"Resources\", resources);\n    const bbox = (this.data.rect = [minX, minY, maxX, maxY]);\n    appearanceDict.set(\"BBox\", bbox);\n\n    this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\");\n    this.appearance.dict = appearanceDict;\n\n    // This method is only called if there is no appearance for the annotation,\n    // so `this.appearance` is not pushed yet in the `Annotation` constructor.\n    this._streams.push(this.appearance, appearanceStream);\n  }\n}\n\nclass WidgetAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    const dict = params.dict;\n    const data = this.data;\n    this.ref = params.ref;\n\n    data.annotationType = AnnotationType.WIDGET;\n    if (data.fieldName === undefined) {\n      data.fieldName = this._constructFieldName(dict);\n    }\n    if (data.actions === undefined) {\n      data.actions = collectActions(\n        params.xref,\n        dict,\n        AnnotationActionEventType\n      );\n    }\n\n    const fieldValue = getInheritableProperty({\n      dict,\n      key: \"V\",\n      getArray: true,\n    });\n    data.fieldValue = this._decodeFormValue(fieldValue);\n\n    const defaultFieldValue = getInheritableProperty({\n      dict,\n      key: \"DV\",\n      getArray: true,\n    });\n    data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n\n    // When no \"V\" entry exists, let the fieldValue fallback to the \"DV\" entry\n    // (fixes issue13823.pdf).\n    if (fieldValue === undefined && data.defaultFieldValue !== null) {\n      data.fieldValue = data.defaultFieldValue;\n    }\n\n    data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n\n    const defaultAppearance =\n      getInheritableProperty({ dict, key: \"DA\" }) || params.acroForm.get(\"DA\");\n    this._defaultAppearance =\n      typeof defaultAppearance === \"string\" ? defaultAppearance : \"\";\n    data.defaultAppearanceData = parseDefaultAppearance(\n      this._defaultAppearance\n    );\n\n    const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n    data.fieldType = fieldType instanceof Name ? fieldType.name : null;\n\n    const localResources = getInheritableProperty({ dict, key: \"DR\" });\n    const acroFormResources = params.acroForm.get(\"DR\");\n    const appearanceResources =\n      this.appearance && this.appearance.dict.get(\"Resources\");\n\n    this._fieldResources = {\n      localResources,\n      acroFormResources,\n      appearanceResources,\n      mergedResources: Dict.merge({\n        xref: params.xref,\n        dictArray: [localResources, appearanceResources, acroFormResources],\n        mergeSubDicts: true,\n      }),\n    };\n\n    data.fieldFlags = getInheritableProperty({ dict, key: \"Ff\" });\n    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n      data.fieldFlags = 0;\n    }\n\n    data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n    data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN);\n  }\n\n  /**\n   * Decode the given form value.\n   *\n   * @private\n   * @memberof WidgetAnnotation\n   * @param {Array<string>|Name|string} formValue - The (possibly encoded)\n   *   form value.\n   * @returns {Array<string>|string|null}\n   */\n  _decodeFormValue(formValue) {\n    if (Array.isArray(formValue)) {\n      return formValue\n        .filter(item => typeof item === \"string\")\n        .map(item => stringToPDFString(item));\n    } else if (formValue instanceof Name) {\n      return stringToPDFString(formValue.name);\n    } else if (typeof formValue === \"string\") {\n      return stringToPDFString(formValue);\n    }\n    return null;\n  }\n\n  /**\n   * Check if a provided field flag is set.\n   *\n   * @public\n   * @memberof WidgetAnnotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        field characteristic\n   * @returns {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFieldFlag(flag) {\n    return !!(this.data.fieldFlags & flag);\n  }\n\n  getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n    // Do not render form elements on the canvas when interactive forms are\n    // enabled. The display layer is responsible for rendering them instead.\n    if (renderForms && !(this instanceof SignatureWidgetAnnotation)) {\n      return Promise.resolve(new OperatorList());\n    }\n\n    if (!this._hasText) {\n      return super.getOperatorList(\n        evaluator,\n        task,\n        intent,\n        renderForms,\n        annotationStorage\n      );\n    }\n\n    return this._getAppearance(evaluator, task, annotationStorage).then(\n      content => {\n        if (this.appearance && content === null) {\n          return super.getOperatorList(\n            evaluator,\n            task,\n            intent,\n            renderForms,\n            annotationStorage\n          );\n        }\n\n        const operatorList = new OperatorList();\n\n        // Even if there is an appearance stream, ignore it. This is the\n        // behaviour used by Adobe Reader.\n        if (!this._defaultAppearance || content === null) {\n          return operatorList;\n        }\n\n        const matrix = [1, 0, 0, 1, 0, 0];\n        const bbox = [\n          0,\n          0,\n          this.data.rect[2] - this.data.rect[0],\n          this.data.rect[3] - this.data.rect[1],\n        ];\n\n        const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n        operatorList.addOp(OPS.beginAnnotation, [\n          this.data.id,\n          this.data.rect,\n          transform,\n          matrix,\n        ]);\n\n        const stream = new StringStream(content);\n        return evaluator\n          .getOperatorList({\n            stream,\n            task,\n            resources: this._fieldResources.mergedResources,\n            operatorList,\n          })\n          .then(function () {\n            operatorList.addOp(OPS.endAnnotation, []);\n            return operatorList;\n          });\n      }\n    );\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    if (!annotationStorage) {\n      return null;\n    }\n    const storageEntry = annotationStorage.get(this.data.id);\n    const value = storageEntry && storageEntry.value;\n    if (value === this.data.fieldValue || value === undefined) {\n      return null;\n    }\n\n    let appearance = await this._getAppearance(\n      evaluator,\n      task,\n      annotationStorage\n    );\n    if (appearance === null) {\n      return null;\n    }\n    const { xref } = evaluator;\n\n    const dict = xref.fetchIfRef(this.ref);\n    if (!(dict instanceof Dict)) {\n      return null;\n    }\n\n    const bbox = [\n      0,\n      0,\n      this.data.rect[2] - this.data.rect[0],\n      this.data.rect[3] - this.data.rect[1],\n    ];\n\n    const xfa = {\n      path: stringToPDFString(dict.get(\"T\") || \"\"),\n      value,\n    };\n\n    const newRef = xref.getNewRef();\n    const AP = new Dict(xref);\n    AP.set(\"N\", newRef);\n\n    const encrypt = xref.encrypt;\n    let originalTransform = null;\n    let newTransform = null;\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(\n        this.ref.num,\n        this.ref.gen\n      );\n      newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);\n      appearance = newTransform.encryptString(appearance);\n    }\n\n    dict.set(\"V\", isAscii(value) ? value : stringToUTF16BEString(value));\n    dict.set(\"AP\", AP);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n\n    const appearanceDict = new Dict(xref);\n    appearanceDict.set(\"Length\", appearance.length);\n    appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceDict.set(\"Resources\", this._getSaveFieldResources(xref));\n    appearanceDict.set(\"BBox\", bbox);\n\n    const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    writeDict(dict, bufferOriginal, originalTransform);\n    bufferOriginal.push(\"\\nendobj\\n\");\n\n    const bufferNew = [`${newRef.num} ${newRef.gen} obj\\n`];\n    writeDict(appearanceDict, bufferNew, newTransform);\n    bufferNew.push(\" stream\\n\", appearance, \"\\nendstream\\nendobj\\n\");\n\n    return [\n      // data for the original object\n      // V field changed + reference for new AP\n      { ref: this.ref, data: bufferOriginal.join(\"\"), xfa },\n      // data for the new AP\n      { ref: newRef, data: bufferNew.join(\"\"), xfa: null },\n    ];\n  }\n\n  async _getAppearance(evaluator, task, annotationStorage) {\n    const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n    if (!annotationStorage || isPassword) {\n      return null;\n    }\n    const storageEntry = annotationStorage.get(this.data.id);\n    let value = storageEntry && storageEntry.value;\n    if (value === undefined) {\n      // The annotation hasn't been rendered so use the appearance\n      return null;\n    }\n\n    value = value.trim();\n\n    if (value === \"\") {\n      // the field is empty: nothing to render\n      return \"\";\n    }\n\n    let lineCount = -1;\n    if (this.data.multiLine) {\n      lineCount = value.split(/\\r\\n|\\r|\\n/).length;\n    }\n\n    const defaultPadding = 2;\n    const hPadding = defaultPadding;\n    const totalHeight = this.data.rect[3] - this.data.rect[1];\n    const totalWidth = this.data.rect[2] - this.data.rect[0];\n\n    if (!this._defaultAppearance) {\n      // The DA is required and must be a string.\n      // If there is no font named Helvetica in the resource dictionary,\n      // the evaluator will fall back to a default font.\n      // Doing so prevents exceptions and allows saving/printing\n      // the file as expected.\n      this.data.defaultAppearanceData = parseDefaultAppearance(\n        (this._defaultAppearance = \"/Helvetica 0 Tf 0 g\")\n      );\n    }\n\n    const font = await this._getFontData(evaluator, task);\n    const [defaultAppearance, fontSize] = this._computeFontSize(\n      totalHeight - defaultPadding,\n      totalWidth - 2 * hPadding,\n      value,\n      font,\n      lineCount\n    );\n\n    let descent = font.descent;\n    if (isNaN(descent)) {\n      descent = 0;\n    }\n\n    const vPadding = defaultPadding + Math.abs(descent) * fontSize;\n    const alignment = this.data.textAlignment;\n\n    if (this.data.multiLine) {\n      return this._getMultilineAppearance(\n        defaultAppearance,\n        value,\n        font,\n        fontSize,\n        totalWidth,\n        totalHeight,\n        alignment,\n        hPadding,\n        vPadding\n      );\n    }\n\n    // TODO: need to handle chars which are not in the font.\n    const encodedString = font.encodeString(value).join(\"\");\n\n    if (this.data.comb) {\n      return this._getCombAppearance(\n        defaultAppearance,\n        font,\n        encodedString,\n        totalWidth,\n        hPadding,\n        vPadding\n      );\n    }\n\n    if (alignment === 0 || alignment > 2) {\n      // Left alignment: nothing to do\n      return (\n        \"/Tx BMC q BT \" +\n        defaultAppearance +\n        ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${escapeString(\n          encodedString\n        )}) Tj` +\n        \" ET Q EMC\"\n      );\n    }\n\n    const renderedText = this._renderText(\n      encodedString,\n      font,\n      fontSize,\n      totalWidth,\n      alignment,\n      hPadding,\n      vPadding\n    );\n    return (\n      \"/Tx BMC q BT \" +\n      defaultAppearance +\n      ` 1 0 0 1 0 0 Tm ${renderedText}` +\n      \" ET Q EMC\"\n    );\n  }\n\n  async _getFontData(evaluator, task) {\n    const operatorList = new OperatorList();\n    const initialState = {\n      font: null,\n      clone() {\n        return this;\n      },\n    };\n\n    const { fontName, fontSize } = this.data.defaultAppearanceData;\n    await evaluator.handleSetFont(\n      this._fieldResources.mergedResources,\n      [fontName && Name.get(fontName), fontSize],\n      /* fontRef = */ null,\n      operatorList,\n      task,\n      initialState,\n      /* fallbackFontDict = */ null\n    );\n\n    return initialState.font;\n  }\n\n  _getTextWidth(text, font) {\n    return (\n      font\n        .charsToGlyphs(text)\n        .reduce((width, glyph) => width + glyph.width, 0) / 1000\n    );\n  }\n\n  _computeFontSize(height, width, text, font, lineCount) {\n    let { fontSize } = this.data.defaultAppearanceData;\n    if (!fontSize) {\n      // A zero value for size means that the font shall be auto-sized:\n      // its size shall be computed as a function of the height of the\n      // annotation rectangle (see 12.7.3.3).\n\n      const roundWithTwoDigits = x => Math.floor(x * 100) / 100;\n\n      // Represent the percentage of the height of a single-line field over\n      // the font size.\n      // Acrobat seems to use this value.\n      const LINE_FACTOR = 1.35;\n\n      if (lineCount === -1) {\n        const textWidth = this._getTextWidth(text, font);\n        fontSize = roundWithTwoDigits(\n          Math.min(height / LINE_FACTOR, width / textWidth)\n        );\n      } else {\n        const lines = text.split(/\\r\\n?|\\n/);\n        const cachedLines = [];\n        for (const line of lines) {\n          const encoded = font.encodeString(line).join(\"\");\n          const glyphs = font.charsToGlyphs(encoded);\n          const positions = font.getCharPositions(encoded);\n          cachedLines.push({\n            line: encoded,\n            glyphs,\n            positions,\n          });\n        }\n\n        const isTooBig = fsize => {\n          // Return true when the text doesn't fit the given height.\n          let totalHeight = 0;\n          for (const cache of cachedLines) {\n            const chunks = this._splitLine(null, font, fsize, width, cache);\n            totalHeight += chunks.length * fsize;\n            if (totalHeight > height) {\n              return true;\n            }\n          }\n          return false;\n        };\n\n        // Hard to guess how many lines there are.\n        // The field may have been sized to have 10 lines\n        // and the user entered only 1 so if we get font size from\n        // height and number of lines then we'll get something too big.\n        // So we compute a fake number of lines based on height and\n        // a font size equal to 12 (this is the default font size in\n        // Acrobat).\n        // Then we'll adjust font size to what we have really.\n        fontSize = 12;\n        let lineHeight = fontSize * LINE_FACTOR;\n        let numberOfLines = Math.round(height / lineHeight);\n        numberOfLines = Math.max(numberOfLines, lineCount);\n\n        while (true) {\n          lineHeight = height / numberOfLines;\n          fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR);\n\n          if (isTooBig(fontSize)) {\n            numberOfLines++;\n            continue;\n          }\n\n          break;\n        }\n      }\n\n      const { fontName, fontColor } = this.data.defaultAppearanceData;\n      this._defaultAppearance = createDefaultAppearance({\n        fontSize,\n        fontName,\n        fontColor,\n      });\n    }\n    return [this._defaultAppearance, fontSize];\n  }\n\n  _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {\n    // We need to get the width of the text in order to align it correctly\n    const width = this._getTextWidth(text, font) * fontSize;\n    let shift;\n    if (alignment === 1) {\n      // Center\n      shift = (totalWidth - width) / 2;\n    } else if (alignment === 2) {\n      // Right\n      shift = totalWidth - width - hPadding;\n    } else {\n      shift = hPadding;\n    }\n    shift = shift.toFixed(2);\n    vPadding = vPadding.toFixed(2);\n\n    return `${shift} ${vPadding} Td (${escapeString(text)}) Tj`;\n  }\n\n  /**\n   * @private\n   */\n  _getSaveFieldResources(xref) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        this.data.defaultAppearanceData,\n        \"Expected `_defaultAppearanceData` to have been set.\"\n      );\n    }\n    const { localResources, appearanceResources, acroFormResources } =\n      this._fieldResources;\n\n    const fontName =\n      this.data.defaultAppearanceData &&\n      this.data.defaultAppearanceData.fontName;\n    if (!fontName) {\n      return localResources || Dict.empty;\n    }\n\n    for (const resources of [localResources, appearanceResources]) {\n      if (resources instanceof Dict) {\n        const localFont = resources.get(\"Font\");\n        if (localFont instanceof Dict && localFont.has(fontName)) {\n          return resources;\n        }\n      }\n    }\n    if (acroFormResources instanceof Dict) {\n      const acroFormFont = acroFormResources.get(\"Font\");\n      if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\n        const subFontDict = new Dict(xref);\n        subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n\n        const subResourcesDict = new Dict(xref);\n        subResourcesDict.set(\"Font\", subFontDict);\n\n        return Dict.merge({\n          xref,\n          dictArray: [subResourcesDict, localResources],\n          mergeSubDicts: true,\n        });\n      }\n    }\n    return localResources || Dict.empty;\n  }\n\n  getFieldObject() {\n    return null;\n  }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    this._hasText = true;\n\n    const dict = params.dict;\n\n    // The field value is always a string.\n    if (typeof this.data.fieldValue !== \"string\") {\n      this.data.fieldValue = \"\";\n    }\n\n    // Determine the alignment of text in the field.\n    let alignment = getInheritableProperty({ dict, key: \"Q\" });\n    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n      alignment = null;\n    }\n    this.data.textAlignment = alignment;\n\n    // Determine the maximum length of text in the field.\n    let maximumLength = getInheritableProperty({ dict, key: \"MaxLen\" });\n    if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n      maximumLength = null;\n    }\n    this.data.maxLen = maximumLength;\n\n    // Process field flags for the display layer.\n    this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n    this.data.comb =\n      this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n      this.data.maxLen !== null;\n  }\n\n  _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {\n    const combWidth = (width / this.data.maxLen).toFixed(2);\n    const buf = [];\n    const positions = font.getCharPositions(text);\n    for (const [start, end] of positions) {\n      buf.push(`(${escapeString(text.substring(start, end))}) Tj`);\n    }\n\n    const renderedComb = buf.join(` ${combWidth} 0 Td `);\n    return (\n      \"/Tx BMC q BT \" +\n      defaultAppearance +\n      ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` +\n      \" ET Q EMC\"\n    );\n  }\n\n  _getMultilineAppearance(\n    defaultAppearance,\n    text,\n    font,\n    fontSize,\n    width,\n    height,\n    alignment,\n    hPadding,\n    vPadding\n  ) {\n    const lines = text.split(/\\r\\n?|\\n/);\n    const buf = [];\n    const totalWidth = width - 2 * hPadding;\n    for (const line of lines) {\n      const chunks = this._splitLine(line, font, fontSize, totalWidth);\n      for (const chunk of chunks) {\n        const padding = buf.length === 0 ? hPadding : 0;\n        buf.push(\n          this._renderText(\n            chunk,\n            font,\n            fontSize,\n            width,\n            alignment,\n            padding,\n            -fontSize // <0 because a line is below the previous one\n          )\n        );\n      }\n    }\n\n    const renderedText = buf.join(\"\\n\");\n    return (\n      \"/Tx BMC q BT \" +\n      defaultAppearance +\n      ` 1 0 0 1 0 ${height} Tm ${renderedText}` +\n      \" ET Q EMC\"\n    );\n  }\n\n  _splitLine(line, font, fontSize, width, cache = {}) {\n    // TODO: need to handle chars which are not in the font.\n    line = cache.line || font.encodeString(line).join(\"\");\n\n    const glyphs = cache.glyphs || font.charsToGlyphs(line);\n\n    if (glyphs.length <= 1) {\n      // Nothing to split\n      return [line];\n    }\n\n    const positions = cache.positions || font.getCharPositions(line);\n    const scale = fontSize / 1000;\n    const chunks = [];\n\n    let lastSpacePosInStringStart = -1,\n      lastSpacePosInStringEnd = -1,\n      lastSpacePos = -1,\n      startChunk = 0,\n      currentWidth = 0;\n\n    for (let i = 0, ii = glyphs.length; i < ii; i++) {\n      const [start, end] = positions[i];\n      const glyph = glyphs[i];\n      const glyphWidth = glyph.width * scale;\n      if (glyph.unicode === \" \") {\n        if (currentWidth + glyphWidth > width) {\n          // We can break here\n          chunks.push(line.substring(startChunk, start));\n          startChunk = start;\n          currentWidth = glyphWidth;\n          lastSpacePosInStringStart = -1;\n          lastSpacePos = -1;\n        } else {\n          currentWidth += glyphWidth;\n          lastSpacePosInStringStart = start;\n          lastSpacePosInStringEnd = end;\n          lastSpacePos = i;\n        }\n      } else {\n        if (currentWidth + glyphWidth > width) {\n          // We must break to the last white position (if available)\n          if (lastSpacePosInStringStart !== -1) {\n            chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n            startChunk = lastSpacePosInStringEnd;\n            i = lastSpacePos + 1;\n            lastSpacePosInStringStart = -1;\n            currentWidth = 0;\n          } else {\n            // Just break in the middle of the word\n            chunks.push(line.substring(startChunk, start));\n            startChunk = start;\n            currentWidth = glyphWidth;\n          }\n        } else {\n          currentWidth += glyphWidth;\n        }\n      }\n    }\n\n    if (startChunk < line.length) {\n      chunks.push(line.substring(startChunk, line.length));\n    }\n\n    return chunks;\n  }\n\n  getFieldObject() {\n    return {\n      id: this.data.id,\n      value: this.data.fieldValue,\n      defaultValue: this.data.defaultFieldValue,\n      multiline: this.data.multiLine,\n      password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD),\n      charLimit: this.data.maxLen,\n      comb: this.data.comb,\n      editable: !this.data.readOnly,\n      hidden: this.data.hidden,\n      name: this.data.fieldName,\n      rect: this.data.rect,\n      actions: this.data.actions,\n      page: this.data.pageIndex,\n      strokeColor: this.data.borderColor,\n      fillColor: this.data.backgroundColor,\n      type: \"text\",\n    };\n  }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    this.checkedAppearance = null;\n    this.uncheckedAppearance = null;\n\n    this.data.checkBox =\n      !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.radioButton =\n      this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.isTooltipOnly = false;\n\n    if (this.data.checkBox) {\n      this._processCheckBox(params);\n    } else if (this.data.radioButton) {\n      this._processRadioButton(params);\n    } else if (this.data.pushButton) {\n      this.data.hasOwnCanvas = true;\n      this._processPushButton(params);\n    } else {\n      warn(\"Invalid field flags for button widget annotation\");\n    }\n  }\n\n  async getOperatorList(\n    evaluator,\n    task,\n    intent,\n    renderForms,\n    annotationStorage\n  ) {\n    if (this.data.pushButton) {\n      return super.getOperatorList(\n        evaluator,\n        task,\n        intent,\n        false, // we use normalAppearance to render the button\n        annotationStorage\n      );\n    }\n\n    let value = null;\n    if (annotationStorage) {\n      const storageEntry = annotationStorage.get(this.data.id);\n      value = storageEntry ? storageEntry.value : null;\n    }\n\n    if (value === null) {\n      // Nothing in the annotationStorage.\n      if (this.appearance) {\n        // But we've a default appearance so use it.\n        return super.getOperatorList(\n          evaluator,\n          task,\n          intent,\n          renderForms,\n          annotationStorage\n        );\n      }\n\n      // There is no default appearance so use the one derived\n      // from the field value.\n      if (this.data.checkBox) {\n        value = this.data.fieldValue === this.data.exportValue;\n      } else {\n        value = this.data.fieldValue === this.data.buttonValue;\n      }\n    }\n\n    const appearance = value\n      ? this.checkedAppearance\n      : this.uncheckedAppearance;\n    if (appearance) {\n      const savedAppearance = this.appearance;\n      this.appearance = appearance;\n      const operatorList = super.getOperatorList(\n        evaluator,\n        task,\n        intent,\n        renderForms,\n        annotationStorage\n      );\n      this.appearance = savedAppearance;\n      return operatorList;\n    }\n\n    // No appearance\n    return new OperatorList();\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    if (this.data.checkBox) {\n      return this._saveCheckbox(evaluator, task, annotationStorage);\n    }\n\n    if (this.data.radioButton) {\n      return this._saveRadioButton(evaluator, task, annotationStorage);\n    }\n\n    // Nothing to save\n    return null;\n  }\n\n  async _saveCheckbox(evaluator, task, annotationStorage) {\n    if (!annotationStorage) {\n      return null;\n    }\n    const storageEntry = annotationStorage.get(this.data.id);\n    const value = storageEntry && storageEntry.value;\n    if (value === undefined) {\n      return null;\n    }\n\n    const defaultValue = this.data.fieldValue === this.data.exportValue;\n    if (defaultValue === value) {\n      return null;\n    }\n\n    const dict = evaluator.xref.fetchIfRef(this.ref);\n    if (!(dict instanceof Dict)) {\n      return null;\n    }\n\n    const xfa = {\n      path: stringToPDFString(dict.get(\"T\") || \"\"),\n      value: value ? this.data.exportValue : \"\",\n    };\n\n    const name = Name.get(value ? this.data.exportValue : \"Off\");\n    dict.set(\"V\", name);\n    dict.set(\"AS\", name);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n\n    const encrypt = evaluator.xref.encrypt;\n    let originalTransform = null;\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(\n        this.ref.num,\n        this.ref.gen\n      );\n    }\n\n    const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    writeDict(dict, buffer, originalTransform);\n    buffer.push(\"\\nendobj\\n\");\n\n    return [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n  }\n\n  async _saveRadioButton(evaluator, task, annotationStorage) {\n    if (!annotationStorage) {\n      return null;\n    }\n    const storageEntry = annotationStorage.get(this.data.id);\n    const value = storageEntry && storageEntry.value;\n    if (value === undefined) {\n      return null;\n    }\n\n    const defaultValue = this.data.fieldValue === this.data.buttonValue;\n    if (defaultValue === value) {\n      return null;\n    }\n\n    const dict = evaluator.xref.fetchIfRef(this.ref);\n    if (!(dict instanceof Dict)) {\n      return null;\n    }\n\n    const xfa = {\n      path: stringToPDFString(dict.get(\"T\") || \"\"),\n      value: value ? this.data.buttonValue : \"\",\n    };\n\n    const name = Name.get(value ? this.data.buttonValue : \"Off\");\n    let parentBuffer = null;\n    const encrypt = evaluator.xref.encrypt;\n\n    if (value) {\n      if (this.parent instanceof Ref) {\n        const parent = evaluator.xref.fetch(this.parent);\n        let parentTransform = null;\n        if (encrypt) {\n          parentTransform = encrypt.createCipherTransform(\n            this.parent.num,\n            this.parent.gen\n          );\n        }\n        parent.set(\"V\", name);\n        parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\\n`];\n        writeDict(parent, parentBuffer, parentTransform);\n        parentBuffer.push(\"\\nendobj\\n\");\n      } else if (this.parent instanceof Dict) {\n        this.parent.set(\"V\", name);\n      }\n    }\n\n    dict.set(\"AS\", name);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n\n    let originalTransform = null;\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(\n        this.ref.num,\n        this.ref.gen\n      );\n    }\n\n    const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    writeDict(dict, buffer, originalTransform);\n    buffer.push(\"\\nendobj\\n\");\n\n    const newRefs = [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n    if (parentBuffer !== null) {\n      newRefs.push({\n        ref: this.parent,\n        data: parentBuffer.join(\"\"),\n        xfa: null,\n      });\n    }\n\n    return newRefs;\n  }\n\n  _getDefaultCheckedAppearance(params, type) {\n    const width = this.data.rect[2] - this.data.rect[0];\n    const height = this.data.rect[3] - this.data.rect[1];\n    const bbox = [0, 0, width, height];\n\n    // Ratio used to have a mark slightly smaller than the bbox.\n    const FONT_RATIO = 0.8;\n    const fontSize = Math.min(width, height) * FONT_RATIO;\n\n    // Char Metrics\n    // Widths came from widths for ZapfDingbats.\n    // Heights are guessed with Fontforge and FoxitDingbats.pfb.\n    let metrics, char;\n    if (type === \"check\") {\n      // Char 33 (2713 in unicode)\n      metrics = {\n        width: 0.755 * fontSize,\n        height: 0.705 * fontSize,\n      };\n      char = \"\\x33\";\n    } else if (type === \"disc\") {\n      // Char 6C (25CF in unicode)\n      metrics = {\n        width: 0.791 * fontSize,\n        height: 0.705 * fontSize,\n      };\n      char = \"\\x6C\";\n    } else {\n      unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n    }\n\n    // Values to center the glyph in the bbox.\n    const xShift = (width - metrics.width) / 2;\n    const yShift = (height - metrics.height) / 2;\n\n    const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n\n    const appearanceStreamDict = new Dict(params.xref);\n    appearanceStreamDict.set(\"FormType\", 1);\n    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n    appearanceStreamDict.set(\"BBox\", bbox);\n    appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n    appearanceStreamDict.set(\"Length\", appearance.length);\n\n    const resources = new Dict(params.xref);\n    const font = new Dict(params.xref);\n    font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n    resources.set(\"Font\", font);\n\n    appearanceStreamDict.set(\"Resources\", resources);\n\n    this.checkedAppearance = new StringStream(appearance);\n    this.checkedAppearance.dict = appearanceStreamDict;\n\n    this._streams.push(this.checkedAppearance);\n  }\n\n  _processCheckBox(params) {\n    const customAppearance = params.dict.get(\"AP\");\n    if (!(customAppearance instanceof Dict)) {\n      return;\n    }\n\n    const normalAppearance = customAppearance.get(\"N\");\n    if (!(normalAppearance instanceof Dict)) {\n      return;\n    }\n\n    // See https://bugzilla.mozilla.org/show_bug.cgi?id=1722036.\n    // If we've an AS and a V then take AS.\n    const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n    if (typeof asValue === \"string\") {\n      this.data.fieldValue = asValue;\n    }\n\n    const yes =\n      this.data.fieldValue !== null && this.data.fieldValue !== \"Off\"\n        ? this.data.fieldValue\n        : \"Yes\";\n\n    const exportValues = normalAppearance.getKeys();\n    if (exportValues.length === 0) {\n      exportValues.push(\"Off\", yes);\n    } else if (exportValues.length === 1) {\n      if (exportValues[0] === \"Off\") {\n        exportValues.push(yes);\n      } else {\n        exportValues.unshift(\"Off\");\n      }\n    } else if (exportValues.includes(yes)) {\n      exportValues.length = 0;\n      exportValues.push(\"Off\", yes);\n    } else {\n      const otherYes = exportValues.find(v => v !== \"Off\");\n      exportValues.length = 0;\n      exportValues.push(\"Off\", otherYes);\n    }\n\n    // Don't use a \"V\" entry pointing to a non-existent appearance state,\n    // see e.g. bug1720411.pdf where it's an *empty* Name-instance.\n    if (!exportValues.includes(this.data.fieldValue)) {\n      this.data.fieldValue = \"Off\";\n    }\n\n    this.data.exportValue = exportValues[1];\n\n    this.checkedAppearance =\n      normalAppearance.get(this.data.exportValue) || null;\n    this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n    if (this.checkedAppearance) {\n      this._streams.push(this.checkedAppearance);\n    } else {\n      this._getDefaultCheckedAppearance(params, \"check\");\n    }\n    if (this.uncheckedAppearance) {\n      this._streams.push(this.uncheckedAppearance);\n    }\n    this._fallbackFontDict = this.fallbackFontDict;\n  }\n\n  _processRadioButton(params) {\n    this.data.fieldValue = this.data.buttonValue = null;\n\n    // The parent field's `V` entry holds a `Name` object with the appearance\n    // state of whichever child field is currently in the \"on\" state.\n    const fieldParent = params.dict.get(\"Parent\");\n    if (fieldParent instanceof Dict) {\n      this.parent = params.dict.getRaw(\"Parent\");\n      const fieldParentValue = fieldParent.get(\"V\");\n      if (fieldParentValue instanceof Name) {\n        this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n      }\n    }\n\n    // The button's value corresponds to its appearance state.\n    const appearanceStates = params.dict.get(\"AP\");\n    if (!(appearanceStates instanceof Dict)) {\n      return;\n    }\n    const normalAppearance = appearanceStates.get(\"N\");\n    if (!(normalAppearance instanceof Dict)) {\n      return;\n    }\n    for (const key of normalAppearance.getKeys()) {\n      if (key !== \"Off\") {\n        this.data.buttonValue = this._decodeFormValue(key);\n        break;\n      }\n    }\n\n    this.checkedAppearance =\n      normalAppearance.get(this.data.buttonValue) || null;\n    this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n    if (this.checkedAppearance) {\n      this._streams.push(this.checkedAppearance);\n    } else {\n      this._getDefaultCheckedAppearance(params, \"disc\");\n    }\n    if (this.uncheckedAppearance) {\n      this._streams.push(this.uncheckedAppearance);\n    }\n    this._fallbackFontDict = this.fallbackFontDict;\n  }\n\n  _processPushButton(params) {\n    if (\n      !params.dict.has(\"A\") &&\n      !params.dict.has(\"AA\") &&\n      !this.data.alternativeText\n    ) {\n      warn(\"Push buttons without action dictionaries are not supported\");\n      return;\n    }\n\n    this.data.isTooltipOnly = !params.dict.has(\"A\") && !params.dict.has(\"AA\");\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n\n  getFieldObject() {\n    let type = \"button\";\n    let exportValues;\n    if (this.data.checkBox) {\n      type = \"checkbox\";\n      exportValues = this.data.exportValue;\n    } else if (this.data.radioButton) {\n      type = \"radiobutton\";\n      exportValues = this.data.buttonValue;\n    }\n    return {\n      id: this.data.id,\n      value: this.data.fieldValue || \"Off\",\n      defaultValue: this.data.defaultFieldValue,\n      exportValues,\n      editable: !this.data.readOnly,\n      name: this.data.fieldName,\n      rect: this.data.rect,\n      hidden: this.data.hidden,\n      actions: this.data.actions,\n      page: this.data.pageIndex,\n      strokeColor: this.data.borderColor,\n      fillColor: this.data.backgroundColor,\n      type,\n    };\n  }\n\n  get fallbackFontDict() {\n    const dict = new Dict();\n    dict.set(\"BaseFont\", Name.get(\"ZapfDingbats\"));\n    dict.set(\"Type\", Name.get(\"FallbackType\"));\n    dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n    dict.set(\"Encoding\", Name.get(\"ZapfDingbatsEncoding\"));\n\n    return shadow(this, \"fallbackFontDict\", dict);\n  }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    // Determine the options. The options array may consist of strings or\n    // arrays. If the array consists of arrays, then the first element of\n    // each array is the export value and the second element of each array is\n    // the display value. If the array consists of strings, then these\n    // represent both the export and display value. In this case, we convert\n    // it to an array of arrays as well for convenience in the display layer.\n    // Note that the specification does not state that the `Opt` field is\n    // inheritable, but in practice PDF generators do make annotations\n    // inherit the options from a parent annotation (issue 8094).\n    this.data.options = [];\n\n    const options = getInheritableProperty({ dict: params.dict, key: \"Opt\" });\n    if (Array.isArray(options)) {\n      const xref = params.xref;\n      for (let i = 0, ii = options.length; i < ii; i++) {\n        const option = xref.fetchIfRef(options[i]);\n        const isOptionArray = Array.isArray(option);\n\n        this.data.options[i] = {\n          exportValue: this._decodeFormValue(\n            isOptionArray ? xref.fetchIfRef(option[0]) : option\n          ),\n          displayValue: this._decodeFormValue(\n            isOptionArray ? xref.fetchIfRef(option[1]) : option\n          ),\n        };\n      }\n    }\n\n    // The field value can be `null` if no item is selected, a string if one\n    // item is selected or an array of strings if multiple items are selected.\n    // For consistency in the API and convenience in the display layer, we\n    // always make the field value an array with zero, one or multiple items.\n    if (typeof this.data.fieldValue === \"string\") {\n      this.data.fieldValue = [this.data.fieldValue];\n    } else if (!this.data.fieldValue) {\n      this.data.fieldValue = [];\n    }\n\n    // Process field flags for the display layer.\n    this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n    this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n    this._hasText = true;\n  }\n\n  getFieldObject() {\n    const type = this.data.combo ? \"combobox\" : \"listbox\";\n    const value =\n      this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n    return {\n      id: this.data.id,\n      value,\n      defaultValue: this.data.defaultFieldValue,\n      editable: !this.data.readOnly,\n      name: this.data.fieldName,\n      rect: this.data.rect,\n      numItems: this.data.fieldValue.length,\n      multipleSelection: this.data.multiSelect,\n      hidden: this.data.hidden,\n      actions: this.data.actions,\n      items: this.data.options,\n      page: this.data.pageIndex,\n      strokeColor: this.data.borderColor,\n      fillColor: this.data.backgroundColor,\n      type,\n    };\n  }\n}\n\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    // Unset the fieldValue since it's (most likely) a `Dict` which is\n    // non-serializable and will thus cause errors when sending annotations\n    // to the main-thread (issue 10347).\n    this.data.fieldValue = null;\n  }\n\n  getFieldObject() {\n    return {\n      id: this.data.id,\n      value: null,\n      page: this.data.pageIndex,\n      type: \"signature\",\n    };\n  }\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    const DEFAULT_ICON_SIZE = 22; // px\n\n    super(parameters);\n\n    const dict = parameters.dict;\n    this.data.annotationType = AnnotationType.TEXT;\n\n    if (this.data.hasAppearance) {\n      this.data.name = \"NoIcon\";\n    } else {\n      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n      this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n    }\n\n    if (dict.has(\"State\")) {\n      this.data.state = dict.get(\"State\") || null;\n      this.data.stateModel = dict.get(\"StateModel\") || null;\n    } else {\n      this.data.state = null;\n      this.data.stateModel = null;\n    }\n  }\n}\n\nclass LinkAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    this.data.annotationType = AnnotationType.LINK;\n\n    const quadPoints = getQuadPoints(params.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n}\n\nclass PopupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POPUP;\n\n    let parentItem = parameters.dict.get(\"Parent\");\n    if (!parentItem) {\n      warn(\"Popup annotation has a missing or invalid parent annotation.\");\n      return;\n    }\n\n    const parentSubtype = parentItem.get(\"Subtype\");\n    this.data.parentType =\n      parentSubtype instanceof Name ? parentSubtype.name : null;\n    const rawParent = parameters.dict.getRaw(\"Parent\");\n    this.data.parentId = rawParent instanceof Ref ? rawParent.toString() : null;\n\n    const parentRect = parentItem.getArray(\"Rect\");\n    if (Array.isArray(parentRect) && parentRect.length === 4) {\n      this.data.parentRect = Util.normalizeRect(parentRect);\n    } else {\n      this.data.parentRect = [0, 0, 0, 0];\n    }\n\n    const rt = parentItem.get(\"RT\");\n    if (isName(rt, AnnotationReplyType.GROUP)) {\n      // Subordinate annotations in a group should inherit\n      // the group attributes from the primary annotation.\n      parentItem = parentItem.get(\"IRT\");\n    }\n\n    if (!parentItem.has(\"M\")) {\n      this.data.modificationDate = null;\n    } else {\n      this.setModificationDate(parentItem.get(\"M\"));\n      this.data.modificationDate = this.modificationDate;\n    }\n\n    if (!parentItem.has(\"C\")) {\n      // Fall back to the default background color.\n      this.data.color = null;\n    } else {\n      this.setColor(parentItem.getArray(\"C\"));\n      this.data.color = this.color;\n    }\n\n    // If the Popup annotation is not viewable, but the parent annotation is,\n    // that is most likely a bug. Fallback to inherit the flags from the parent\n    // annotation (this is consistent with the behaviour in Adobe Reader).\n    if (!this.viewable) {\n      const parentFlags = parentItem.get(\"F\");\n      if (this._isViewable(parentFlags)) {\n        this.setFlags(parentFlags);\n      }\n    }\n\n    this.setTitle(parentItem.get(\"T\"));\n    this.data.titleObj = this._title;\n\n    this.setContents(parentItem.get(\"Contents\"));\n    this.data.contentsObj = this._contents;\n\n    if (parentItem.has(\"RC\")) {\n      this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n    }\n  }\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.FREETEXT;\n  }\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.LINE;\n\n    const lineCoordinates = parameters.dict.getArray(\"L\");\n    this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n\n    if (!this.appearance) {\n      // The default stroke color is black.\n      const strokeColor = this.color\n        ? Array.from(this.color).map(c => c / 255)\n        : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n\n      // The default fill color is transparent. Setting the fill colour is\n      // necessary if/when we want to add support for non-default line endings.\n      let fillColor = null,\n        interiorColor = parameters.dict.getArray(\"IC\");\n      if (interiorColor) {\n        interiorColor = getRgbColor(interiorColor, null);\n        fillColor = interiorColor\n          ? Array.from(interiorColor).map(c => c / 255)\n          : null;\n      }\n      const fillAlpha = fillColor ? strokeAlpha : null;\n\n      const borderWidth = this.borderStyle.width || 1,\n        borderAdjust = 2 * borderWidth;\n\n      // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n      // we get similar rendering/highlighting behaviour as in Adobe Reader.\n      const bbox = [\n        this.data.lineCoordinates[0] - borderAdjust,\n        this.data.lineCoordinates[1] - borderAdjust,\n        this.data.lineCoordinates[2] + borderAdjust,\n        this.data.lineCoordinates[3] + borderAdjust,\n      ];\n      if (!Util.intersect(this.rectangle, bbox)) {\n        this.rectangle = bbox;\n      }\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${borderWidth} w`,\n        strokeColor,\n        fillColor,\n        strokeAlpha,\n        fillAlpha,\n        pointsCallback: (buffer, points) => {\n          buffer.push(\n            `${lineCoordinates[0]} ${lineCoordinates[1]} m`,\n            `${lineCoordinates[2]} ${lineCoordinates[3]} l`,\n            \"S\"\n          );\n          return [\n            points[0].x - borderWidth,\n            points[1].x + borderWidth,\n            points[3].y - borderWidth,\n            points[1].y + borderWidth,\n          ];\n        },\n      });\n    }\n  }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUARE;\n\n    if (!this.appearance) {\n      // The default stroke color is black.\n      const strokeColor = this.color\n        ? Array.from(this.color).map(c => c / 255)\n        : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n\n      // The default fill color is transparent.\n      let fillColor = null,\n        interiorColor = parameters.dict.getArray(\"IC\");\n      if (interiorColor) {\n        interiorColor = getRgbColor(interiorColor, null);\n        fillColor = interiorColor\n          ? Array.from(interiorColor).map(c => c / 255)\n          : null;\n      }\n      const fillAlpha = fillColor ? strokeAlpha : null;\n\n      if (this.borderStyle.width === 0 && !fillColor) {\n        // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n        return;\n      }\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${this.borderStyle.width} w`,\n        strokeColor,\n        fillColor,\n        strokeAlpha,\n        fillAlpha,\n        pointsCallback: (buffer, points) => {\n          const x = points[2].x + this.borderStyle.width / 2;\n          const y = points[2].y + this.borderStyle.width / 2;\n          const width = points[3].x - points[2].x - this.borderStyle.width;\n          const height = points[1].y - points[3].y - this.borderStyle.width;\n          buffer.push(`${x} ${y} ${width} ${height} re`);\n          if (fillColor) {\n            buffer.push(\"B\");\n          } else {\n            buffer.push(\"S\");\n          }\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\n        },\n      });\n    }\n  }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CIRCLE;\n\n    if (!this.appearance) {\n      // The default stroke color is black.\n      const strokeColor = this.color\n        ? Array.from(this.color).map(c => c / 255)\n        : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n\n      // The default fill color is transparent.\n      let fillColor = null;\n      let interiorColor = parameters.dict.getArray(\"IC\");\n      if (interiorColor) {\n        interiorColor = getRgbColor(interiorColor, null);\n        fillColor = interiorColor\n          ? Array.from(interiorColor).map(c => c / 255)\n          : null;\n      }\n      const fillAlpha = fillColor ? strokeAlpha : null;\n\n      if (this.borderStyle.width === 0 && !fillColor) {\n        // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n        return;\n      }\n\n      // Circles are approximated by Bézier curves with four segments since\n      // there is no circle primitive in the PDF specification. For the control\n      // points distance, see https://stackoverflow.com/a/27863181.\n      const controlPointsDistance = (4 / 3) * Math.tan(Math.PI / (2 * 4));\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${this.borderStyle.width} w`,\n        strokeColor,\n        fillColor,\n        strokeAlpha,\n        fillAlpha,\n        pointsCallback: (buffer, points) => {\n          const x0 = points[0].x + this.borderStyle.width / 2;\n          const y0 = points[0].y - this.borderStyle.width / 2;\n          const x1 = points[3].x - this.borderStyle.width / 2;\n          const y1 = points[3].y + this.borderStyle.width / 2;\n          const xMid = x0 + (x1 - x0) / 2;\n          const yMid = y0 + (y1 - y0) / 2;\n          const xOffset = ((x1 - x0) / 2) * controlPointsDistance;\n          const yOffset = ((y1 - y0) / 2) * controlPointsDistance;\n\n          buffer.push(\n            `${xMid} ${y1} m`,\n            `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`,\n            `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`,\n            `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`,\n            `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`,\n            \"h\"\n          );\n          if (fillColor) {\n            buffer.push(\"B\");\n          } else {\n            buffer.push(\"S\");\n          }\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\n        },\n      });\n    }\n  }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYLINE;\n    this.data.vertices = [];\n\n    // The vertices array is an array of numbers representing the alternating\n    // horizontal and vertical coordinates, respectively, of each vertex.\n    // Convert this to an array of objects with x and y coordinates.\n    const rawVertices = parameters.dict.getArray(\"Vertices\");\n    if (!Array.isArray(rawVertices)) {\n      return;\n    }\n    for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n      this.data.vertices.push({\n        x: rawVertices[i],\n        y: rawVertices[i + 1],\n      });\n    }\n\n    if (!this.appearance) {\n      // The default stroke color is black.\n      const strokeColor = this.color\n        ? Array.from(this.color).map(c => c / 255)\n        : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n\n      const borderWidth = this.borderStyle.width || 1,\n        borderAdjust = 2 * borderWidth;\n\n      // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n      // we get similar rendering/highlighting behaviour as in Adobe Reader.\n      const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n      for (const vertex of this.data.vertices) {\n        bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n        bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n        bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n        bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n      }\n      if (!Util.intersect(this.rectangle, bbox)) {\n        this.rectangle = bbox;\n      }\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${borderWidth} w`,\n        strokeColor,\n        strokeAlpha,\n        pointsCallback: (buffer, points) => {\n          const vertices = this.data.vertices;\n          for (let i = 0, ii = vertices.length; i < ii; i++) {\n            buffer.push(\n              `${vertices[i].x} ${vertices[i].y} ${i === 0 ? \"m\" : \"l\"}`\n            );\n          }\n          buffer.push(\"S\");\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\n        },\n      });\n    }\n  }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYGON;\n  }\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CARET;\n  }\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.INK;\n    this.data.inkLists = [];\n\n    const rawInkLists = parameters.dict.getArray(\"InkList\");\n    if (!Array.isArray(rawInkLists)) {\n      return;\n    }\n    const xref = parameters.xref;\n    for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {\n      // The raw ink lists array contains arrays of numbers representing\n      // the alternating horizontal and vertical coordinates, respectively,\n      // of each vertex. Convert this to an array of objects with x and y\n      // coordinates.\n      this.data.inkLists.push([]);\n      for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {\n        this.data.inkLists[i].push({\n          x: xref.fetchIfRef(rawInkLists[i][j]),\n          y: xref.fetchIfRef(rawInkLists[i][j + 1]),\n        });\n      }\n    }\n\n    if (!this.appearance) {\n      // The default stroke color is black.\n      const strokeColor = this.color\n        ? Array.from(this.color).map(c => c / 255)\n        : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n\n      const borderWidth = this.borderStyle.width || 1,\n        borderAdjust = 2 * borderWidth;\n\n      // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n      // we get similar rendering/highlighting behaviour as in Adobe Reader.\n      const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n      for (const inkLists of this.data.inkLists) {\n        for (const vertex of inkLists) {\n          bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n          bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n          bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n          bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n        }\n      }\n      if (!Util.intersect(this.rectangle, bbox)) {\n        this.rectangle = bbox;\n      }\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${borderWidth} w`,\n        strokeColor,\n        strokeAlpha,\n        pointsCallback: (buffer, points) => {\n          // According to the specification, see \"12.5.6.13 Ink Annotations\":\n          //   When drawn, the points shall be connected by straight lines or\n          //   curves in an implementation-dependent way.\n          // In order to simplify things, we utilize straight lines for now.\n          for (const inkList of this.data.inkLists) {\n            for (let i = 0, ii = inkList.length; i < ii; i++) {\n              buffer.push(\n                `${inkList[i].x} ${inkList[i].y} ${i === 0 ? \"m\" : \"l\"}`\n              );\n            }\n            buffer.push(\"S\");\n          }\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\n        },\n      });\n    }\n  }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.HIGHLIGHT;\n    const quadPoints = (this.data.quadPoints = getQuadPoints(\n      parameters.dict,\n      null\n    ));\n    if (quadPoints) {\n      const resources =\n        this.appearance && this.appearance.dict.get(\"Resources\");\n\n      if (!this.appearance || !(resources && resources.has(\"ExtGState\"))) {\n        if (this.appearance) {\n          // Workaround for cases where there's no /ExtGState-entry directly\n          // available, e.g. when the appearance stream contains a /XObject of\n          // the /Form-type, since that causes the highlighting to completely\n          // obsure the PDF content below it (fixes issue13242.pdf).\n          warn(\"HighlightAnnotation - ignoring built-in appearance stream.\");\n        }\n        // Default color is yellow in Acrobat Reader\n        const fillColor = this.color\n          ? Array.from(this.color).map(c => c / 255)\n          : [1, 1, 0];\n        const fillAlpha = parameters.dict.get(\"CA\");\n\n        this._setDefaultAppearance({\n          xref: parameters.xref,\n          fillColor,\n          blendMode: \"Multiply\",\n          fillAlpha,\n          pointsCallback: (buffer, points) => {\n            buffer.push(\n              `${points[0].x} ${points[0].y} m`,\n              `${points[1].x} ${points[1].y} l`,\n              `${points[3].x} ${points[3].y} l`,\n              `${points[2].x} ${points[2].y} l`,\n              \"f\"\n            );\n            return [points[0].x, points[1].x, points[3].y, points[1].y];\n          },\n        });\n      }\n    } else {\n      this.data.hasPopup = false;\n    }\n  }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.UNDERLINE;\n    const quadPoints = (this.data.quadPoints = getQuadPoints(\n      parameters.dict,\n      null\n    ));\n    if (quadPoints) {\n      if (!this.appearance) {\n        // Default color is black\n        const strokeColor = this.color\n          ? Array.from(this.color).map(c => c / 255)\n          : [0, 0, 0];\n        const strokeAlpha = parameters.dict.get(\"CA\");\n\n        this._setDefaultAppearance({\n          xref: parameters.xref,\n          extra: \"[] 0 d 1 w\",\n          strokeColor,\n          strokeAlpha,\n          pointsCallback: (buffer, points) => {\n            buffer.push(\n              `${points[2].x} ${points[2].y} m`,\n              `${points[3].x} ${points[3].y} l`,\n              \"S\"\n            );\n            return [points[0].x, points[1].x, points[3].y, points[1].y];\n          },\n        });\n      }\n    } else {\n      this.data.hasPopup = false;\n    }\n  }\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUIGGLY;\n\n    const quadPoints = (this.data.quadPoints = getQuadPoints(\n      parameters.dict,\n      null\n    ));\n    if (quadPoints) {\n      if (!this.appearance) {\n        // Default color is black\n        const strokeColor = this.color\n          ? Array.from(this.color).map(c => c / 255)\n          : [0, 0, 0];\n        const strokeAlpha = parameters.dict.get(\"CA\");\n\n        this._setDefaultAppearance({\n          xref: parameters.xref,\n          extra: \"[] 0 d 1 w\",\n          strokeColor,\n          strokeAlpha,\n          pointsCallback: (buffer, points) => {\n            const dy = (points[0].y - points[2].y) / 6;\n            let shift = dy;\n            let x = points[2].x;\n            const y = points[2].y;\n            const xEnd = points[3].x;\n            buffer.push(`${x} ${y + shift} m`);\n            do {\n              x += 2;\n              shift = shift === 0 ? dy : 0;\n              buffer.push(`${x} ${y + shift} l`);\n            } while (x < xEnd);\n            buffer.push(\"S\");\n            return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];\n          },\n        });\n      }\n    } else {\n      this.data.hasPopup = false;\n    }\n  }\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STRIKEOUT;\n\n    const quadPoints = (this.data.quadPoints = getQuadPoints(\n      parameters.dict,\n      null\n    ));\n    if (quadPoints) {\n      if (!this.appearance) {\n        // Default color is black\n        const strokeColor = this.color\n          ? Array.from(this.color).map(c => c / 255)\n          : [0, 0, 0];\n        const strokeAlpha = parameters.dict.get(\"CA\");\n\n        this._setDefaultAppearance({\n          xref: parameters.xref,\n          extra: \"[] 0 d 1 w\",\n          strokeColor,\n          strokeAlpha,\n          pointsCallback: (buffer, points) => {\n            buffer.push(\n              `${(points[0].x + points[2].x) / 2} ` +\n                `${(points[0].y + points[2].y) / 2} m`,\n              `${(points[1].x + points[3].x) / 2} ` +\n                `${(points[1].y + points[3].y) / 2} l`,\n              \"S\"\n            );\n            return [points[0].x, points[1].x, points[3].y, points[1].y];\n          },\n        });\n      }\n    } else {\n      this.data.hasPopup = false;\n    }\n  }\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STAMP;\n  }\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    const file = new FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n\n    this.data.annotationType = AnnotationType.FILEATTACHMENT;\n    this.data.file = file.serializable;\n  }\n}\n\nexport {\n  Annotation,\n  AnnotationBorderStyle,\n  AnnotationFactory,\n  getQuadPoints,\n  MarkupAnnotation,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OPS, warn } from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { escapePDFName } from \"./core_utils.js\";\nimport { EvaluatorPreprocessor } from \"./evaluator.js\";\nimport { Name } from \"./primitives.js\";\nimport { StringStream } from \"./stream.js\";\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n  constructor(str) {\n    super(new StringStream(str));\n  }\n\n  parse() {\n    const operation = {\n      fn: 0,\n      args: [],\n    };\n    const result = {\n      fontSize: 0,\n      fontName: \"\",\n      fontColor: /* black = */ new Uint8ClampedArray(3),\n    };\n\n    try {\n      while (true) {\n        operation.args.length = 0; // Ensure that `args` it's always reset.\n\n        if (!this.read(operation)) {\n          break;\n        }\n        if (this.savedStatesDepth !== 0) {\n          continue; // Don't get info in save/restore sections.\n        }\n        const { fn, args } = operation;\n\n        switch (fn | 0) {\n          case OPS.setFont:\n            const [fontName, fontSize] = args;\n            if (fontName instanceof Name) {\n              result.fontName = fontName.name;\n            }\n            if (typeof fontSize === \"number\" && fontSize > 0) {\n              result.fontSize = fontSize;\n            }\n            break;\n          case OPS.setFillRGBColor:\n            ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n          case OPS.setFillGray:\n            ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n          case OPS.setFillColorSpace:\n            ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n        }\n      }\n    } catch (reason) {\n      warn(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n    }\n\n    return result;\n  }\n}\n\n// Parse DA to extract font and color information.\nfunction parseDefaultAppearance(str) {\n  return new DefaultAppearanceEvaluator(str).parse();\n}\n\n// Create default appearance string from some information.\nfunction createDefaultAppearance({ fontSize, fontName, fontColor }) {\n  let colorCmd;\n  if (fontColor.every(c => c === 0)) {\n    colorCmd = \"0 g\";\n  } else {\n    colorCmd =\n      Array.from(fontColor)\n        .map(c => (c / 255).toFixed(2))\n        .join(\" \") + \" rg\";\n  }\n  return `/${escapePDFName(fontName)} ${fontSize} Tf ${colorCmd}`;\n}\n\nexport { createDefaultAppearance, parseDefaultAppearance };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n  const COMPONENTS = 3;\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let newIndex = 0,\n    oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1 * COMPONENTS;\n\n  for (let i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n  }\n  for (let i = 0; i < h2; i++) {\n    const py = Math.floor(i * yRatio) * w1Scanline;\n    for (let j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      newIndex += alpha01;\n    }\n  }\n}\n\nclass ColorSpace {\n  constructor(name, numComps) {\n    if (this.constructor === ColorSpace) {\n      unreachable(\"Cannot initialize ColorSpace.\");\n    }\n    this.name = name;\n    this.numComps = numComps;\n  }\n\n  /**\n   * Converts the color value to the RGB color. The color components are\n   * located in the src array starting from the srcOffset. Returns the array\n   * of the rgb components, each value ranging from [0,255].\n   */\n  getRgb(src, srcOffset) {\n    const rgb = new Uint8ClampedArray(3);\n    this.getRgbItem(src, srcOffset, rgb, 0);\n    return rgb;\n  }\n\n  /**\n   * Converts the color value to the RGB color, similar to the getRgb method.\n   * The result placed into the dest array starting from the destOffset.\n   */\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    unreachable(\"Should not call ColorSpace.getRgbItem\");\n  }\n\n  /**\n   * Converts the specified number of the color values to the RGB colors.\n   * The colors are located in the src array starting from the srcOffset.\n   * The result is placed into the dest array starting from the destOffset.\n   * The src array items shall be in [0,2^bits) range, the dest array items\n   * will be in [0,255] range. alpha01 indicates how many alpha components\n   * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n   * array).\n   */\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n  }\n\n  /**\n   * Determines the number of bytes required to store the result of the\n   * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n   * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n   */\n  getOutputLength(inputLength, alpha01) {\n    unreachable(\"Should not call ColorSpace.getOutputLength\");\n  }\n\n  /**\n   * Returns true if source data will be equal the result/output data.\n   */\n  isPassthrough(bits) {\n    return false;\n  }\n\n  /**\n   * Refer to the static `ColorSpace.isDefaultDecode` method below.\n   */\n  isDefaultDecode(decodeMap, bpc) {\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n  }\n\n  /**\n   * Fills in the RGB colors in the destination buffer.  alpha01 indicates\n   * how many alpha components there are in the dest array; it will be either\n   * 0 (RGB array) or 1 (RGBA array).\n   */\n  fillRgb(\n    dest,\n    originalWidth,\n    originalHeight,\n    width,\n    height,\n    actualHeight,\n    bpc,\n    comps,\n    alpha01\n  ) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n      );\n    }\n    const count = originalWidth * originalHeight;\n    let rgbBuf = null;\n    const numComponentColors = 1 << bpc;\n    const needsResizing = originalHeight !== height || originalWidth !== width;\n\n    if (this.isPassthrough(bpc)) {\n      rgbBuf = comps;\n    } else if (\n      this.numComps === 1 &&\n      count > numComponentColors &&\n      this.name !== \"DeviceGray\" &&\n      this.name !== \"DeviceRGB\"\n    ) {\n      // Optimization: create a color map when there is just one component and\n      // we are converting more colors than the size of the color map. We\n      // don't build the map if the colorspace is gray or rgb since those\n      // methods are faster than building a map. This mainly offers big speed\n      // ups for indexed and alternate colorspaces.\n      //\n      // TODO it may be worth while to cache the color map. While running\n      // testing I never hit a cache so I will leave that out for now (perhaps\n      // we are reparsing colorspaces too much?).\n      const allColors =\n        bpc <= 8\n          ? new Uint8Array(numComponentColors)\n          : new Uint16Array(numComponentColors);\n      for (let i = 0; i < numComponentColors; i++) {\n        allColors[i] = i;\n      }\n      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n      this.getRgbBuffer(\n        allColors,\n        0,\n        numComponentColors,\n        colorMap,\n        0,\n        bpc,\n        /* alpha01 = */ 0\n      );\n\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        let destPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          dest[destPos++] = colorMap[key];\n          dest[destPos++] = colorMap[key + 1];\n          dest[destPos++] = colorMap[key + 2];\n          destPos += alpha01;\n        }\n      } else {\n        rgbBuf = new Uint8Array(count * 3);\n        let rgbPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          rgbBuf[rgbPos++] = colorMap[key];\n          rgbBuf[rgbPos++] = colorMap[key + 1];\n          rgbBuf[rgbPos++] = colorMap[key + 2];\n        }\n      }\n    } else {\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        this.getRgbBuffer(\n          comps,\n          0,\n          width * actualHeight,\n          dest,\n          0,\n          bpc,\n          alpha01\n        );\n      } else {\n        rgbBuf = new Uint8ClampedArray(count * 3);\n        this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n      }\n    }\n\n    if (rgbBuf) {\n      if (needsResizing) {\n        resizeRgbImage(\n          rgbBuf,\n          dest,\n          originalWidth,\n          originalHeight,\n          width,\n          height,\n          alpha01\n        );\n      } else {\n        let destPos = 0,\n          rgbPos = 0;\n        for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          destPos += alpha01;\n        }\n      }\n    }\n  }\n\n  /**\n   * True if the colorspace has components in the default range of [0, 1].\n   * This should be true for all colorspaces except for lab color spaces\n   * which are [0,100], [-128, 127], [-128, 127].\n   */\n  get usesZeroToOneRange() {\n    return shadow(this, \"usesZeroToOneRange\", true);\n  }\n\n  /**\n   * @private\n   */\n  static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n    if (!localColorSpaceCache) {\n      throw new Error(\n        'ColorSpace._cache - expected \"localColorSpaceCache\" argument.'\n      );\n    }\n    if (!parsedColorSpace) {\n      throw new Error(\n        'ColorSpace._cache - expected \"parsedColorSpace\" argument.'\n      );\n    }\n    let csName, csRef;\n    if (cacheKey instanceof Ref) {\n      csRef = cacheKey;\n\n      // If parsing succeeded, we know that this call cannot throw.\n      cacheKey = xref.fetch(cacheKey);\n    }\n    if (cacheKey instanceof Name) {\n      csName = cacheKey.name;\n    }\n    if (csName || csRef) {\n      localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n    }\n  }\n\n  static getCached(cacheKey, xref, localColorSpaceCache) {\n    if (!localColorSpaceCache) {\n      throw new Error(\n        'ColorSpace.getCached - expected \"localColorSpaceCache\" argument.'\n      );\n    }\n    if (cacheKey instanceof Ref) {\n      const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n      if (localColorSpace) {\n        return localColorSpace;\n      }\n\n      try {\n        cacheKey = xref.fetch(cacheKey);\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        // Any errors should be handled during parsing, rather than here.\n      }\n    }\n    if (cacheKey instanceof Name) {\n      const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n      if (localColorSpace) {\n        return localColorSpace;\n      }\n    }\n    return null;\n  }\n\n  static async parseAsync({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        !this.getCached(cs, xref, localColorSpaceCache),\n        \"Expected `ColorSpace.getCached` to have been manually checked \" +\n          \"before calling `ColorSpace.parseAsync`.\"\n      );\n    }\n    const parsedColorSpace = this._parse(\n      cs,\n      xref,\n      resources,\n      pdfFunctionFactory\n    );\n\n    // Attempt to cache the parsed ColorSpace, by name and/or reference.\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n    return parsedColorSpace;\n  }\n\n  static parse({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n    if (cachedColorSpace) {\n      return cachedColorSpace;\n    }\n    const parsedColorSpace = this._parse(\n      cs,\n      xref,\n      resources,\n      pdfFunctionFactory\n    );\n\n    // Attempt to cache the parsed ColorSpace, by name and/or reference.\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n    return parsedColorSpace;\n  }\n\n  /**\n   * @private\n   */\n  static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n    cs = xref.fetchIfRef(cs);\n    if (cs instanceof Name) {\n      switch (cs.name) {\n        case \"G\":\n        case \"DeviceGray\":\n          return this.singletons.gray;\n        case \"RGB\":\n        case \"DeviceRGB\":\n          return this.singletons.rgb;\n        case \"CMYK\":\n        case \"DeviceCMYK\":\n          return this.singletons.cmyk;\n        case \"Pattern\":\n          return new PatternCS(/* baseCS = */ null);\n        default:\n          if (resources instanceof Dict) {\n            const colorSpaces = resources.get(\"ColorSpace\");\n            if (colorSpaces instanceof Dict) {\n              const resourcesCS = colorSpaces.get(cs.name);\n              if (resourcesCS) {\n                if (resourcesCS instanceof Name) {\n                  return this._parse(\n                    resourcesCS,\n                    xref,\n                    resources,\n                    pdfFunctionFactory\n                  );\n                }\n                cs = resourcesCS;\n                break;\n              }\n            }\n          }\n          throw new FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n      }\n    }\n    if (Array.isArray(cs)) {\n      const mode = xref.fetchIfRef(cs[0]).name;\n      let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n      switch (mode) {\n        case \"G\":\n        case \"DeviceGray\":\n          return this.singletons.gray;\n        case \"RGB\":\n        case \"DeviceRGB\":\n          return this.singletons.rgb;\n        case \"CMYK\":\n        case \"DeviceCMYK\":\n          return this.singletons.cmyk;\n        case \"CalGray\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.get(\"Gamma\");\n          return new CalGrayCS(whitePoint, blackPoint, gamma);\n        case \"CalRGB\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.getArray(\"Gamma\");\n          const matrix = params.getArray(\"Matrix\");\n          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n        case \"ICCBased\":\n          const stream = xref.fetchIfRef(cs[1]);\n          const dict = stream.dict;\n          numComps = dict.get(\"N\");\n          const alt = dict.get(\"Alternate\");\n          if (alt) {\n            const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n            // Ensure that the number of components are correct,\n            // and also (indirectly) that it is not a PatternCS.\n            if (altCS.numComps === numComps) {\n              return altCS;\n            }\n            warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n          }\n          if (numComps === 1) {\n            return this.singletons.gray;\n          } else if (numComps === 3) {\n            return this.singletons.rgb;\n          } else if (numComps === 4) {\n            return this.singletons.cmyk;\n          }\n          break;\n        case \"Pattern\":\n          baseCS = cs[1] || null;\n          if (baseCS) {\n            baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n          }\n          return new PatternCS(baseCS);\n        case \"I\":\n        case \"Indexed\":\n          baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n          const hiVal = xref.fetchIfRef(cs[2]) + 1;\n          const lookup = xref.fetchIfRef(cs[3]);\n          return new IndexedCS(baseCS, hiVal, lookup);\n        case \"Separation\":\n        case \"DeviceN\":\n          const name = xref.fetchIfRef(cs[1]);\n          numComps = Array.isArray(name) ? name.length : 1;\n          baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n          const tintFn = pdfFunctionFactory.create(cs[3]);\n          return new AlternateCS(numComps, baseCS, tintFn);\n        case \"Lab\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          const range = params.getArray(\"Range\");\n          return new LabCS(whitePoint, blackPoint, range);\n        default:\n          throw new FormatError(`Unimplemented ColorSpace object: ${mode}`);\n      }\n    }\n    throw new FormatError(`Unrecognized ColorSpace object: ${cs}`);\n  }\n\n  /**\n   * Checks if a decode map matches the default decode map for a color space.\n   * This handles the general decode maps where there are two values per\n   * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n   * This does not handle Lab, Indexed, or Pattern decode maps since they are\n   * slightly different.\n   * @param {Array} decode - Decode map (usually from an image).\n   * @param {number} numComps - Number of components the color space has.\n   */\n  static isDefaultDecode(decode, numComps) {\n    if (!Array.isArray(decode)) {\n      return true;\n    }\n    if (numComps * 2 !== decode.length) {\n      warn(\"The decode map is not the correct length\");\n      return true;\n    }\n    for (let i = 0, ii = decode.length; i < ii; i += 2) {\n      if (decode[i] !== 0 || decode[i + 1] !== 1) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  static get singletons() {\n    return shadow(this, \"singletons\", {\n      get gray() {\n        return shadow(this, \"gray\", new DeviceGrayCS());\n      },\n      get rgb() {\n        return shadow(this, \"rgb\", new DeviceRgbCS());\n      },\n      get cmyk() {\n        return shadow(this, \"cmyk\", new DeviceCmykCS());\n      },\n    });\n  }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces.  A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n  constructor(numComps, base, tintFn) {\n    super(\"Alternate\", numComps);\n    this.base = base;\n    this.tintFn = tintFn;\n    this.tmpBuf = new Float32Array(base.numComps);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const tmpBuf = this.tmpBuf;\n    this.tintFn(src, srcOffset, tmpBuf, 0);\n    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const tintFn = this.tintFn;\n    const base = this.base;\n    const scale = 1 / ((1 << bits) - 1);\n    const baseNumComps = base.numComps;\n    const usesZeroToOneRange = base.usesZeroToOneRange;\n    const isPassthrough =\n      (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n    let pos = isPassthrough ? destOffset : 0;\n    const baseBuf = isPassthrough\n      ? dest\n      : new Uint8ClampedArray(baseNumComps * count);\n    const numComps = this.numComps;\n\n    const scaled = new Float32Array(numComps);\n    const tinted = new Float32Array(baseNumComps);\n    let i, j;\n\n    for (i = 0; i < count; i++) {\n      for (j = 0; j < numComps; j++) {\n        scaled[j] = src[srcOffset++] * scale;\n      }\n      tintFn(scaled, 0, tinted, 0);\n      if (usesZeroToOneRange) {\n        for (j = 0; j < baseNumComps; j++) {\n          baseBuf[pos++] = tinted[j] * 255;\n        }\n      } else {\n        base.getRgbItem(tinted, 0, baseBuf, pos);\n        pos += baseNumComps;\n      }\n    }\n\n    if (!isPassthrough) {\n      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(\n      (inputLength * this.base.numComps) / this.numComps,\n      alpha01\n    );\n  }\n}\n\nclass PatternCS extends ColorSpace {\n  constructor(baseCS) {\n    super(\"Pattern\", null);\n    this.base = baseCS;\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    unreachable(\"Should not call PatternCS.isDefaultDecode\");\n  }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n  constructor(base, highVal, lookup) {\n    super(\"Indexed\", 1);\n    this.base = base;\n    this.highVal = highVal;\n\n    const length = base.numComps * highVal;\n    this.lookup = new Uint8Array(length);\n\n    if (lookup instanceof BaseStream) {\n      const bytes = lookup.getBytes(length);\n      this.lookup.set(bytes);\n    } else if (typeof lookup === \"string\") {\n      for (let i = 0; i < length; ++i) {\n        this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n      }\n    } else {\n      throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n    }\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const numComps = this.base.numComps;\n    const start = src[srcOffset] * numComps;\n    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const base = this.base;\n    const numComps = base.numComps;\n    const outputDelta = base.getOutputLength(numComps, alpha01);\n    const lookup = this.lookup;\n\n    for (let i = 0; i < count; ++i) {\n      const lookupPos = src[srcOffset++] * numComps;\n      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n      destOffset += outputDelta;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    if (!Array.isArray(decodeMap)) {\n      return true;\n    }\n    if (decodeMap.length !== 2) {\n      warn(\"Decode map length is not correct\");\n      return true;\n    }\n    if (!Number.isInteger(bpc) || bpc < 1) {\n      warn(\"Bits per component is not correct\");\n      return true;\n    }\n    return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceGray\", 1);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const c = src[srcOffset] * 255;\n    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      const c = scale * src[j++];\n      dest[q++] = c;\n      dest[q++] = c;\n      dest[q++] = c;\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01);\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceRGB\", 3);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    dest[destOffset] = src[srcOffset] * 255;\n    dest[destOffset + 1] = src[srcOffset + 1] * 255;\n    dest[destOffset + 2] = src[srcOffset + 2] * 255;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    if (bits === 8 && alpha01 === 0) {\n      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n      return;\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return ((inputLength * (3 + alpha01)) / 3) | 0;\n  }\n\n  isPassthrough(bits) {\n    return bits === 8;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n  // The coefficients below was found using numerical analysis: the method of\n  // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n  // where color_value is the tabular value from the table of sampled RGB colors\n  // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n  // CMYK color conversion using the estimation below:\n  //   f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n    const c = src[srcOffset] * srcScale;\n    const m = src[srcOffset + 1] * srcScale;\n    const y = src[srcOffset + 2] * srcScale;\n    const k = src[srcOffset + 3] * srcScale;\n\n    dest[destOffset] =\n      255 +\n      c *\n        (-4.387332384609988 * c +\n          54.48615194189176 * m +\n          18.82290502165302 * y +\n          212.25662451639585 * k +\n          -285.2331026137004) +\n      m *\n        (1.7149763477362134 * m -\n          5.6096736904047315 * y +\n          -17.873870861415444 * k -\n          5.497006427196366) +\n      y *\n        (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n      k * (-21.86122147463605 * k - 189.48180835922747);\n\n    dest[destOffset + 1] =\n      255 +\n      c *\n        (8.841041422036149 * c +\n          60.118027045597366 * m +\n          6.871425592049007 * y +\n          31.159100130055922 * k +\n          -79.2970844816548) +\n      m *\n        (-15.310361306967817 * m +\n          17.575251261109482 * y +\n          131.35250912493976 * k -\n          190.9453302588951) +\n      y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n      k * (-20.737325471181034 * k - 187.80453709719578);\n\n    dest[destOffset + 2] =\n      255 +\n      c *\n        (0.8842522430003296 * c +\n          8.078677503112928 * m +\n          30.89978309703729 * y -\n          0.23883238689178934 * k +\n          -14.183576799673286) +\n      m *\n        (10.49593273432072 * m +\n          63.02378494754052 * y +\n          50.606957656360734 * k -\n          112.23884253719248) +\n      y *\n        (0.03296041114873217 * y +\n          115.60384449646641 * k +\n          -193.58209356861505) +\n      k * (-22.33816807309886 * k - 180.12613974708367);\n  }\n\n  // eslint-disable-next-line no-shadow\n  class DeviceCmykCS extends ColorSpace {\n    constructor() {\n      super(\"DeviceCMYK\", 4);\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(src, srcOffset, 1, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n      for (let i = 0; i < count; i++) {\n        convertToRgb(src, srcOffset, scale, dest, destOffset);\n        srcOffset += 4;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength / 4) * (3 + alpha01)) | 0;\n    }\n  }\n  return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A represents a gray component of a calibrated gray space.\n    // A <---> AG in the spec\n    const A = src[srcOffset] * scale;\n    const AG = A ** cs.G;\n\n    // Computes L as per spec. ( = cs.YW * AG )\n    // Except if other than default BlackPoint values are used.\n    const L = cs.YW * AG;\n    // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n    // Convert values to rgb range [0, 255].\n    const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n    dest[destOffset] = val;\n    dest[destOffset + 1] = val;\n    dest[destOffset + 2] = val;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class CalGrayCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma) {\n      super(\"CalGray\", 1);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space CalGray\"\n        );\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      gamma = gamma || 1;\n\n      // Translate arguments to spec variables.\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      this.G = gamma;\n\n      // Validate variables as per spec.\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          `Invalid WhitePoint components for ${this.name}` +\n            \", no fallback available\"\n        );\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n        warn(\n          `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n            `ZB: ${this.ZB}, only default values are supported.`\n        );\n      }\n\n      if (this.G < 1) {\n        info(\n          `Invalid Gamma: ${this.G} for ${this.name}, ` +\n            \"falling back to default.\"\n        );\n        this.G = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 1;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return inputLength * (3 + alpha01);\n    }\n  }\n  return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n  // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n  // matrices.\n  // prettier-ignore\n  const BRADFORD_SCALE_MATRIX = new Float32Array([\n    0.8951, 0.2664, -0.1614,\n    -0.7502, 1.7135, 0.0367,\n    0.0389, -0.0685, 1.0296]);\n\n  // prettier-ignore\n  const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n    0.9869929, -0.1470543, 0.1599627,\n    0.4323053, 0.5183603, 0.0492912,\n    -0.0085287, 0.0400428, 0.9684867]);\n\n  // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n  // prettier-ignore\n  const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n    3.2404542, -1.5371385, -0.4985314,\n    -0.9692660, 1.8760108, 0.0415560,\n    0.0556434, -0.2040259, 1.0572252]);\n\n  const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n  const tempNormalizeMatrix = new Float32Array(3);\n  const tempConvertMatrix1 = new Float32Array(3);\n  const tempConvertMatrix2 = new Float32Array(3);\n\n  const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n  function matrixProduct(a, b, result) {\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n  }\n\n  function convertToFlat(sourceWhitePoint, LMS, result) {\n    result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n  }\n\n  function convertToD65(sourceWhitePoint, LMS, result) {\n    const D65X = 0.95047;\n    const D65Y = 1;\n    const D65Z = 1.08883;\n\n    result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n  }\n\n  function sRGBTransferFunction(color) {\n    // See http://en.wikipedia.org/wiki/SRGB.\n    if (color <= 0.0031308) {\n      return adjustToRange(0, 1, 12.92 * color);\n    }\n    // Optimization:\n    // If color is close enough to 1, skip calling the following transform\n    // since calling Math.pow is expensive. If color is larger than\n    // the threshold, the final result is larger than 254.5 since\n    // ((1 + 0.055) * 0.99554525 ** (1 / 2.4) - 0.055) * 255 ===\n    // 254.50000003134699\n    if (color >= 0.99554525) {\n      return 1;\n    }\n    return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n  }\n\n  function adjustToRange(min, max, value) {\n    return Math.max(min, Math.min(max, value));\n  }\n\n  function decodeL(L) {\n    if (L < 0) {\n      return -decodeL(-L);\n    }\n    if (L > 8.0) {\n      return ((L + 16) / 116) ** 3;\n    }\n    return L * DECODE_L_CONSTANT;\n  }\n\n  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n    // In case the blackPoint is already the default blackPoint then there is\n    // no need to do compensation.\n    if (\n      sourceBlackPoint[0] === 0 &&\n      sourceBlackPoint[1] === 0 &&\n      sourceBlackPoint[2] === 0\n    ) {\n      result[0] = XYZ_Flat[0];\n      result[1] = XYZ_Flat[1];\n      result[2] = XYZ_Flat[2];\n      return;\n    }\n\n    // For the blackPoint calculation details, please see\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    // The destination blackPoint is the default blackPoint [0, 0, 0].\n    const zeroDecodeL = decodeL(0);\n\n    const X_DST = zeroDecodeL;\n    const X_SRC = decodeL(sourceBlackPoint[0]);\n\n    const Y_DST = zeroDecodeL;\n    const Y_SRC = decodeL(sourceBlackPoint[1]);\n\n    const Z_DST = zeroDecodeL;\n    const Z_SRC = decodeL(sourceBlackPoint[2]);\n\n    const X_Scale = (1 - X_DST) / (1 - X_SRC);\n    const X_Offset = 1 - X_Scale;\n\n    const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n    const Y_Offset = 1 - Y_Scale;\n\n    const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n    const Z_Offset = 1 - Z_Scale;\n\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n  }\n\n  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n    // In case the whitePoint is already flat then there is no need to do\n    // normalization.\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n      result[0] = XYZ_In[0];\n      result[1] = XYZ_In[1];\n      result[2] = XYZ_In[2];\n      return;\n    }\n\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_Flat = tempNormalizeMatrix;\n    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n  }\n\n  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_D65 = tempNormalizeMatrix;\n    convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n  }\n\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A, B and C represent a red, green and blue components of a calibrated\n    // rgb space.\n    const A = adjustToRange(0, 1, src[srcOffset] * scale);\n    const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n    const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n    // A <---> AGR in the spec\n    // B <---> BGG in the spec\n    // C <---> CGB in the spec\n    const AGR = A === 1 ? 1 : A ** cs.GR;\n    const BGG = B === 1 ? 1 : B ** cs.GG;\n    const CGB = C === 1 ? 1 : C ** cs.GB;\n\n    // Computes intermediate variables L, M, N as per spec.\n    // To decode X, Y, Z values map L, M, N directly to them.\n    const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n    const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n    const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n    // The following calculations are based on this document:\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    const XYZ = tempConvertMatrix1;\n    XYZ[0] = X;\n    XYZ[1] = Y;\n    XYZ[2] = Z;\n    const XYZ_Flat = tempConvertMatrix2;\n\n    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n    const XYZ_Black = tempConvertMatrix1;\n    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n    const XYZ_D65 = tempConvertMatrix2;\n    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n    const SRGB = tempConvertMatrix1;\n    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n    // Convert the values to rgb range [0, 255].\n    dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n    dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n    dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class CalRGBCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma, matrix) {\n      super(\"CalRGB\", 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space CalRGB\"\n        );\n      }\n      blackPoint = blackPoint || new Float32Array(3);\n      gamma = gamma || new Float32Array([1, 1, 1]);\n      matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n      // Translate arguments to spec variables.\n      const XW = whitePoint[0];\n      const YW = whitePoint[1];\n      const ZW = whitePoint[2];\n      this.whitePoint = whitePoint;\n\n      const XB = blackPoint[0];\n      const YB = blackPoint[1];\n      const ZB = blackPoint[2];\n      this.blackPoint = blackPoint;\n\n      this.GR = gamma[0];\n      this.GG = gamma[1];\n      this.GB = gamma[2];\n\n      this.MXA = matrix[0];\n      this.MYA = matrix[1];\n      this.MZA = matrix[2];\n      this.MXB = matrix[3];\n      this.MYB = matrix[4];\n      this.MZB = matrix[5];\n      this.MXC = matrix[6];\n      this.MYC = matrix[7];\n      this.MZC = matrix[8];\n\n      // Validate variables as per spec.\n      if (XW < 0 || ZW < 0 || YW !== 1) {\n        throw new FormatError(\n          `Invalid WhitePoint components for ${this.name}` +\n            \", no fallback available\"\n        );\n      }\n\n      if (XB < 0 || YB < 0 || ZB < 0) {\n        info(\n          `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n            \"falling back to default.\"\n        );\n        this.blackPoint = new Float32Array(3);\n      }\n\n      if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n        info(\n          `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n            `${this.name}, falling back to default.`\n        );\n        this.GR = this.GG = this.GB = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength * (3 + alpha01)) / 3) | 0;\n    }\n  }\n  return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n  // Function g(x) from spec\n  function fn_g(x) {\n    let result;\n    if (x >= 6 / 29) {\n      result = x ** 3;\n    } else {\n      result = (108 / 841) * (x - 4 / 29);\n    }\n    return result;\n  }\n\n  function decode(value, high1, low2, high2) {\n    return low2 + (value * (high2 - low2)) / high1;\n  }\n\n  // If decoding is needed maxVal should be 2^bits per component - 1.\n  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n    // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n    // not the usual [0, 1]. If a command like setFillColor is used the src\n    // values will already be within the correct range. However, if we are\n    // converting an image we have to map the values to the correct range given\n    // above.\n    // Ls,as,bs <---> L*,a*,b* in the spec\n    let Ls = src[srcOffset];\n    let as = src[srcOffset + 1];\n    let bs = src[srcOffset + 2];\n    if (maxVal !== false) {\n      Ls = decode(Ls, maxVal, 0, 100);\n      as = decode(as, maxVal, cs.amin, cs.amax);\n      bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n    }\n\n    // Adjust limits of 'as' and 'bs'\n    if (as > cs.amax) {\n      as = cs.amax;\n    } else if (as < cs.amin) {\n      as = cs.amin;\n    }\n    if (bs > cs.bmax) {\n      bs = cs.bmax;\n    } else if (bs < cs.bmin) {\n      bs = cs.bmin;\n    }\n\n    // Computes intermediate variables X,Y,Z as per spec\n    const M = (Ls + 16) / 116;\n    const L = M + as / 500;\n    const N = M - bs / 200;\n\n    const X = cs.XW * fn_g(L);\n    const Y = cs.YW * fn_g(M);\n    const Z = cs.ZW * fn_g(N);\n\n    let r, g, b;\n    // Using different conversions for D50 and D65 white points,\n    // per http://www.color.org/srgb.pdf\n    if (cs.ZW < 1) {\n      // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n    } else {\n      // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n    }\n    // Convert the color values to the [0,255] range (clamping is automatic).\n    dest[destOffset] = Math.sqrt(r) * 255;\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class LabCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, range) {\n      super(\"Lab\", 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space Lab\"\n        );\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      range = range || [-100, 100, -100, 100];\n\n      // Translate args to spec variables\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n      this.amin = range[0];\n      this.amax = range[1];\n      this.bmin = range[2];\n      this.bmax = range[3];\n\n      // These are here just for completeness - the spec doesn't offer any\n      // formulas that use BlackPoint in Lab\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      // Validate vars as per spec\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          \"Invalid WhitePoint components, no fallback available\"\n        );\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(\"Invalid BlackPoint, falling back to default\");\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.amin > this.amax || this.bmin > this.bmax) {\n        info(\"Invalid Range, falling back to defaults\");\n        this.amin = -100;\n        this.amax = 100;\n        this.bmin = -100;\n        this.bmax = 100;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'LabCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, false, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const maxVal = (1 << bits) - 1;\n      for (let i = 0; i < count; i++) {\n        convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength * (3 + alpha01)) / 3) | 0;\n    }\n\n    isDefaultDecode(decodeMap, bpc) {\n      // XXX: Decoding is handled with the lab conversion because of the strange\n      // ranges that are used.\n      return true;\n    }\n\n    get usesZeroToOneRange() {\n      return shadow(this, \"usesZeroToOneRange\", false);\n    }\n  }\n  return LabCS;\n})();\n\nexport { ColorSpace };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-var */\n\nimport {\n  AbortException,\n  assert,\n  CMapCompressionType,\n  createPromiseCapability,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  IDENTITY_MATRIX,\n  info,\n  isArrayEqual,\n  OPS,\n  shadow,\n  stringToPDFString,\n  TextRenderingMode,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { CMapFactory, IdentityCMap } from \"./cmap.js\";\nimport { Cmd, Dict, EOF, isName, Name, Ref, RefSet } from \"./primitives.js\";\nimport { ErrorFont, Font } from \"./fonts.js\";\nimport { FontFlags, getFontType } from \"./fonts_utils.js\";\nimport {\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  WinAnsiEncoding,\n  ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n  getFontNameToFileMap,\n  getSerifFonts,\n  getStandardFontName,\n  getStdFontMap,\n  getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport {\n  getNormalizedUnicodes,\n  getUnicodeForGlyph,\n  reverseIfRtl,\n} from \"./unicode.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { isPDFFunction, PDFFunctionFactory } from \"./function.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n  LocalColorSpaceCache,\n  LocalGStateCache,\n  LocalImageCache,\n  LocalTilingPatternCache,\n} from \"./image_utils.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { getMetrics } from \"./metrics.js\";\nimport { MurmurHash3_64 } from \"./murmurhash3.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PDFImage } from \"./image.js\";\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n  maxImageSize: -1,\n  disableFontFace: false,\n  ignoreErrors: false,\n  isEvalSupported: true,\n  fontExtraProperties: false,\n  useSystemFonts: true,\n  cMapUrl: null,\n  standardFontDataUrl: null,\n});\n\nconst PatternType = {\n  TILING: 1,\n  SHADING: 2,\n};\n\n// Optionally avoid sending individual, or very few, text chunks to reduce\n// `postMessage` overhead with ReadableStream (see issue 13962).\n//\n// PLEASE NOTE: This value should *not* be too large (it's used as a lower limit\n// in `enqueueChunk`), since that would cause streaming of textContent to become\n// essentially useless in practice by sending all (or most) chunks at once.\n// Also, a too large value would (indirectly) affect the main-thread `textLayer`\n// building negatively by forcing all textContent to be handled at once, which\n// could easily end up hurting *overall* performance (e.g. rendering as well).\nconst TEXT_CHUNK_BATCH_SIZE = 10;\n\nconst deferred = Promise.resolve();\n\n// Convert PDF blend mode names to HTML5 blend mode names.\nfunction normalizeBlendMode(value, parsingArray = false) {\n  if (Array.isArray(value)) {\n    // Use the first *supported* BM value in the Array (fixes issue11279.pdf).\n    for (let i = 0, ii = value.length; i < ii; i++) {\n      const maybeBM = normalizeBlendMode(value[i], /* parsingArray = */ true);\n      if (maybeBM) {\n        return maybeBM;\n      }\n    }\n    warn(`Unsupported blend mode Array: ${value}`);\n    return \"source-over\";\n  }\n\n  if (!(value instanceof Name)) {\n    if (parsingArray) {\n      return null;\n    }\n    return \"source-over\";\n  }\n  switch (value.name) {\n    case \"Normal\":\n    case \"Compatible\":\n      return \"source-over\";\n    case \"Multiply\":\n      return \"multiply\";\n    case \"Screen\":\n      return \"screen\";\n    case \"Overlay\":\n      return \"overlay\";\n    case \"Darken\":\n      return \"darken\";\n    case \"Lighten\":\n      return \"lighten\";\n    case \"ColorDodge\":\n      return \"color-dodge\";\n    case \"ColorBurn\":\n      return \"color-burn\";\n    case \"HardLight\":\n      return \"hard-light\";\n    case \"SoftLight\":\n      return \"soft-light\";\n    case \"Difference\":\n      return \"difference\";\n    case \"Exclusion\":\n      return \"exclusion\";\n    case \"Hue\":\n      return \"hue\";\n    case \"Saturation\":\n      return \"saturation\";\n    case \"Color\":\n      return \"color\";\n    case \"Luminosity\":\n      return \"luminosity\";\n  }\n  if (parsingArray) {\n    return null;\n  }\n  warn(`Unsupported blend mode: ${value.name}`);\n  return \"source-over\";\n}\n\n// Trying to minimize Date.now() usage and check every 100 time.\nclass TimeSlotManager {\n  static get TIME_SLOT_DURATION_MS() {\n    return shadow(this, \"TIME_SLOT_DURATION_MS\", 20);\n  }\n\n  static get CHECK_TIME_EVERY() {\n    return shadow(this, \"CHECK_TIME_EVERY\", 100);\n  }\n\n  constructor() {\n    this.reset();\n  }\n\n  check() {\n    if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n      return false;\n    }\n    this.checked = 0;\n    return this.endTime <= Date.now();\n  }\n\n  reset() {\n    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n    this.checked = 0;\n  }\n}\n\nclass PartialEvaluator {\n  constructor({\n    xref,\n    handler,\n    pageIndex,\n    idFactory,\n    fontCache,\n    builtInCMapCache,\n    standardFontDataCache,\n    globalImageCache,\n    options = null,\n  }) {\n    this.xref = xref;\n    this.handler = handler;\n    this.pageIndex = pageIndex;\n    this.idFactory = idFactory;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.standardFontDataCache = standardFontDataCache;\n    this.globalImageCache = globalImageCache;\n    this.options = options || DefaultPartialEvaluatorOptions;\n    this.parsingType3Font = false;\n\n    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n  }\n\n  /**\n   * Since Functions are only cached (locally) by reference, we can share one\n   * `PDFFunctionFactory` instance within this `PartialEvaluator` instance.\n   */\n  get _pdfFunctionFactory() {\n    const pdfFunctionFactory = new PDFFunctionFactory({\n      xref: this.xref,\n      isEvalSupported: this.options.isEvalSupported,\n    });\n    return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n  }\n\n  clone(newOptions = null) {\n    const newEvaluator = Object.create(this);\n    newEvaluator.options = Object.assign(\n      Object.create(null),\n      this.options,\n      newOptions\n    );\n    return newEvaluator;\n  }\n\n  hasBlendModes(resources, nonBlendModesSet) {\n    if (!(resources instanceof Dict)) {\n      return false;\n    }\n    if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n      return false;\n    }\n\n    const processed = new RefSet(nonBlendModesSet);\n    if (resources.objId) {\n      processed.put(resources.objId);\n    }\n\n    const nodes = [resources],\n      xref = this.xref;\n    while (nodes.length) {\n      const node = nodes.shift();\n      // First check the current resources for blend modes.\n      const graphicStates = node.get(\"ExtGState\");\n      if (graphicStates instanceof Dict) {\n        for (let graphicState of graphicStates.getRawValues()) {\n          if (graphicState instanceof Ref) {\n            if (processed.has(graphicState)) {\n              continue; // The ExtGState has already been processed.\n            }\n            try {\n              graphicState = xref.fetch(graphicState);\n            } catch (ex) {\n              // Avoid parsing a corrupt ExtGState more than once.\n              processed.put(graphicState);\n\n              info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n              continue;\n            }\n          }\n          if (!(graphicState instanceof Dict)) {\n            continue;\n          }\n          if (graphicState.objId) {\n            processed.put(graphicState.objId);\n          }\n\n          const bm = graphicState.get(\"BM\");\n          if (bm instanceof Name) {\n            if (bm.name !== \"Normal\") {\n              return true;\n            }\n            continue;\n          }\n          if (bm !== undefined && Array.isArray(bm)) {\n            for (const element of bm) {\n              if (element instanceof Name && element.name !== \"Normal\") {\n                return true;\n              }\n            }\n          }\n        }\n      }\n      // Descend into the XObjects to look for more resources and blend modes.\n      const xObjects = node.get(\"XObject\");\n      if (!(xObjects instanceof Dict)) {\n        continue;\n      }\n      for (let xObject of xObjects.getRawValues()) {\n        if (xObject instanceof Ref) {\n          if (processed.has(xObject)) {\n            // The XObject has already been processed, and by avoiding a\n            // redundant `xref.fetch` we can *significantly* reduce the load\n            // time for badly generated PDF files (fixes issue6961.pdf).\n            continue;\n          }\n          try {\n            xObject = xref.fetch(xObject);\n          } catch (ex) {\n            // Avoid parsing a corrupt XObject more than once.\n            processed.put(xObject);\n\n            info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n            continue;\n          }\n        }\n        if (!(xObject instanceof BaseStream)) {\n          continue;\n        }\n        if (xObject.dict.objId) {\n          processed.put(xObject.dict.objId);\n        }\n        const xResources = xObject.dict.get(\"Resources\");\n        if (!(xResources instanceof Dict)) {\n          continue;\n        }\n        // Checking objId to detect an infinite loop.\n        if (xResources.objId && processed.has(xResources.objId)) {\n          continue;\n        }\n\n        nodes.push(xResources);\n        if (xResources.objId) {\n          processed.put(xResources.objId);\n        }\n      }\n    }\n\n    // When no blend modes exist, there's no need re-fetch/re-parse any of the\n    // processed `Ref`s again for subsequent pages. This helps reduce redundant\n    // `XRef.fetch` calls for some documents (e.g. issue6961.pdf).\n    processed.forEach(ref => {\n      nonBlendModesSet.put(ref);\n    });\n    return false;\n  }\n\n  async fetchBuiltInCMap(name) {\n    const cachedData = this.builtInCMapCache.get(name);\n    if (cachedData) {\n      return cachedData;\n    }\n    let data;\n\n    if (this.options.cMapUrl !== null) {\n      // Only compressed CMaps are (currently) supported here.\n      const url = `${this.options.cMapUrl}${name}.bcmap`;\n      const response = await fetch(url);\n      if (!response.ok) {\n        throw new Error(\n          `fetchBuiltInCMap: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n        );\n      }\n      data = {\n        cMapData: new Uint8Array(await response.arrayBuffer()),\n        compressionType: CMapCompressionType.BINARY,\n      };\n    } else {\n      // Get the data on the main-thread instead.\n      data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", { name });\n    }\n\n    if (data.compressionType !== CMapCompressionType.NONE) {\n      // Given the size of uncompressed CMaps, only cache compressed ones.\n      this.builtInCMapCache.set(name, data);\n    }\n    return data;\n  }\n\n  async fetchStandardFontData(name) {\n    const cachedData = this.standardFontDataCache.get(name);\n    if (cachedData) {\n      return new Stream(cachedData);\n    }\n\n    // The symbol fonts are not consistent across platforms, always load the\n    // standard font data for them.\n    if (\n      this.options.useSystemFonts &&\n      name !== \"Symbol\" &&\n      name !== \"ZapfDingbats\"\n    ) {\n      return null;\n    }\n\n    const standardFontNameToFileName = getFontNameToFileMap(),\n      filename = standardFontNameToFileName[name];\n    let data;\n\n    if (this.options.standardFontDataUrl !== null) {\n      const url = `${this.options.standardFontDataUrl}${filename}`;\n      const response = await fetch(url);\n      if (!response.ok) {\n        warn(\n          `fetchStandardFontData: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n        );\n      } else {\n        data = await response.arrayBuffer();\n      }\n    } else {\n      // Get the data on the main-thread instead.\n      try {\n        data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n          filename,\n        });\n      } catch (e) {\n        warn(\n          `fetchStandardFontData: failed to fetch file \"${filename}\" with \"${e}\".`\n        );\n      }\n    }\n\n    if (!data) {\n      return null;\n    }\n    // Cache the \"raw\" standard font data, to avoid fetching it repeateadly\n    // (see e.g. issue 11399).\n    this.standardFontDataCache.set(name, data);\n\n    return new Stream(data);\n  }\n\n  async buildFormXObject(\n    resources,\n    xobj,\n    smask,\n    operatorList,\n    task,\n    initialState,\n    localColorSpaceCache\n  ) {\n    const dict = xobj.dict;\n    const matrix = dict.getArray(\"Matrix\");\n    let bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      bbox = Util.normalizeRect(bbox);\n    } else {\n      bbox = null;\n    }\n\n    let optionalContent, groupOptions;\n    if (dict.has(\"OC\")) {\n      optionalContent = await this.parseMarkedContentProps(\n        dict.get(\"OC\"),\n        resources\n      );\n    }\n    if (optionalContent !== undefined) {\n      operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n    }\n    const group = dict.get(\"Group\");\n    if (group) {\n      groupOptions = {\n        matrix,\n        bbox,\n        smask,\n        isolated: false,\n        knockout: false,\n      };\n\n      const groupSubtype = group.get(\"S\");\n      let colorSpace = null;\n      if (isName(groupSubtype, \"Transparency\")) {\n        groupOptions.isolated = group.get(\"I\") || false;\n        groupOptions.knockout = group.get(\"K\") || false;\n        if (group.has(\"CS\")) {\n          const cs = group.getRaw(\"CS\");\n\n          const cachedColorSpace = ColorSpace.getCached(\n            cs,\n            this.xref,\n            localColorSpaceCache\n          );\n          if (cachedColorSpace) {\n            colorSpace = cachedColorSpace;\n          } else {\n            colorSpace = await this.parseColorSpace({\n              cs,\n              resources,\n              localColorSpaceCache,\n            });\n          }\n        }\n      }\n\n      if (smask && smask.backdrop) {\n        colorSpace = colorSpace || ColorSpace.singletons.rgb;\n        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n      }\n\n      operatorList.addOp(OPS.beginGroup, [groupOptions]);\n    }\n\n    // If it's a group, a new canvas will be created that is the size of the\n    // bounding box and translated to the correct position so we don't need to\n    // apply the bounding box to it.\n    const args = group ? [matrix, null] : [matrix, bbox];\n    operatorList.addOp(OPS.paintFormXObjectBegin, args);\n\n    return this.getOperatorList({\n      stream: xobj,\n      task,\n      resources: dict.get(\"Resources\") || resources,\n      operatorList,\n      initialState,\n    }).then(function () {\n      operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n      if (group) {\n        operatorList.addOp(OPS.endGroup, [groupOptions]);\n      }\n\n      if (optionalContent !== undefined) {\n        operatorList.addOp(OPS.endMarkedContent, []);\n      }\n    });\n  }\n\n  _sendImgData(objId, imgData, cacheGlobally = false) {\n    const transfers = imgData ? [imgData.data.buffer] : null;\n\n    if (this.parsingType3Font || cacheGlobally) {\n      return this.handler.send(\n        \"commonobj\",\n        [objId, \"Image\", imgData],\n        transfers\n      );\n    }\n    return this.handler.send(\n      \"obj\",\n      [objId, this.pageIndex, \"Image\", imgData],\n      transfers\n    );\n  }\n\n  async buildPaintImageXObject({\n    resources,\n    image,\n    isInline = false,\n    operatorList,\n    cacheKey,\n    localImageCache,\n    localColorSpaceCache,\n  }) {\n    const dict = image.dict;\n    const imageRef = dict.objId;\n    const w = dict.get(\"W\", \"Width\");\n    const h = dict.get(\"H\", \"Height\");\n\n    if (!(w && typeof w === \"number\") || !(h && typeof h === \"number\")) {\n      warn(\"Image dimensions are missing, or not numbers.\");\n      return;\n    }\n    const maxImageSize = this.options.maxImageSize;\n    if (maxImageSize !== -1 && w * h > maxImageSize) {\n      warn(\"Image exceeded maximum allowed size and was removed.\");\n      return;\n    }\n\n    let optionalContent;\n    if (dict.has(\"OC\")) {\n      optionalContent = await this.parseMarkedContentProps(\n        dict.get(\"OC\"),\n        resources\n      );\n    }\n    if (optionalContent !== undefined) {\n      operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n    }\n\n    const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n    const interpolate = dict.get(\"I\", \"Interpolate\");\n    let imgData, args;\n    if (imageMask) {\n      // This depends on a tmpCanvas being filled with the\n      // current fillStyle, such that processing the pixel\n      // data can't be done here. Instead of creating a\n      // complete PDFImage, only read the information needed\n      // for later.\n      const bitStrideLength = (w + 7) >> 3;\n      const imgArray = image.getBytes(\n        bitStrideLength * h,\n        /* forceClamped = */ true\n      );\n      const decode = dict.getArray(\"D\", \"Decode\");\n\n      imgData = PDFImage.createMask({\n        imgArray,\n        width: w,\n        height: h,\n        imageIsFromDecodeStream: image instanceof DecodeStream,\n        inverseDecode: !!decode && decode[0] > 0,\n        interpolate,\n      });\n      imgData.cached = !!cacheKey;\n      args = [imgData];\n\n      operatorList.addOp(OPS.paintImageMaskXObject, args);\n      if (cacheKey) {\n        localImageCache.set(cacheKey, imageRef, {\n          fn: OPS.paintImageMaskXObject,\n          args,\n        });\n      }\n\n      if (optionalContent !== undefined) {\n        operatorList.addOp(OPS.endMarkedContent, []);\n      }\n      return;\n    }\n\n    const softMask = dict.get(\"SM\", \"SMask\") || false;\n    const mask = dict.get(\"Mask\") || false;\n\n    const SMALL_IMAGE_DIMENSIONS = 200;\n    // Inlining small images into the queue as RGB data\n    if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n      const imageObj = new PDFImage({\n        xref: this.xref,\n        res: resources,\n        image,\n        isInline,\n        pdfFunctionFactory: this._pdfFunctionFactory,\n        localColorSpaceCache,\n      });\n      // We force the use of RGBA_32BPP images here, because we can't handle\n      // any other kind.\n      imgData = imageObj.createImageData(/* forceRGBA = */ true);\n      operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);\n\n      if (optionalContent !== undefined) {\n        operatorList.addOp(OPS.endMarkedContent, []);\n      }\n      return;\n    }\n\n    // If there is no imageMask, create the PDFImage and a lot\n    // of image processing can be done here.\n    let objId = `img_${this.idFactory.createObjId()}`,\n      cacheGlobally = false;\n\n    if (this.parsingType3Font) {\n      objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n    } else if (imageRef) {\n      cacheGlobally = this.globalImageCache.shouldCache(\n        imageRef,\n        this.pageIndex\n      );\n\n      if (cacheGlobally) {\n        objId = `${this.idFactory.getDocId()}_${objId}`;\n      }\n    }\n\n    // Ensure that the dependency is added before the image is decoded.\n    operatorList.addDependency(objId);\n    args = [objId, w, h];\n\n    PDFImage.buildImage({\n      xref: this.xref,\n      res: resources,\n      image,\n      isInline,\n      pdfFunctionFactory: this._pdfFunctionFactory,\n      localColorSpaceCache,\n    })\n      .then(imageObj => {\n        imgData = imageObj.createImageData(/* forceRGBA = */ false);\n\n        if (cacheKey && imageRef && cacheGlobally) {\n          this.globalImageCache.addByteSize(imageRef, imgData.data.length);\n        }\n        return this._sendImgData(objId, imgData, cacheGlobally);\n      })\n      .catch(reason => {\n        warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n\n        return this._sendImgData(objId, /* imgData = */ null, cacheGlobally);\n      });\n\n    operatorList.addOp(OPS.paintImageXObject, args);\n    if (cacheKey) {\n      localImageCache.set(cacheKey, imageRef, {\n        fn: OPS.paintImageXObject,\n        args,\n      });\n\n      if (imageRef) {\n        assert(!isInline, \"Cannot cache an inline image globally.\");\n        this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n        if (cacheGlobally) {\n          this.globalImageCache.setData(imageRef, {\n            objId,\n            fn: OPS.paintImageXObject,\n            args,\n            byteSize: 0, // Temporary entry, note `addByteSize` above.\n          });\n        }\n      }\n    }\n\n    if (optionalContent !== undefined) {\n      operatorList.addOp(OPS.endMarkedContent, []);\n    }\n  }\n\n  handleSMask(\n    smask,\n    resources,\n    operatorList,\n    task,\n    stateManager,\n    localColorSpaceCache\n  ) {\n    const smaskContent = smask.get(\"G\");\n    const smaskOptions = {\n      subtype: smask.get(\"S\").name,\n      backdrop: smask.get(\"BC\"),\n    };\n\n    // The SMask might have a alpha/luminosity value transfer function --\n    // we will build a map of integer values in range 0..255 to be fast.\n    const transferObj = smask.get(\"TR\");\n    if (isPDFFunction(transferObj)) {\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\n      const transferMap = new Uint8Array(256);\n      const tmp = new Float32Array(1);\n      for (let i = 0; i < 256; i++) {\n        tmp[0] = i / 255;\n        transferFn(tmp, 0, tmp, 0);\n        transferMap[i] = (tmp[0] * 255) | 0;\n      }\n      smaskOptions.transferMap = transferMap;\n    }\n\n    return this.buildFormXObject(\n      resources,\n      smaskContent,\n      smaskOptions,\n      operatorList,\n      task,\n      stateManager.state.clone(),\n      localColorSpaceCache\n    );\n  }\n\n  handleTransferFunction(tr) {\n    let transferArray;\n    if (Array.isArray(tr)) {\n      transferArray = tr;\n    } else if (isPDFFunction(tr)) {\n      transferArray = [tr];\n    } else {\n      return null; // Not a valid transfer function entry.\n    }\n\n    const transferMaps = [];\n    let numFns = 0,\n      numEffectfulFns = 0;\n    for (const entry of transferArray) {\n      const transferObj = this.xref.fetchIfRef(entry);\n      numFns++;\n\n      if (isName(transferObj, \"Identity\")) {\n        transferMaps.push(null);\n        continue;\n      } else if (!isPDFFunction(transferObj)) {\n        return null; // Not a valid transfer function object.\n      }\n\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\n      const transferMap = new Uint8Array(256),\n        tmp = new Float32Array(1);\n      for (let j = 0; j < 256; j++) {\n        tmp[0] = j / 255;\n        transferFn(tmp, 0, tmp, 0);\n        transferMap[j] = (tmp[0] * 255) | 0;\n      }\n      transferMaps.push(transferMap);\n      numEffectfulFns++;\n    }\n\n    if (!(numFns === 1 || numFns === 4)) {\n      return null; // Only 1 or 4 functions are supported, by the specification.\n    }\n    if (numEffectfulFns === 0) {\n      return null; // Only /Identity transfer functions found, which are no-ops.\n    }\n    return transferMaps;\n  }\n\n  handleTilingType(\n    fn,\n    color,\n    resources,\n    pattern,\n    patternDict,\n    operatorList,\n    task,\n    localTilingPatternCache\n  ) {\n    // Create an IR of the pattern code.\n    const tilingOpList = new OperatorList();\n    // Merge the available resources, to prevent issues when the patternDict\n    // is missing some /Resources entries (fixes issue6541.pdf).\n    const patternResources = Dict.merge({\n      xref: this.xref,\n      dictArray: [patternDict.get(\"Resources\"), resources],\n    });\n\n    return this.getOperatorList({\n      stream: pattern,\n      task,\n      resources: patternResources,\n      operatorList: tilingOpList,\n    })\n      .then(function () {\n        const operatorListIR = tilingOpList.getIR();\n        const tilingPatternIR = getTilingPatternIR(\n          operatorListIR,\n          patternDict,\n          color\n        );\n        // Add the dependencies to the parent operator list so they are\n        // resolved before the sub operator list is executed synchronously.\n        operatorList.addDependencies(tilingOpList.dependencies);\n        operatorList.addOp(fn, tilingPatternIR);\n\n        if (patternDict.objId) {\n          localTilingPatternCache.set(/* name = */ null, patternDict.objId, {\n            operatorListIR,\n            dict: patternDict,\n          });\n        }\n      })\n      .catch(reason => {\n        if (reason instanceof AbortException) {\n          return;\n        }\n        if (this.options.ignoreErrors) {\n          // Error(s) in the TilingPattern -- sending unsupported feature\n          // notification and allow rendering to continue.\n          this.handler.send(\"UnsupportedFeature\", {\n            featureId: UNSUPPORTED_FEATURES.errorTilingPattern,\n          });\n          warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n          return;\n        }\n        throw reason;\n      });\n  }\n\n  handleSetFont(\n    resources,\n    fontArgs,\n    fontRef,\n    operatorList,\n    task,\n    state,\n    fallbackFontDict = null,\n    cssFontInfo = null\n  ) {\n    const fontName =\n      fontArgs && fontArgs[0] instanceof Name ? fontArgs[0].name : null;\n\n    return this.loadFont(\n      fontName,\n      fontRef,\n      resources,\n      fallbackFontDict,\n      cssFontInfo\n    )\n      .then(translated => {\n        if (!translated.font.isType3Font) {\n          return translated;\n        }\n        return translated\n          .loadType3Data(this, resources, task)\n          .then(function () {\n            // Add the dependencies to the parent operatorList so they are\n            // resolved before Type3 operatorLists are executed synchronously.\n            operatorList.addDependencies(translated.type3Dependencies);\n\n            return translated;\n          })\n          .catch(reason => {\n            // Error in the font data -- sending unsupported feature\n            // notification.\n            this.handler.send(\"UnsupportedFeature\", {\n              featureId: UNSUPPORTED_FEATURES.errorFontLoadType3,\n            });\n            return new TranslatedFont({\n              loadedName: \"g_font_error\",\n              font: new ErrorFont(`Type3 font load error: ${reason}`),\n              dict: translated.font,\n              evaluatorOptions: this.options,\n            });\n          });\n      })\n      .then(translated => {\n        state.font = translated.font;\n        translated.send(this.handler);\n        return translated.loadedName;\n      });\n  }\n\n  handleText(chars, state) {\n    const font = state.font;\n    const glyphs = font.charsToGlyphs(chars);\n\n    if (font.data) {\n      const isAddToPathSet = !!(\n        state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n      );\n      if (\n        isAddToPathSet ||\n        state.fillColorSpace.name === \"Pattern\" ||\n        font.disableFontFace ||\n        this.options.disableFontFace\n      ) {\n        PartialEvaluator.buildFontPaths(\n          font,\n          glyphs,\n          this.handler,\n          this.options\n        );\n      }\n    }\n    return glyphs;\n  }\n\n  ensureStateFont(state) {\n    if (state.font) {\n      return;\n    }\n    const reason = new FormatError(\n      \"Missing setFont (Tf) operator before text rendering operator.\"\n    );\n\n    if (this.options.ignoreErrors) {\n      // Missing setFont operator before text rendering operator -- sending\n      // unsupported feature notification and allow rendering to continue.\n      this.handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.errorFontState,\n      });\n      warn(`ensureStateFont: \"${reason}\".`);\n      return;\n    }\n    throw reason;\n  }\n\n  async setGState({\n    resources,\n    gState,\n    operatorList,\n    cacheKey,\n    task,\n    stateManager,\n    localGStateCache,\n    localColorSpaceCache,\n  }) {\n    const gStateRef = gState.objId;\n    let isSimpleGState = true;\n    // This array holds the converted/processed state data.\n    const gStateObj = [];\n    const gStateKeys = gState.getKeys();\n    let promise = Promise.resolve();\n    for (let i = 0, ii = gStateKeys.length; i < ii; i++) {\n      const key = gStateKeys[i];\n      const value = gState.get(key);\n      switch (key) {\n        case \"Type\":\n          break;\n        case \"LW\":\n        case \"LC\":\n        case \"LJ\":\n        case \"ML\":\n        case \"D\":\n        case \"RI\":\n        case \"FL\":\n        case \"CA\":\n        case \"ca\":\n          gStateObj.push([key, value]);\n          break;\n        case \"Font\":\n          isSimpleGState = false;\n\n          promise = promise.then(() => {\n            return this.handleSetFont(\n              resources,\n              null,\n              value[0],\n              operatorList,\n              task,\n              stateManager.state\n            ).then(function (loadedName) {\n              operatorList.addDependency(loadedName);\n              gStateObj.push([key, [loadedName, value[1]]]);\n            });\n          });\n          break;\n        case \"BM\":\n          gStateObj.push([key, normalizeBlendMode(value)]);\n          break;\n        case \"SMask\":\n          if (isName(value, \"None\")) {\n            gStateObj.push([key, false]);\n            break;\n          }\n          if (value instanceof Dict) {\n            isSimpleGState = false;\n\n            promise = promise.then(() => {\n              return this.handleSMask(\n                value,\n                resources,\n                operatorList,\n                task,\n                stateManager,\n                localColorSpaceCache\n              );\n            });\n            gStateObj.push([key, true]);\n          } else {\n            warn(\"Unsupported SMask type\");\n          }\n          break;\n        case \"TR\":\n          const transferMaps = this.handleTransferFunction(value);\n          gStateObj.push([key, transferMaps]);\n          break;\n        // Only generate info log messages for the following since\n        // they are unlikely to have a big impact on the rendering.\n        case \"OP\":\n        case \"op\":\n        case \"OPM\":\n        case \"BG\":\n        case \"BG2\":\n        case \"UCR\":\n        case \"UCR2\":\n        case \"TR2\":\n        case \"HT\":\n        case \"SM\":\n        case \"SA\":\n        case \"AIS\":\n        case \"TK\":\n          // TODO implement these operators.\n          info(\"graphic state operator \" + key);\n          break;\n        default:\n          info(\"Unknown graphic state operator \" + key);\n          break;\n      }\n    }\n    return promise.then(function () {\n      if (gStateObj.length > 0) {\n        operatorList.addOp(OPS.setGState, [gStateObj]);\n      }\n\n      if (isSimpleGState) {\n        localGStateCache.set(cacheKey, gStateRef, gStateObj);\n      }\n    });\n  }\n\n  loadFont(\n    fontName,\n    font,\n    resources,\n    fallbackFontDict = null,\n    cssFontInfo = null\n  ) {\n    const errorFont = async () => {\n      return new TranslatedFont({\n        loadedName: \"g_font_error\",\n        font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n        dict: font,\n        evaluatorOptions: this.options,\n      });\n    };\n\n    const xref = this.xref;\n    let fontRef;\n    if (font) {\n      // Loading by ref.\n      if (!(font instanceof Ref)) {\n        throw new FormatError('The \"font\" object should be a reference.');\n      }\n      fontRef = font;\n    } else {\n      // Loading by name.\n      const fontRes = resources.get(\"Font\");\n      if (fontRes) {\n        fontRef = fontRes.getRaw(fontName);\n      }\n    }\n    if (!fontRef) {\n      const partialMsg = `Font \"${\n        fontName || (font && font.toString())\n      }\" is not available`;\n\n      if (!this.options.ignoreErrors && !this.parsingType3Font) {\n        warn(`${partialMsg}.`);\n        return errorFont();\n      }\n      // Font not found -- sending unsupported feature notification.\n      this.handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.errorFontMissing,\n      });\n      warn(`${partialMsg} -- attempting to fallback to a default font.`);\n\n      // Falling back to a default font to avoid completely broken rendering,\n      // but note that there're no guarantees that things will look \"correct\".\n      if (fallbackFontDict) {\n        fontRef = fallbackFontDict;\n      } else {\n        fontRef = PartialEvaluator.fallbackFontDict;\n      }\n    }\n\n    if (this.parsingType3Font && this.type3FontRefs.has(fontRef)) {\n      return errorFont();\n    }\n\n    if (this.fontCache.has(fontRef)) {\n      return this.fontCache.get(fontRef);\n    }\n\n    font = xref.fetchIfRef(fontRef);\n    if (!(font instanceof Dict)) {\n      return errorFont();\n    }\n\n    // We are holding `font.cacheKey` references only for `fontRef`s that\n    // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n    if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n      return this.fontCache.get(font.cacheKey);\n    }\n\n    const fontCapability = createPromiseCapability();\n\n    let preEvaluatedFont;\n    try {\n      preEvaluatedFont = this.preEvaluateFont(font);\n      preEvaluatedFont.cssFontInfo = cssFontInfo;\n    } catch (reason) {\n      warn(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n      return errorFont();\n    }\n    const { descriptor, hash } = preEvaluatedFont;\n\n    const fontRefIsRef = fontRef instanceof Ref;\n    let fontID;\n    if (fontRefIsRef) {\n      fontID = `f${fontRef.toString()}`;\n    }\n\n    if (hash && descriptor instanceof Dict) {\n      if (!descriptor.fontAliases) {\n        descriptor.fontAliases = Object.create(null);\n      }\n      const fontAliases = descriptor.fontAliases;\n\n      if (fontAliases[hash]) {\n        const aliasFontRef = fontAliases[hash].aliasRef;\n        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n          this.fontCache.putAlias(fontRef, aliasFontRef);\n          return this.fontCache.get(fontRef);\n        }\n      } else {\n        fontAliases[hash] = {\n          fontID: this.idFactory.createFontId(),\n        };\n      }\n\n      if (fontRefIsRef) {\n        fontAliases[hash].aliasRef = fontRef;\n      }\n      fontID = fontAliases[hash].fontID;\n    }\n\n    // Workaround for bad PDF generators that reference fonts incorrectly,\n    // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n    // In this case we cannot put the font into `this.fontCache` (which is\n    // a `RefSetCache`), since it's not possible to use a `Dict` as a key.\n    //\n    // However, if we don't cache the font it's not possible to remove it\n    // when `cleanup` is triggered from the API, which causes issues on\n    // subsequent rendering operations (see issue7403.pdf) and would force us\n    // to unnecessarily load the same fonts over and over.\n    //\n    // Instead, we cheat a bit by using a modified `fontID` as a key in\n    // `this.fontCache`, to allow the font to be cached.\n    // NOTE: This works because `RefSetCache` calls `toString()` on provided\n    //       keys. Also, since `fontRef` is used when getting cached fonts,\n    //       we'll not accidentally match fonts cached with the `fontID`.\n    if (fontRefIsRef) {\n      this.fontCache.put(fontRef, fontCapability.promise);\n    } else {\n      if (!fontID) {\n        fontID = this.idFactory.createFontId();\n      }\n      font.cacheKey = `cacheKey_${fontID}`;\n      this.fontCache.put(font.cacheKey, fontCapability.promise);\n    }\n    assert(\n      fontID && fontID.startsWith(\"f\"),\n      'The \"fontID\" must be (correctly) defined.'\n    );\n\n    // Keep track of each font we translated so the caller can\n    // load them asynchronously before calling display on a page.\n    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n\n    this.translateFont(preEvaluatedFont)\n      .then(translatedFont => {\n        if (translatedFont.fontType !== undefined) {\n          xref.stats.addFontType(translatedFont.fontType);\n        }\n\n        fontCapability.resolve(\n          new TranslatedFont({\n            loadedName: font.loadedName,\n            font: translatedFont,\n            dict: font,\n            evaluatorOptions: this.options,\n          })\n        );\n      })\n      .catch(reason => {\n        // TODO fontCapability.reject?\n        // Error in the font data -- sending unsupported feature notification.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorFontTranslate,\n        });\n        warn(`loadFont - translateFont failed: \"${reason}\".`);\n\n        try {\n          // error, but it's still nice to have font type reported\n          const fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n          const subtype = fontFile3 && fontFile3.get(\"Subtype\");\n          const fontType = getFontType(\n            preEvaluatedFont.type,\n            subtype && subtype.name\n          );\n          if (fontType !== undefined) {\n            xref.stats.addFontType(fontType);\n          }\n        } catch (ex) {}\n\n        fontCapability.resolve(\n          new TranslatedFont({\n            loadedName: font.loadedName,\n            font: new ErrorFont(\n              reason instanceof Error ? reason.message : reason\n            ),\n            dict: font,\n            evaluatorOptions: this.options,\n          })\n        );\n      });\n    return fontCapability.promise;\n  }\n\n  buildPath(operatorList, fn, args, parsingText = false) {\n    const lastIndex = operatorList.length - 1;\n    if (!args) {\n      args = [];\n    }\n    if (\n      lastIndex < 0 ||\n      operatorList.fnArray[lastIndex] !== OPS.constructPath\n    ) {\n      // Handle corrupt PDF documents that contains path operators inside of\n      // text objects, which may shift subsequent text, by enclosing the path\n      // operator in save/restore operators (fixes issue10542_reduced.pdf).\n      //\n      // Note that this will effectively disable the optimization in the\n      // `else` branch below, but given that this type of corruption is\n      // *extremely* rare that shouldn't really matter much in practice.\n      if (parsingText) {\n        warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n        operatorList.addOp(OPS.save, null);\n      }\n\n      operatorList.addOp(OPS.constructPath, [[fn], args]);\n\n      if (parsingText) {\n        operatorList.addOp(OPS.restore, null);\n      }\n    } else {\n      const opArgs = operatorList.argsArray[lastIndex];\n      opArgs[0].push(fn);\n      Array.prototype.push.apply(opArgs[1], args);\n    }\n  }\n\n  parseColorSpace({ cs, resources, localColorSpaceCache }) {\n    return ColorSpace.parseAsync({\n      cs,\n      xref: this.xref,\n      resources,\n      pdfFunctionFactory: this._pdfFunctionFactory,\n      localColorSpaceCache,\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return null;\n      }\n      if (this.options.ignoreErrors) {\n        // Error(s) in the ColorSpace -- sending unsupported feature\n        // notification and allow rendering to continue.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorColorSpace,\n        });\n        warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n        return null;\n      }\n      throw reason;\n    });\n  }\n\n  parseShading({\n    shading,\n    resources,\n    localColorSpaceCache,\n    localShadingPatternCache,\n  }) {\n    // Shadings and patterns may be referenced by the same name but the resource\n    // dictionary could be different so we can't use the name for the cache key.\n    let id = localShadingPatternCache.get(shading);\n    if (!id) {\n      var shadingFill = Pattern.parseShading(\n        shading,\n        this.xref,\n        resources,\n        this.handler,\n        this._pdfFunctionFactory,\n        localColorSpaceCache\n      );\n      const patternIR = shadingFill.getIR();\n      id = `pattern_${this.idFactory.createObjId()}`;\n      localShadingPatternCache.set(shading, id);\n      this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n    }\n    return id;\n  }\n\n  handleColorN(\n    operatorList,\n    fn,\n    args,\n    cs,\n    patterns,\n    resources,\n    task,\n    localColorSpaceCache,\n    localTilingPatternCache,\n    localShadingPatternCache\n  ) {\n    // compile tiling patterns\n    const patternName = args.pop();\n    // SCN/scn applies patterns along with normal colors\n    if (patternName instanceof Name) {\n      const rawPattern = patterns.getRaw(patternName.name);\n\n      const localTilingPattern =\n        rawPattern instanceof Ref &&\n        localTilingPatternCache.getByRef(rawPattern);\n      if (localTilingPattern) {\n        try {\n          const color = cs.base ? cs.base.getRgb(args, 0) : null;\n          const tilingPatternIR = getTilingPatternIR(\n            localTilingPattern.operatorListIR,\n            localTilingPattern.dict,\n            color\n          );\n          operatorList.addOp(fn, tilingPatternIR);\n          return undefined;\n        } catch (ex) {\n          // Handle any errors during normal TilingPattern parsing.\n        }\n      }\n\n      const pattern = this.xref.fetchIfRef(rawPattern);\n      if (pattern) {\n        const dict = pattern instanceof BaseStream ? pattern.dict : pattern;\n        const typeNum = dict.get(\"PatternType\");\n\n        if (typeNum === PatternType.TILING) {\n          const color = cs.base ? cs.base.getRgb(args, 0) : null;\n          return this.handleTilingType(\n            fn,\n            color,\n            resources,\n            pattern,\n            dict,\n            operatorList,\n            task,\n            localTilingPatternCache\n          );\n        } else if (typeNum === PatternType.SHADING) {\n          const shading = dict.get(\"Shading\");\n          const matrix = dict.getArray(\"Matrix\");\n          const objId = this.parseShading({\n            shading,\n            resources,\n            localColorSpaceCache,\n            localShadingPatternCache,\n          });\n          operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n          return undefined;\n        }\n        throw new FormatError(`Unknown PatternType: ${typeNum}`);\n      }\n    }\n    throw new FormatError(`Unknown PatternName: ${patternName}`);\n  }\n\n  _parseVisibilityExpression(array, nestingCounter, currentResult) {\n    const MAX_NESTING = 10;\n    if (++nestingCounter > MAX_NESTING) {\n      warn(\"Visibility expression is too deeply nested\");\n      return;\n    }\n    const length = array.length;\n    const operator = this.xref.fetchIfRef(array[0]);\n    if (length < 2 || !(operator instanceof Name)) {\n      warn(\"Invalid visibility expression\");\n      return;\n    }\n    switch (operator.name) {\n      case \"And\":\n      case \"Or\":\n      case \"Not\":\n        currentResult.push(operator.name);\n        break;\n      default:\n        warn(`Invalid operator ${operator.name} in visibility expression`);\n        return;\n    }\n    for (let i = 1; i < length; i++) {\n      const raw = array[i];\n      const object = this.xref.fetchIfRef(raw);\n      if (Array.isArray(object)) {\n        const nestedResult = [];\n        currentResult.push(nestedResult);\n        // Recursively parse a subarray.\n        this._parseVisibilityExpression(object, nestingCounter, nestedResult);\n      } else if (raw instanceof Ref) {\n        // Reference to an OCG dictionary.\n        currentResult.push(raw.toString());\n      }\n    }\n  }\n\n  async parseMarkedContentProps(contentProperties, resources) {\n    let optionalContent;\n    if (contentProperties instanceof Name) {\n      const properties = resources.get(\"Properties\");\n      optionalContent = properties.get(contentProperties.name);\n    } else if (contentProperties instanceof Dict) {\n      optionalContent = contentProperties;\n    } else {\n      throw new FormatError(\"Optional content properties malformed.\");\n    }\n\n    const optionalContentType = optionalContent.get(\"Type\").name;\n    if (optionalContentType === \"OCG\") {\n      return {\n        type: optionalContentType,\n        id: optionalContent.objId,\n      };\n    } else if (optionalContentType === \"OCMD\") {\n      const expression = optionalContent.get(\"VE\");\n      if (Array.isArray(expression)) {\n        const result = [];\n        this._parseVisibilityExpression(expression, 0, result);\n        if (result.length > 0) {\n          return {\n            type: \"OCMD\",\n            expression: result,\n          };\n        }\n      }\n\n      const optionalContentGroups = optionalContent.get(\"OCGs\");\n      if (\n        Array.isArray(optionalContentGroups) ||\n        optionalContentGroups instanceof Dict\n      ) {\n        const groupIds = [];\n        if (Array.isArray(optionalContentGroups)) {\n          for (const ocg of optionalContentGroups) {\n            groupIds.push(ocg.toString());\n          }\n        } else {\n          // Dictionary, just use the obj id.\n          groupIds.push(optionalContentGroups.objId);\n        }\n\n        return {\n          type: optionalContentType,\n          ids: groupIds,\n          policy:\n            optionalContent.get(\"P\") instanceof Name\n              ? optionalContent.get(\"P\").name\n              : null,\n          expression: null,\n        };\n      } else if (optionalContentGroups instanceof Ref) {\n        return {\n          type: optionalContentType,\n          id: optionalContentGroups.toString(),\n        };\n      }\n    }\n    return null;\n  }\n\n  getOperatorList({\n    stream,\n    task,\n    resources,\n    operatorList,\n    initialState = null,\n    fallbackFontDict = null,\n  }) {\n    // Ensure that `resources`/`initialState` is correctly initialized,\n    // even if the provided parameter is e.g. `null`.\n    resources = resources || Dict.empty;\n    initialState = initialState || new EvalState();\n\n    if (!operatorList) {\n      throw new Error('getOperatorList: missing \"operatorList\" parameter');\n    }\n\n    const self = this;\n    const xref = this.xref;\n    let parsingText = false;\n    const localImageCache = new LocalImageCache();\n    const localColorSpaceCache = new LocalColorSpaceCache();\n    const localGStateCache = new LocalGStateCache();\n    const localTilingPatternCache = new LocalTilingPatternCache();\n    const localShadingPatternCache = new Map();\n\n    const xobjs = resources.get(\"XObject\") || Dict.empty;\n    const patterns = resources.get(\"Pattern\") || Dict.empty;\n    const stateManager = new StateManager(initialState);\n    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n    const timeSlotManager = new TimeSlotManager();\n\n    function closePendingRestoreOPS(argument) {\n      for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n        operatorList.addOp(OPS.restore, []);\n      }\n    }\n\n    return new Promise(function promiseBody(resolve, reject) {\n      const next = function (promise) {\n        Promise.all([promise, operatorList.ready]).then(function () {\n          try {\n            promiseBody(resolve, reject);\n          } catch (ex) {\n            reject(ex);\n          }\n        }, reject);\n      };\n      task.ensureNotTerminated();\n      timeSlotManager.reset();\n\n      const operation = {};\n      let stop, i, ii, cs, name, isValidName;\n      while (!(stop = timeSlotManager.check())) {\n        // The arguments parsed by read() are used beyond this loop, so we\n        // cannot reuse the same array on each iteration. Therefore we pass\n        // in |null| as the initial value (see the comment on\n        // EvaluatorPreprocessor_read() for why).\n        operation.args = null;\n        if (!preprocessor.read(operation)) {\n          break;\n        }\n        let args = operation.args;\n        let fn = operation.fn;\n\n        switch (fn | 0) {\n          case OPS.paintXObject:\n            // eagerly compile XForm objects\n            isValidName = args[0] instanceof Name;\n            name = args[0].name;\n\n            if (isValidName) {\n              const localImage = localImageCache.getByName(name);\n              if (localImage) {\n                operatorList.addOp(localImage.fn, localImage.args);\n                args = null;\n                continue;\n              }\n            }\n\n            next(\n              new Promise(function (resolveXObject, rejectXObject) {\n                if (!isValidName) {\n                  throw new FormatError(\"XObject must be referred to by name.\");\n                }\n\n                let xobj = xobjs.getRaw(name);\n                if (xobj instanceof Ref) {\n                  const localImage = localImageCache.getByRef(xobj);\n                  if (localImage) {\n                    operatorList.addOp(localImage.fn, localImage.args);\n\n                    resolveXObject();\n                    return;\n                  }\n\n                  const globalImage = self.globalImageCache.getData(\n                    xobj,\n                    self.pageIndex\n                  );\n                  if (globalImage) {\n                    operatorList.addDependency(globalImage.objId);\n                    operatorList.addOp(globalImage.fn, globalImage.args);\n\n                    resolveXObject();\n                    return;\n                  }\n\n                  xobj = xref.fetch(xobj);\n                }\n\n                if (!(xobj instanceof BaseStream)) {\n                  throw new FormatError(\"XObject should be a stream\");\n                }\n\n                const type = xobj.dict.get(\"Subtype\");\n                if (!(type instanceof Name)) {\n                  throw new FormatError(\"XObject should have a Name subtype\");\n                }\n\n                if (type.name === \"Form\") {\n                  stateManager.save();\n                  self\n                    .buildFormXObject(\n                      resources,\n                      xobj,\n                      null,\n                      operatorList,\n                      task,\n                      stateManager.state.clone(),\n                      localColorSpaceCache\n                    )\n                    .then(function () {\n                      stateManager.restore();\n                      resolveXObject();\n                    }, rejectXObject);\n                  return;\n                } else if (type.name === \"Image\") {\n                  self\n                    .buildPaintImageXObject({\n                      resources,\n                      image: xobj,\n                      operatorList,\n                      cacheKey: name,\n                      localImageCache,\n                      localColorSpaceCache,\n                    })\n                    .then(resolveXObject, rejectXObject);\n                  return;\n                } else if (type.name === \"PS\") {\n                  // PostScript XObjects are unused when viewing documents.\n                  // See section 4.7.1 of Adobe's PDF reference.\n                  info(\"Ignored XObject subtype PS\");\n                } else {\n                  throw new FormatError(\n                    `Unhandled XObject subtype ${type.name}`\n                  );\n                }\n                resolveXObject();\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the XObject -- sending unsupported feature\n                  // notification and allow rendering to continue.\n                  self.handler.send(\"UnsupportedFeature\", {\n                    featureId: UNSUPPORTED_FEATURES.errorXObject,\n                  });\n                  warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.setFont:\n            var fontSize = args[1];\n            // eagerly collect all fonts\n            next(\n              self\n                .handleSetFont(\n                  resources,\n                  args,\n                  null,\n                  operatorList,\n                  task,\n                  stateManager.state,\n                  fallbackFontDict\n                )\n                .then(function (loadedName) {\n                  operatorList.addDependency(loadedName);\n                  operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n                })\n            );\n            return;\n          case OPS.beginText:\n            parsingText = true;\n            break;\n          case OPS.endText:\n            parsingText = false;\n            break;\n          case OPS.endInlineImage:\n            var cacheKey = args[0].cacheKey;\n            if (cacheKey) {\n              const localImage = localImageCache.getByName(cacheKey);\n              if (localImage) {\n                operatorList.addOp(localImage.fn, localImage.args);\n                args = null;\n                continue;\n              }\n            }\n            next(\n              self.buildPaintImageXObject({\n                resources,\n                image: args[0],\n                isInline: true,\n                operatorList,\n                cacheKey,\n                localImageCache,\n                localColorSpaceCache,\n              })\n            );\n            return;\n          case OPS.showText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            args[0] = self.handleText(args[0], stateManager.state);\n            break;\n          case OPS.showSpacedText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            var arr = args[0];\n            var combinedGlyphs = [];\n            var arrLength = arr.length;\n            var state = stateManager.state;\n            for (i = 0; i < arrLength; ++i) {\n              const arrItem = arr[i];\n              if (typeof arrItem === \"string\") {\n                Array.prototype.push.apply(\n                  combinedGlyphs,\n                  self.handleText(arrItem, state)\n                );\n              } else if (typeof arrItem === \"number\") {\n                combinedGlyphs.push(arrItem);\n              }\n            }\n            args[0] = combinedGlyphs;\n            fn = OPS.showText;\n            break;\n          case OPS.nextLineShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            operatorList.addOp(OPS.nextLine);\n            args[0] = self.handleText(args[0], stateManager.state);\n            fn = OPS.showText;\n            break;\n          case OPS.nextLineSetSpacingShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            operatorList.addOp(OPS.nextLine);\n            operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n            operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n            args[0] = self.handleText(args[0], stateManager.state);\n            fn = OPS.showText;\n            break;\n          case OPS.setTextRenderingMode:\n            stateManager.state.textRenderingMode = args[0];\n            break;\n\n          case OPS.setFillColorSpace: {\n            const cachedColorSpace = ColorSpace.getCached(\n              args[0],\n              xref,\n              localColorSpaceCache\n            );\n            if (cachedColorSpace) {\n              stateManager.state.fillColorSpace = cachedColorSpace;\n              continue;\n            }\n\n            next(\n              self\n                .parseColorSpace({\n                  cs: args[0],\n                  resources,\n                  localColorSpaceCache,\n                })\n                .then(function (colorSpace) {\n                  if (colorSpace) {\n                    stateManager.state.fillColorSpace = colorSpace;\n                  }\n                })\n            );\n            return;\n          }\n          case OPS.setStrokeColorSpace: {\n            const cachedColorSpace = ColorSpace.getCached(\n              args[0],\n              xref,\n              localColorSpaceCache\n            );\n            if (cachedColorSpace) {\n              stateManager.state.strokeColorSpace = cachedColorSpace;\n              continue;\n            }\n\n            next(\n              self\n                .parseColorSpace({\n                  cs: args[0],\n                  resources,\n                  localColorSpaceCache,\n                })\n                .then(function (colorSpace) {\n                  if (colorSpace) {\n                    stateManager.state.strokeColorSpace = colorSpace;\n                  }\n                })\n            );\n            return;\n          }\n          case OPS.setFillColor:\n            cs = stateManager.state.fillColorSpace;\n            args = cs.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeColor:\n            cs = stateManager.state.strokeColorSpace;\n            args = cs.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillGray:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n            args = ColorSpace.singletons.gray.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeGray:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n            args = ColorSpace.singletons.gray.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillCMYKColor:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeCMYKColor:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillRGBColor:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n            args = ColorSpace.singletons.rgb.getRgb(args, 0);\n            break;\n          case OPS.setStrokeRGBColor:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n            args = ColorSpace.singletons.rgb.getRgb(args, 0);\n            break;\n          case OPS.setFillColorN:\n            cs = stateManager.state.fillColorSpace;\n            if (cs.name === \"Pattern\") {\n              next(\n                self.handleColorN(\n                  operatorList,\n                  OPS.setFillColorN,\n                  args,\n                  cs,\n                  patterns,\n                  resources,\n                  task,\n                  localColorSpaceCache,\n                  localTilingPatternCache,\n                  localShadingPatternCache\n                )\n              );\n              return;\n            }\n            args = cs.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeColorN:\n            cs = stateManager.state.strokeColorSpace;\n            if (cs.name === \"Pattern\") {\n              next(\n                self.handleColorN(\n                  operatorList,\n                  OPS.setStrokeColorN,\n                  args,\n                  cs,\n                  patterns,\n                  resources,\n                  task,\n                  localColorSpaceCache,\n                  localTilingPatternCache,\n                  localShadingPatternCache\n                )\n              );\n              return;\n            }\n            args = cs.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n\n          case OPS.shadingFill:\n            var shadingRes = resources.get(\"Shading\");\n            if (!shadingRes) {\n              throw new FormatError(\"No shading resource found\");\n            }\n\n            var shading = shadingRes.get(args[0].name);\n            if (!shading) {\n              throw new FormatError(\"No shading object found\");\n            }\n            const patternId = self.parseShading({\n              shading,\n              resources,\n              localColorSpaceCache,\n              localShadingPatternCache,\n            });\n            args = [patternId];\n            fn = OPS.shadingFill;\n            break;\n          case OPS.setGState:\n            isValidName = args[0] instanceof Name;\n            name = args[0].name;\n\n            if (isValidName) {\n              const localGStateObj = localGStateCache.getByName(name);\n              if (localGStateObj) {\n                if (localGStateObj.length > 0) {\n                  operatorList.addOp(OPS.setGState, [localGStateObj]);\n                }\n                args = null;\n                continue;\n              }\n            }\n\n            next(\n              new Promise(function (resolveGState, rejectGState) {\n                if (!isValidName) {\n                  throw new FormatError(\"GState must be referred to by name.\");\n                }\n\n                const extGState = resources.get(\"ExtGState\");\n                if (!(extGState instanceof Dict)) {\n                  throw new FormatError(\"ExtGState should be a dictionary.\");\n                }\n\n                const gState = extGState.get(name);\n                // TODO: Attempt to lookup cached GStates by reference as well,\n                //       if and only if there are PDF documents where doing so\n                //       would significantly improve performance.\n                if (!(gState instanceof Dict)) {\n                  throw new FormatError(\"GState should be a dictionary.\");\n                }\n\n                self\n                  .setGState({\n                    resources,\n                    gState,\n                    operatorList,\n                    cacheKey: name,\n                    task,\n                    stateManager,\n                    localGStateCache,\n                    localColorSpaceCache,\n                  })\n                  .then(resolveGState, rejectGState);\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the ExtGState -- sending unsupported feature\n                  // notification and allow parsing/rendering to continue.\n                  self.handler.send(\"UnsupportedFeature\", {\n                    featureId: UNSUPPORTED_FEATURES.errorExtGState,\n                  });\n                  warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.moveTo:\n          case OPS.lineTo:\n          case OPS.curveTo:\n          case OPS.curveTo2:\n          case OPS.curveTo3:\n          case OPS.closePath:\n          case OPS.rectangle:\n            self.buildPath(operatorList, fn, args, parsingText);\n            continue;\n          case OPS.markPoint:\n          case OPS.markPointProps:\n          case OPS.beginCompat:\n          case OPS.endCompat:\n            // Ignore operators where the corresponding handlers are known to\n            // be no-op in CanvasGraphics (display/canvas.js). This prevents\n            // serialization errors and is also a bit more efficient.\n            // We could also try to serialize all objects in a general way,\n            // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n            // but doing so is meaningless without knowing the semantics.\n            continue;\n          case OPS.beginMarkedContentProps:\n            if (!(args[0] instanceof Name)) {\n              warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n              continue;\n            }\n            if (args[0].name === \"OC\") {\n              next(\n                self\n                  .parseMarkedContentProps(args[1], resources)\n                  .then(data => {\n                    operatorList.addOp(OPS.beginMarkedContentProps, [\n                      \"OC\",\n                      data,\n                    ]);\n                  })\n                  .catch(reason => {\n                    if (reason instanceof AbortException) {\n                      return;\n                    }\n                    if (self.options.ignoreErrors) {\n                      self.handler.send(\"UnsupportedFeature\", {\n                        featureId: UNSUPPORTED_FEATURES.errorMarkedContent,\n                      });\n                      warn(\n                        `getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`\n                      );\n                      return;\n                    }\n                    throw reason;\n                  })\n              );\n              return;\n            }\n            // Other marked content types aren't supported yet.\n            args = [\n              args[0].name,\n              args[1] instanceof Dict ? args[1].get(\"MCID\") : null,\n            ];\n\n            break;\n          case OPS.beginMarkedContent:\n          case OPS.endMarkedContent:\n          default:\n            // Note: Ignore the operator if it has `Dict` arguments, since\n            // those are non-serializable, otherwise postMessage will throw\n            // \"An object could not be cloned.\".\n            if (args !== null) {\n              for (i = 0, ii = args.length; i < ii; i++) {\n                if (args[i] instanceof Dict) {\n                  break;\n                }\n              }\n              if (i < ii) {\n                warn(\"getOperatorList - ignoring operator: \" + fn);\n                continue;\n              }\n            }\n        }\n        operatorList.addOp(fn, args);\n      }\n      if (stop) {\n        next(deferred);\n        return;\n      }\n      // Some PDFs don't close all restores inside object/form.\n      // Closing those for them.\n      closePendingRestoreOPS();\n      resolve();\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return;\n      }\n      if (this.options.ignoreErrors) {\n        // Error(s) in the OperatorList -- sending unsupported feature\n        // notification and allow rendering to continue.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n        });\n        warn(\n          `getOperatorList - ignoring errors during \"${task.name}\" ` +\n            `task: \"${reason}\".`\n        );\n\n        closePendingRestoreOPS();\n        return;\n      }\n      throw reason;\n    });\n  }\n\n  getTextContent({\n    stream,\n    task,\n    resources,\n    stateManager = null,\n    combineTextItems = false,\n    includeMarkedContent = false,\n    sink,\n    seenStyles = new Set(),\n    viewBox,\n  }) {\n    // Ensure that `resources`/`stateManager` is correctly initialized,\n    // even if the provided parameter is e.g. `null`.\n    resources = resources || Dict.empty;\n    stateManager = stateManager || new StateManager(new TextState());\n\n    const NormalizedUnicodes = getNormalizedUnicodes();\n\n    const textContent = {\n      items: [],\n      styles: Object.create(null),\n    };\n    const textContentItem = {\n      initialized: false,\n      str: [],\n      totalWidth: 0,\n      totalHeight: 0,\n      width: 0,\n      height: 0,\n      vertical: false,\n      prevTransform: null,\n      textAdvanceScale: 0,\n      spaceInFlowMin: 0,\n      spaceInFlowMax: 0,\n      trackingSpaceMin: Infinity,\n      negativeSpaceMax: -Infinity,\n      transform: null,\n      fontName: null,\n      hasEOL: false,\n    };\n\n    // Used in addFakeSpaces.\n\n    // A white <= fontSize * TRACKING_SPACE_FACTOR is a tracking space\n    // so it doesn't count as a space.\n    const TRACKING_SPACE_FACTOR = 0.1;\n\n    // A negative white < fontSize * NEGATIVE_SPACE_FACTOR induces\n    // a break (a new chunk of text is created).\n    // It doesn't change anything when the text is copied but\n    // it improves potential mismatch between text layer and canvas.\n    const NEGATIVE_SPACE_FACTOR = -0.2;\n\n    // A white with a width in [fontSize * MIN_FACTOR; fontSize * MAX_FACTOR]\n    // is a space which will be inserted in the current flow of words.\n    // If the width is outside of this range then the flow is broken\n    // (which means a new span in the text layer).\n    // It's useful to adjust the best as possible the span in the layer\n    // to what is displayed in the canvas.\n    const SPACE_IN_FLOW_MIN_FACTOR = 0.1;\n    const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n\n    const self = this;\n    const xref = this.xref;\n    const showSpacedTextBuffer = [];\n\n    // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n    let xobjs = null;\n    const emptyXObjectCache = new LocalImageCache();\n    const emptyGStateCache = new LocalGStateCache();\n\n    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n    let textState;\n\n    function getCurrentTextTransform() {\n      // 9.4.4 Text Space Details\n      const font = textState.font;\n      const tsm = [\n        textState.fontSize * textState.textHScale,\n        0,\n        0,\n        textState.fontSize,\n        0,\n        textState.textRise,\n      ];\n\n      if (\n        font.isType3Font &&\n        (textState.fontSize <= 1 || font.isCharBBox) &&\n        !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\n      ) {\n        const glyphHeight = font.bbox[3] - font.bbox[1];\n        if (glyphHeight > 0) {\n          tsm[3] *= glyphHeight * textState.fontMatrix[3];\n        }\n      }\n\n      return Util.transform(\n        textState.ctm,\n        Util.transform(textState.textMatrix, tsm)\n      );\n    }\n\n    function ensureTextContentItem() {\n      if (textContentItem.initialized) {\n        return textContentItem;\n      }\n      const font = textState.font,\n        loadedName = font.loadedName;\n      if (!seenStyles.has(loadedName)) {\n        seenStyles.add(loadedName);\n\n        textContent.styles[loadedName] = {\n          fontFamily: font.fallbackName,\n          ascent: font.ascent,\n          descent: font.descent,\n          vertical: font.vertical,\n        };\n      }\n      textContentItem.fontName = loadedName;\n\n      const trm = (textContentItem.transform = getCurrentTextTransform());\n      if (!font.vertical) {\n        textContentItem.width = textContentItem.totalWidth = 0;\n        textContentItem.height = textContentItem.totalHeight = Math.hypot(\n          trm[2],\n          trm[3]\n        );\n        textContentItem.vertical = false;\n      } else {\n        textContentItem.width = textContentItem.totalWidth = Math.hypot(\n          trm[0],\n          trm[1]\n        );\n        textContentItem.height = textContentItem.totalHeight = 0;\n        textContentItem.vertical = true;\n      }\n\n      const scaleLineX = Math.hypot(\n        textState.textLineMatrix[0],\n        textState.textLineMatrix[1]\n      );\n      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n\n      textContentItem.trackingSpaceMin =\n        textState.fontSize * TRACKING_SPACE_FACTOR;\n      textContentItem.negativeSpaceMax =\n        textState.fontSize * NEGATIVE_SPACE_FACTOR;\n      textContentItem.spaceInFlowMin =\n        textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n      textContentItem.spaceInFlowMax =\n        textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n\n      textContentItem.hasEOL = false;\n\n      textContentItem.initialized = true;\n      return textContentItem;\n    }\n\n    function updateAdvanceScale() {\n      if (!textContentItem.initialized) {\n        return;\n      }\n\n      const scaleLineX = Math.hypot(\n        textState.textLineMatrix[0],\n        textState.textLineMatrix[1]\n      );\n      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n      const scaleFactor = scaleCtmX * scaleLineX;\n      if (scaleFactor === textContentItem.textAdvanceScale) {\n        return;\n      }\n\n      if (!textContentItem.vertical) {\n        textContentItem.totalWidth +=\n          textContentItem.width * textContentItem.textAdvanceScale;\n        textContentItem.width = 0;\n      } else {\n        textContentItem.totalHeight +=\n          textContentItem.height * textContentItem.textAdvanceScale;\n        textContentItem.height = 0;\n      }\n\n      textContentItem.textAdvanceScale = scaleFactor;\n    }\n\n    function runBidiTransform(textChunk) {\n      const text = textChunk.str.join(\"\");\n      const bidiResult = bidi(text, -1, textChunk.vertical);\n      return {\n        str: bidiResult.str,\n        dir: bidiResult.dir,\n        width: Math.abs(textChunk.totalWidth),\n        height: Math.abs(textChunk.totalHeight),\n        transform: textChunk.transform,\n        fontName: textChunk.fontName,\n        hasEOL: textChunk.hasEOL,\n      };\n    }\n\n    function handleSetFont(fontName, fontRef) {\n      return self\n        .loadFont(fontName, fontRef, resources)\n        .then(function (translated) {\n          if (!translated.font.isType3Font) {\n            return translated;\n          }\n          return translated\n            .loadType3Data(self, resources, task)\n            .catch(function () {\n              // Ignore Type3-parsing errors, since we only use `loadType3Data`\n              // here to ensure that we'll always obtain a useful /FontBBox.\n            })\n            .then(function () {\n              return translated;\n            });\n        })\n        .then(function (translated) {\n          textState.font = translated.font;\n          textState.fontMatrix =\n            translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n        });\n    }\n\n    function applyInverseRotation(x, y, matrix) {\n      const scale = Math.hypot(matrix[0], matrix[1]);\n      return [\n        (matrix[0] * x + matrix[1] * y) / scale,\n        (matrix[2] * x + matrix[3] * y) / scale,\n      ];\n    }\n\n    function compareWithLastPosition() {\n      const currentTransform = getCurrentTextTransform();\n      let posX = currentTransform[4];\n      let posY = currentTransform[5];\n\n      const shiftedX = posX - viewBox[0];\n      const shiftedY = posY - viewBox[1];\n\n      if (\n        shiftedX < 0 ||\n        shiftedX > viewBox[2] ||\n        shiftedY < 0 ||\n        shiftedY > viewBox[3]\n      ) {\n        return false;\n      }\n\n      if (\n        !combineTextItems ||\n        !textState.font ||\n        !textContentItem.prevTransform\n      ) {\n        return true;\n      }\n\n      let lastPosX = textContentItem.prevTransform[4];\n      let lastPosY = textContentItem.prevTransform[5];\n\n      if (lastPosX === posX && lastPosY === posY) {\n        return true;\n      }\n\n      let rotate = -1;\n      // Take into account the rotation is the current transform.\n      if (\n        currentTransform[0] &&\n        currentTransform[1] === 0 &&\n        currentTransform[2] === 0\n      ) {\n        rotate = currentTransform[0] > 0 ? 0 : 180;\n      } else if (\n        currentTransform[1] &&\n        currentTransform[0] === 0 &&\n        currentTransform[3] === 0\n      ) {\n        rotate = currentTransform[1] > 0 ? 90 : 270;\n      }\n\n      switch (rotate) {\n        case 0:\n          break;\n        case 90:\n          [posX, posY] = [posY, posX];\n          [lastPosX, lastPosY] = [lastPosY, lastPosX];\n          break;\n        case 180:\n          [posX, posY, lastPosX, lastPosY] = [\n            -posX,\n            -posY,\n            -lastPosX,\n            -lastPosY,\n          ];\n          break;\n        case 270:\n          [posX, posY] = [-posY, -posX];\n          [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n          break;\n        default:\n          // This is not a 0, 90, 180, 270 rotation so:\n          //  - remove the scale factor from the matrix to get a rotation matrix\n          //  - apply the inverse (which is the transposed) to the positions\n          // and we can then compare positions of the glyphes to detect\n          // a whitespace.\n          [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\n          [lastPosX, lastPosY] = applyInverseRotation(\n            lastPosX,\n            lastPosY,\n            textContentItem.prevTransform\n          );\n      }\n\n      if (textState.font.vertical) {\n        const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n        const advanceX = posX - lastPosX;\n\n        // When the total height of the current chunk is negative\n        // then we're writing from bottom to top.\n        const textOrientation = Math.sign(textContentItem.height);\n        if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {\n          if (\n            Math.abs(advanceX) >\n            0.5 * textContentItem.width /* not the same column */\n          ) {\n            appendEOL();\n            return true;\n          }\n\n          flushTextContentItem();\n          return true;\n        }\n\n        if (Math.abs(advanceX) > textContentItem.width) {\n          appendEOL();\n          return true;\n        }\n        if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {\n          textContentItem.height += advanceY;\n        } else if (\n          !addFakeSpaces(\n            advanceY,\n            textContentItem.prevTransform,\n            textOrientation\n          )\n        ) {\n          if (textContentItem.str.length === 0) {\n            textContent.items.push({\n              str: \" \",\n              dir: \"ltr\",\n              width: 0,\n              height: Math.abs(advanceY),\n              transform: textContentItem.prevTransform,\n              fontName: textContentItem.fontName,\n              hasEOL: false,\n            });\n          } else {\n            textContentItem.height += advanceY;\n          }\n        }\n\n        return true;\n      }\n\n      const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n      const advanceY = posY - lastPosY;\n\n      // When the total width of the current chunk is negative\n      // then we're writing from right to left.\n      const textOrientation = Math.sign(textContentItem.width);\n      if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {\n        if (\n          Math.abs(advanceY) >\n          0.5 * textContentItem.height /* not the same line */\n        ) {\n          appendEOL();\n          return true;\n        }\n        flushTextContentItem();\n        return true;\n      }\n\n      if (Math.abs(advanceY) > textContentItem.height) {\n        appendEOL();\n        return true;\n      }\n\n      if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {\n        textContentItem.width += advanceX;\n      } else if (\n        !addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)\n      ) {\n        if (textContentItem.str.length === 0) {\n          textContent.items.push({\n            str: \" \",\n            dir: \"ltr\",\n            width: Math.abs(advanceX),\n            height: 0,\n            transform: textContentItem.prevTransform,\n            fontName: textContentItem.fontName,\n            hasEOL: false,\n          });\n        } else {\n          textContentItem.width += advanceX;\n        }\n      }\n\n      return true;\n    }\n\n    function buildTextContentItem({ chars, extraSpacing }) {\n      const font = textState.font;\n      if (!chars) {\n        // Just move according to the space we have.\n        const charSpacing = textState.charSpacing + extraSpacing;\n        if (charSpacing) {\n          if (!font.vertical) {\n            textState.translateTextMatrix(\n              charSpacing * textState.textHScale,\n              0\n            );\n          } else {\n            textState.translateTextMatrix(0, -charSpacing);\n          }\n        }\n\n        return;\n      }\n\n      const glyphs = font.charsToGlyphs(chars);\n      const scale = textState.fontMatrix[0] * textState.fontSize;\n\n      for (let i = 0, ii = glyphs.length; i < ii; i++) {\n        const glyph = glyphs[i];\n        if (glyph.isInvisibleFormatMark) {\n          continue;\n        }\n        let charSpacing =\n          textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\n\n        let glyphWidth = glyph.width;\n        if (font.vertical) {\n          glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n        }\n        let scaledDim = glyphWidth * scale;\n\n        if (\n          glyph.isWhitespace &&\n          (i === 0 ||\n            i + 1 === ii ||\n            glyphs[i - 1].isWhitespace ||\n            glyphs[i + 1].isWhitespace ||\n            extraSpacing)\n        ) {\n          // Don't push a \" \" in the textContentItem\n          // (except when it's between two non-spaces chars),\n          // it will be done (if required) in next call to\n          // compareWithLastPosition.\n          // This way we can merge real spaces and spaces due to cursor moves.\n          if (!font.vertical) {\n            charSpacing += scaledDim + textState.wordSpacing;\n            textState.translateTextMatrix(\n              charSpacing * textState.textHScale,\n              0\n            );\n          } else {\n            charSpacing += -scaledDim + textState.wordSpacing;\n            textState.translateTextMatrix(0, -charSpacing);\n          }\n          continue;\n        }\n\n        if (!compareWithLastPosition()) {\n          // The glyph is not in page so just skip it.\n          continue;\n        }\n\n        // Must be called after compareWithLastPosition because\n        // the textContentItem could have been flushed.\n        const textChunk = ensureTextContentItem();\n        if (glyph.isZeroWidthDiacritic) {\n          scaledDim = 0;\n        }\n\n        if (!font.vertical) {\n          scaledDim *= textState.textHScale;\n          textState.translateTextMatrix(scaledDim, 0);\n          textChunk.width += scaledDim;\n        } else {\n          textState.translateTextMatrix(0, scaledDim);\n          scaledDim = Math.abs(scaledDim);\n          textChunk.height += scaledDim;\n        }\n\n        if (scaledDim) {\n          // Save the position of the last visible character.\n          textChunk.prevTransform = getCurrentTextTransform();\n        }\n\n        if (glyph.isWhitespace) {\n          // Replaces all whitespaces with standard spaces (0x20), to avoid\n          // alignment issues between the textLayer and the canvas if the text\n          // contains e.g. tabs (fixes issue6612.pdf).\n          textChunk.str.push(\" \");\n        } else {\n          let glyphUnicode = glyph.unicode;\n          glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;\n          glyphUnicode = reverseIfRtl(glyphUnicode);\n          textChunk.str.push(glyphUnicode);\n        }\n\n        if (charSpacing) {\n          if (!font.vertical) {\n            textState.translateTextMatrix(\n              charSpacing * textState.textHScale,\n              0\n            );\n          } else {\n            textState.translateTextMatrix(0, -charSpacing);\n          }\n        }\n      }\n    }\n\n    function appendEOL() {\n      if (textContentItem.initialized) {\n        textContentItem.hasEOL = true;\n        flushTextContentItem();\n      } else {\n        textContent.items.push({\n          str: \"\",\n          dir: \"ltr\",\n          width: 0,\n          height: 0,\n          transform: getCurrentTextTransform(),\n          fontName: textState.font.loadedName,\n          hasEOL: true,\n        });\n      }\n    }\n\n    function addFakeSpaces(width, transf, textOrientation) {\n      if (\n        textOrientation * textContentItem.spaceInFlowMin <= width &&\n        width <= textOrientation * textContentItem.spaceInFlowMax\n      ) {\n        if (textContentItem.initialized) {\n          textContentItem.str.push(\" \");\n        }\n        return false;\n      }\n\n      const fontName = textContentItem.fontName;\n\n      let height = 0;\n      if (textContentItem.vertical) {\n        height = width;\n        width = 0;\n      }\n\n      flushTextContentItem();\n      textContent.items.push({\n        str: \" \",\n        // TODO: check if using the orientation from last chunk is\n        // better or not.\n        dir: \"ltr\",\n        width: Math.abs(width),\n        height: Math.abs(height),\n        transform: transf || getCurrentTextTransform(),\n        fontName,\n        hasEOL: false,\n      });\n\n      return true;\n    }\n\n    function flushTextContentItem() {\n      if (!textContentItem.initialized || !textContentItem.str) {\n        return;\n      }\n\n      // Do final text scaling.\n      if (!textContentItem.vertical) {\n        textContentItem.totalWidth +=\n          textContentItem.width * textContentItem.textAdvanceScale;\n      } else {\n        textContentItem.totalHeight +=\n          textContentItem.height * textContentItem.textAdvanceScale;\n      }\n\n      textContent.items.push(runBidiTransform(textContentItem));\n      textContentItem.initialized = false;\n      textContentItem.str.length = 0;\n    }\n\n    function enqueueChunk(batch = false) {\n      const length = textContent.items.length;\n      if (length === 0) {\n        return;\n      }\n      if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n        return;\n      }\n      sink.enqueue(textContent, length);\n      textContent.items = [];\n      textContent.styles = Object.create(null);\n    }\n\n    const timeSlotManager = new TimeSlotManager();\n\n    return new Promise(function promiseBody(resolve, reject) {\n      const next = function (promise) {\n        enqueueChunk(/* batch = */ true);\n        Promise.all([promise, sink.ready]).then(function () {\n          try {\n            promiseBody(resolve, reject);\n          } catch (ex) {\n            reject(ex);\n          }\n        }, reject);\n      };\n      task.ensureNotTerminated();\n      timeSlotManager.reset();\n\n      const operation = {};\n      let stop,\n        args = [];\n      while (!(stop = timeSlotManager.check())) {\n        // The arguments parsed by read() are not used beyond this loop, so\n        // we can reuse the same array on every iteration, thus avoiding\n        // unnecessary allocations.\n        args.length = 0;\n        operation.args = args;\n        if (!preprocessor.read(operation)) {\n          break;\n        }\n        textState = stateManager.state;\n        const fn = operation.fn;\n        args = operation.args;\n\n        switch (fn | 0) {\n          case OPS.setFont:\n            // Optimization to ignore multiple identical Tf commands.\n            var fontNameArg = args[0].name,\n              fontSizeArg = args[1];\n            if (\n              textState.font &&\n              fontNameArg === textState.fontName &&\n              fontSizeArg === textState.fontSize\n            ) {\n              break;\n            }\n\n            flushTextContentItem();\n            textState.fontName = fontNameArg;\n            textState.fontSize = fontSizeArg;\n            next(handleSetFont(fontNameArg, null));\n            return;\n          case OPS.setTextRise:\n            textState.textRise = args[0];\n            break;\n          case OPS.setHScale:\n            textState.textHScale = args[0] / 100;\n            break;\n          case OPS.setLeading:\n            textState.leading = args[0];\n            break;\n          case OPS.moveText:\n            textState.translateTextLineMatrix(args[0], args[1]);\n            textState.textMatrix = textState.textLineMatrix.slice();\n            break;\n          case OPS.setLeadingMoveText:\n            textState.leading = -args[1];\n            textState.translateTextLineMatrix(args[0], args[1]);\n            textState.textMatrix = textState.textLineMatrix.slice();\n            break;\n          case OPS.nextLine:\n            textState.carriageReturn();\n            break;\n          case OPS.setTextMatrix:\n            textState.setTextMatrix(\n              args[0],\n              args[1],\n              args[2],\n              args[3],\n              args[4],\n              args[5]\n            );\n            textState.setTextLineMatrix(\n              args[0],\n              args[1],\n              args[2],\n              args[3],\n              args[4],\n              args[5]\n            );\n            updateAdvanceScale();\n            break;\n          case OPS.setCharSpacing:\n            textState.charSpacing = args[0];\n            break;\n          case OPS.setWordSpacing:\n            textState.wordSpacing = args[0];\n            break;\n          case OPS.beginText:\n            textState.textMatrix = IDENTITY_MATRIX.slice();\n            textState.textLineMatrix = IDENTITY_MATRIX.slice();\n            break;\n          case OPS.showSpacedText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n\n            const spaceFactor =\n              ((textState.font.vertical ? 1 : -1) * textState.fontSize) / 1000;\n            const elements = args[0];\n            for (let i = 0, ii = elements.length; i < ii - 1; i++) {\n              const item = elements[i];\n              if (typeof item === \"string\") {\n                showSpacedTextBuffer.push(item);\n              } else if (typeof item === \"number\" && item !== 0) {\n                // PDF Specification 5.3.2 states:\n                // The number is expressed in thousandths of a unit of text\n                // space.\n                // This amount is subtracted from the current horizontal or\n                // vertical coordinate, depending on the writing mode.\n                // In the default coordinate system, a positive adjustment\n                // has the effect of moving the next glyph painted either to\n                // the left or down by the given amount.\n                const str = showSpacedTextBuffer.join(\"\");\n                showSpacedTextBuffer.length = 0;\n                buildTextContentItem({\n                  chars: str,\n                  extraSpacing: item * spaceFactor,\n                });\n              }\n            }\n\n            const item = elements[elements.length - 1];\n            if (typeof item === \"string\") {\n              showSpacedTextBuffer.push(item);\n            }\n\n            if (showSpacedTextBuffer.length > 0) {\n              const str = showSpacedTextBuffer.join(\"\");\n              showSpacedTextBuffer.length = 0;\n              buildTextContentItem({\n                chars: str,\n                extraSpacing: 0,\n              });\n            }\n            break;\n          case OPS.showText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            buildTextContentItem({\n              chars: args[0],\n              extraSpacing: 0,\n            });\n            break;\n          case OPS.nextLineShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            textState.carriageReturn();\n            buildTextContentItem({\n              chars: args[0],\n              extraSpacing: 0,\n            });\n            break;\n          case OPS.nextLineSetSpacingShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            textState.wordSpacing = args[0];\n            textState.charSpacing = args[1];\n            textState.carriageReturn();\n            buildTextContentItem({\n              chars: args[2],\n              extraSpacing: 0,\n            });\n            break;\n          case OPS.paintXObject:\n            flushTextContentItem();\n            if (!xobjs) {\n              xobjs = resources.get(\"XObject\") || Dict.empty;\n            }\n\n            var isValidName = args[0] instanceof Name;\n            var name = args[0].name;\n\n            if (isValidName && emptyXObjectCache.getByName(name)) {\n              break;\n            }\n\n            next(\n              new Promise(function (resolveXObject, rejectXObject) {\n                if (!isValidName) {\n                  throw new FormatError(\"XObject must be referred to by name.\");\n                }\n\n                let xobj = xobjs.getRaw(name);\n                if (xobj instanceof Ref) {\n                  if (emptyXObjectCache.getByRef(xobj)) {\n                    resolveXObject();\n                    return;\n                  }\n\n                  const globalImage = self.globalImageCache.getData(\n                    xobj,\n                    self.pageIndex\n                  );\n                  if (globalImage) {\n                    resolveXObject();\n                    return;\n                  }\n\n                  xobj = xref.fetch(xobj);\n                }\n\n                if (!(xobj instanceof BaseStream)) {\n                  throw new FormatError(\"XObject should be a stream\");\n                }\n\n                const type = xobj.dict.get(\"Subtype\");\n                if (!(type instanceof Name)) {\n                  throw new FormatError(\"XObject should have a Name subtype\");\n                }\n\n                if (type.name !== \"Form\") {\n                  emptyXObjectCache.set(name, xobj.dict.objId, true);\n\n                  resolveXObject();\n                  return;\n                }\n\n                // Use a new `StateManager` to prevent incorrect positioning\n                // of textItems *after* the Form XObject, since errors in the\n                // data can otherwise prevent `restore` operators from\n                // executing.\n                // NOTE: Only an issue when `options.ignoreErrors === true`.\n                const currentState = stateManager.state.clone();\n                const xObjStateManager = new StateManager(currentState);\n\n                const matrix = xobj.dict.getArray(\"Matrix\");\n                if (Array.isArray(matrix) && matrix.length === 6) {\n                  xObjStateManager.transform(matrix);\n                }\n\n                // Enqueue the `textContent` chunk before parsing the /Form\n                // XObject.\n                enqueueChunk();\n                const sinkWrapper = {\n                  enqueueInvoked: false,\n\n                  enqueue(chunk, size) {\n                    this.enqueueInvoked = true;\n                    sink.enqueue(chunk, size);\n                  },\n\n                  get desiredSize() {\n                    return sink.desiredSize;\n                  },\n\n                  get ready() {\n                    return sink.ready;\n                  },\n                };\n\n                self\n                  .getTextContent({\n                    stream: xobj,\n                    task,\n                    resources: xobj.dict.get(\"Resources\") || resources,\n                    stateManager: xObjStateManager,\n                    combineTextItems,\n                    includeMarkedContent,\n                    sink: sinkWrapper,\n                    seenStyles,\n                    viewBox,\n                  })\n                  .then(function () {\n                    if (!sinkWrapper.enqueueInvoked) {\n                      emptyXObjectCache.set(name, xobj.dict.objId, true);\n                    }\n                    resolveXObject();\n                  }, rejectXObject);\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the XObject -- allow text-extraction to\n                  // continue.\n                  warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.setGState:\n            isValidName = args[0] instanceof Name;\n            name = args[0].name;\n\n            if (isValidName && emptyGStateCache.getByName(name)) {\n              break;\n            }\n\n            next(\n              new Promise(function (resolveGState, rejectGState) {\n                if (!isValidName) {\n                  throw new FormatError(\"GState must be referred to by name.\");\n                }\n\n                const extGState = resources.get(\"ExtGState\");\n                if (!(extGState instanceof Dict)) {\n                  throw new FormatError(\"ExtGState should be a dictionary.\");\n                }\n\n                const gState = extGState.get(name);\n                // TODO: Attempt to lookup cached GStates by reference as well,\n                //       if and only if there are PDF documents where doing so\n                //       would significantly improve performance.\n                if (!(gState instanceof Dict)) {\n                  throw new FormatError(\"GState should be a dictionary.\");\n                }\n\n                const gStateFont = gState.get(\"Font\");\n                if (!gStateFont) {\n                  emptyGStateCache.set(name, gState.objId, true);\n\n                  resolveGState();\n                  return;\n                }\n                flushTextContentItem();\n\n                textState.fontName = null;\n                textState.fontSize = gStateFont[1];\n                handleSetFont(null, gStateFont[0]).then(\n                  resolveGState,\n                  rejectGState\n                );\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the ExtGState -- allow text-extraction to\n                  // continue.\n                  warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.beginMarkedContent:\n            if (includeMarkedContent) {\n              textContent.items.push({\n                type: \"beginMarkedContent\",\n                tag: args[0] instanceof Name ? args[0].name : null,\n              });\n            }\n            break;\n          case OPS.beginMarkedContentProps:\n            if (includeMarkedContent) {\n              flushTextContentItem();\n              let mcid = null;\n              if (args[1] instanceof Dict) {\n                mcid = args[1].get(\"MCID\");\n              }\n              textContent.items.push({\n                type: \"beginMarkedContentProps\",\n                id: Number.isInteger(mcid)\n                  ? `${self.idFactory.getPageObjId()}_mcid${mcid}`\n                  : null,\n                tag: args[0] instanceof Name ? args[0].name : null,\n              });\n            }\n            break;\n          case OPS.endMarkedContent:\n            if (includeMarkedContent) {\n              flushTextContentItem();\n              textContent.items.push({\n                type: \"endMarkedContent\",\n              });\n            }\n            break;\n        } // switch\n        if (textContent.items.length >= sink.desiredSize) {\n          // Wait for ready, if we reach highWaterMark.\n          stop = true;\n          break;\n        }\n      } // while\n      if (stop) {\n        next(deferred);\n        return;\n      }\n      flushTextContentItem();\n      enqueueChunk();\n      resolve();\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return;\n      }\n      if (this.options.ignoreErrors) {\n        // Error(s) in the TextContent -- allow text-extraction to continue.\n        warn(\n          `getTextContent - ignoring errors during \"${task.name}\" ` +\n            `task: \"${reason}\".`\n        );\n\n        flushTextContentItem();\n        enqueueChunk();\n        return;\n      }\n      throw reason;\n    });\n  }\n\n  extractDataStructures(dict, baseDict, properties) {\n    const xref = this.xref;\n    let cidToGidBytes;\n    // 9.10.2\n    const toUnicodePromise = this.readToUnicode(\n      properties.toUnicode || dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\")\n    );\n\n    if (properties.composite) {\n      // CIDSystemInfo helps to match CID to glyphs\n      const cidSystemInfo = dict.get(\"CIDSystemInfo\");\n      if (cidSystemInfo instanceof Dict) {\n        properties.cidSystemInfo = {\n          registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n          ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n          supplement: cidSystemInfo.get(\"Supplement\"),\n        };\n      }\n\n      const cidToGidMap = dict.get(\"CIDToGIDMap\");\n      if (cidToGidMap instanceof BaseStream) {\n        cidToGidBytes = cidToGidMap.getBytes();\n      }\n    }\n\n    // Based on 9.6.6 of the spec the encoding can come from multiple places\n    // and depends on the font type. The base encoding and differences are\n    // read here, but the encoding that is actually used is chosen during\n    // glyph mapping in the font.\n    // TODO: Loading the built in encoding in the font would allow the\n    // differences to be merged in here not require us to hold on to it.\n    const differences = [];\n    let baseEncodingName = null;\n    let encoding;\n    if (dict.has(\"Encoding\")) {\n      encoding = dict.get(\"Encoding\");\n      if (encoding instanceof Dict) {\n        baseEncodingName = encoding.get(\"BaseEncoding\");\n        baseEncodingName =\n          baseEncodingName instanceof Name ? baseEncodingName.name : null;\n        // Load the differences between the base and original\n        if (encoding.has(\"Differences\")) {\n          const diffEncoding = encoding.get(\"Differences\");\n          let index = 0;\n          for (let j = 0, jj = diffEncoding.length; j < jj; j++) {\n            const data = xref.fetchIfRef(diffEncoding[j]);\n            if (typeof data === \"number\") {\n              index = data;\n            } else if (data instanceof Name) {\n              differences[index++] = data.name;\n            } else {\n              throw new FormatError(\n                `Invalid entry in 'Differences' array: ${data}`\n              );\n            }\n          }\n        }\n      } else if (encoding instanceof Name) {\n        baseEncodingName = encoding.name;\n      } else {\n        throw new FormatError(\"Encoding is not a Name nor a Dict\");\n      }\n      // According to table 114 if the encoding is a named encoding it must be\n      // one of these predefined encodings.\n      if (\n        baseEncodingName !== \"MacRomanEncoding\" &&\n        baseEncodingName !== \"MacExpertEncoding\" &&\n        baseEncodingName !== \"WinAnsiEncoding\"\n      ) {\n        baseEncodingName = null;\n      }\n    }\n\n    if (baseEncodingName) {\n      properties.defaultEncoding = getEncoding(baseEncodingName);\n    } else {\n      const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n      const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n      // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n      // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n      // font should use the `StandardEncoding` if no encoding is specified.\n      encoding = StandardEncoding;\n      if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n        encoding = WinAnsiEncoding;\n      }\n      // The Symbolic attribute can be misused for regular fonts\n      // Heuristic: we have to check if the font is a standard one also\n      if (isSymbolicFont) {\n        encoding = MacRomanEncoding;\n        if (!properties.file || properties.isInternalFont) {\n          if (/Symbol/i.test(properties.name)) {\n            encoding = SymbolSetEncoding;\n          } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n            encoding = ZapfDingbatsEncoding;\n          }\n        }\n      }\n      properties.defaultEncoding = encoding;\n    }\n\n    properties.differences = differences;\n    properties.baseEncodingName = baseEncodingName;\n    properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n    properties.dict = dict;\n    return toUnicodePromise\n      .then(readToUnicode => {\n        properties.toUnicode = readToUnicode;\n        return this.buildToUnicode(properties);\n      })\n      .then(builtToUnicode => {\n        properties.toUnicode = builtToUnicode;\n        if (cidToGidBytes) {\n          properties.cidToGidMap = this.readCidToGidMap(\n            cidToGidBytes,\n            builtToUnicode\n          );\n        }\n        return properties;\n      });\n  }\n\n  /**\n   * @returns {Array}\n   * @private\n   */\n  _simpleFontToUnicode(properties, forceGlyphs = false) {\n    assert(!properties.composite, \"Must be a simple font.\");\n\n    const toUnicode = [];\n    const encoding = properties.defaultEncoding.slice();\n    const baseEncodingName = properties.baseEncodingName;\n    // Merge in the differences array.\n    const differences = properties.differences;\n    for (const charcode in differences) {\n      const glyphName = differences[charcode];\n      if (glyphName === \".notdef\") {\n        // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n        // where there should be spaces (fixes issue5256.pdf).\n        continue;\n      }\n      encoding[charcode] = glyphName;\n    }\n    const glyphsUnicodeMap = getGlyphsUnicode();\n    for (const charcode in encoding) {\n      // a) Map the character code to a character name.\n      let glyphName = encoding[charcode];\n      // b) Look up the character name in the Adobe Glyph List (see the\n      //    Bibliography) to obtain the corresponding Unicode value.\n      if (glyphName === \"\") {\n        continue;\n      } else if (glyphsUnicodeMap[glyphName] === undefined) {\n        // (undocumented) c) Few heuristics to recognize unknown glyphs\n        // NOTE: Adobe Reader does not do this step, but OSX Preview does\n        let code = 0;\n        switch (glyphName[0]) {\n          case \"G\": // Gxx glyph\n            if (glyphName.length === 3) {\n              code = parseInt(glyphName.substring(1), 16);\n            }\n            break;\n          case \"g\": // g00xx glyph\n            if (glyphName.length === 5) {\n              code = parseInt(glyphName.substring(1), 16);\n            }\n            break;\n          case \"C\": // Cdd{d} glyph\n          case \"c\": // cdd{d} glyph\n            if (glyphName.length >= 3 && glyphName.length <= 4) {\n              const codeStr = glyphName.substring(1);\n\n              if (forceGlyphs) {\n                code = parseInt(codeStr, 16);\n                break;\n              }\n              // Normally the Cdd{d}/cdd{d} glyphName format will contain\n              // regular, i.e. base 10, charCodes (see issue4550.pdf)...\n              code = +codeStr;\n\n              // ... however some PDF generators violate that assumption by\n              // containing glyph, i.e. base 16, codes instead.\n              // In that case we need to re-parse the *entire* encoding to\n              // prevent broken text-selection (fixes issue9655_reduced.pdf).\n              if (\n                Number.isNaN(code) &&\n                Number.isInteger(parseInt(codeStr, 16))\n              ) {\n                return this._simpleFontToUnicode(\n                  properties,\n                  /* forceGlyphs */ true\n                );\n              }\n            }\n            break;\n          default:\n            // 'uniXXXX'/'uXXXX{XX}' glyphs\n            const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n            if (unicode !== -1) {\n              code = unicode;\n            }\n        }\n        if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n          // If `baseEncodingName` is one the predefined encodings, and `code`\n          // equals `charcode`, using the glyph defined in the baseEncoding\n          // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n          if (baseEncodingName && code === +charcode) {\n            const baseEncoding = getEncoding(baseEncodingName);\n            if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n              toUnicode[charcode] = String.fromCharCode(\n                glyphsUnicodeMap[glyphName]\n              );\n              continue;\n            }\n          }\n          toUnicode[charcode] = String.fromCodePoint(code);\n        }\n        continue;\n      }\n      toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n    }\n    return toUnicode;\n  }\n\n  /**\n   * Builds a char code to unicode map based on section 9.10 of the spec.\n   * @param {Object} properties Font properties object.\n   * @returns {Promise} A Promise that is resolved with a\n   *   {ToUnicodeMap|IdentityToUnicodeMap} object.\n   */\n  async buildToUnicode(properties) {\n    properties.hasIncludedToUnicodeMap =\n      !!properties.toUnicode && properties.toUnicode.length > 0;\n\n    // Section 9.10.2 Mapping Character Codes to Unicode Values\n    if (properties.hasIncludedToUnicodeMap) {\n      // Some fonts contain incomplete ToUnicode data, causing issues with\n      // text-extraction. For simple fonts, containing encoding information,\n      // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n      if (!properties.composite && properties.hasEncoding) {\n        properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n      }\n      return properties.toUnicode;\n    }\n\n    // According to the spec if the font is a simple font we should only map\n    // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n    // the differences array only contains adobe standard or symbol set names,\n    // in pratice it seems better to always try to create a toUnicode map\n    // based of the default encoding.\n    if (!properties.composite /* is simple font */) {\n      return new ToUnicodeMap(this._simpleFontToUnicode(properties));\n    }\n\n    // If the font is a composite font that uses one of the predefined CMaps\n    // listed in Table 118 (except Identity–H and Identity–V) or whose\n    // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n    // Adobe-Korea1 character collection:\n    if (\n      properties.composite &&\n      ((properties.cMap.builtInCMap &&\n        !(properties.cMap instanceof IdentityCMap)) ||\n        (properties.cidSystemInfo.registry === \"Adobe\" &&\n          (properties.cidSystemInfo.ordering === \"GB1\" ||\n            properties.cidSystemInfo.ordering === \"CNS1\" ||\n            properties.cidSystemInfo.ordering === \"Japan1\" ||\n            properties.cidSystemInfo.ordering === \"Korea1\")))\n    ) {\n      // Then:\n      // a) Map the character code to a character identifier (CID) according\n      // to the font’s CMap.\n      // b) Obtain the registry and ordering of the character collection used\n      // by the font’s CMap (for example, Adobe and Japan1) from its\n      // CIDSystemInfo dictionary.\n      const { registry, ordering } = properties.cidSystemInfo;\n      // c) Construct a second CMap name by concatenating the registry and\n      // ordering obtained in step (b) in the format registry–ordering–UCS2\n      // (for example, Adobe–Japan1–UCS2).\n      const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\n      // d) Obtain the CMap with the name constructed in step (c) (available\n      // from the ASN Web site; see the Bibliography).\n      const ucs2CMap = await CMapFactory.create({\n        encoding: ucs2CMapName,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      });\n      const toUnicode = [];\n      properties.cMap.forEach(function (charcode, cid) {\n        if (cid > 0xffff) {\n          throw new FormatError(\"Max size of CID is 65,535\");\n        }\n        // e) Map the CID obtained in step (a) according to the CMap\n        // obtained in step (d), producing a Unicode value.\n        const ucs2 = ucs2CMap.lookup(cid);\n        if (ucs2) {\n          toUnicode[charcode] = String.fromCharCode(\n            (ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)\n          );\n        }\n      });\n      return new ToUnicodeMap(toUnicode);\n    }\n\n    // The viewer's choice, just use an identity map.\n    return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n  }\n\n  readToUnicode(cmapObj) {\n    if (!cmapObj) {\n      return Promise.resolve(null);\n    }\n    if (cmapObj instanceof Name) {\n      return CMapFactory.create({\n        encoding: cmapObj,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      }).then(function (cmap) {\n        if (cmap instanceof IdentityCMap) {\n          return new IdentityToUnicodeMap(0, 0xffff);\n        }\n        return new ToUnicodeMap(cmap.getMap());\n      });\n    } else if (cmapObj instanceof BaseStream) {\n      return CMapFactory.create({\n        encoding: cmapObj,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      }).then(\n        function (cmap) {\n          if (cmap instanceof IdentityCMap) {\n            return new IdentityToUnicodeMap(0, 0xffff);\n          }\n          const map = new Array(cmap.length);\n          // Convert UTF-16BE\n          // NOTE: cmap can be a sparse array, so use forEach instead of\n          // `for(;;)` to iterate over all keys.\n          cmap.forEach(function (charCode, token) {\n            // Some cmaps contain *only* CID characters (fixes issue9367.pdf).\n            if (typeof token === \"number\") {\n              map[charCode] = String.fromCodePoint(token);\n              return;\n            }\n            const str = [];\n            for (let k = 0; k < token.length; k += 2) {\n              const w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n              if ((w1 & 0xf800) !== 0xd800) {\n                // w1 < 0xD800 || w1 > 0xDFFF\n                str.push(w1);\n                continue;\n              }\n              k += 2;\n              const w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n              str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n            }\n            map[charCode] = String.fromCodePoint.apply(String, str);\n          });\n          return new ToUnicodeMap(map);\n        },\n        reason => {\n          if (reason instanceof AbortException) {\n            return null;\n          }\n          if (this.options.ignoreErrors) {\n            // Error in the ToUnicode data -- sending unsupported feature\n            // notification and allow font parsing to continue.\n            this.handler.send(\"UnsupportedFeature\", {\n              featureId: UNSUPPORTED_FEATURES.errorFontToUnicode,\n            });\n            warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n            return null;\n          }\n          throw reason;\n        }\n      );\n    }\n    return Promise.resolve(null);\n  }\n\n  readCidToGidMap(glyphsData, toUnicode) {\n    // Extract the encoding from the CIDToGIDMap\n\n    // Set encoding 0 to later verify the font has an encoding\n    const result = [];\n    for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n      const glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n      const code = j >> 1;\n      if (glyphID === 0 && !toUnicode.has(code)) {\n        continue;\n      }\n      result[code] = glyphID;\n    }\n    return result;\n  }\n\n  extractWidths(dict, descriptor, properties) {\n    const xref = this.xref;\n    let glyphsWidths = [];\n    let defaultWidth = 0;\n    const glyphsVMetrics = [];\n    let defaultVMetrics;\n    let i, ii, j, jj, start, code, widths;\n    if (properties.composite) {\n      defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n\n      widths = dict.get(\"W\");\n      if (widths) {\n        for (i = 0, ii = widths.length; i < ii; i++) {\n          start = xref.fetchIfRef(widths[i++]);\n          code = xref.fetchIfRef(widths[i]);\n          if (Array.isArray(code)) {\n            for (j = 0, jj = code.length; j < jj; j++) {\n              glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n            }\n          } else {\n            const width = xref.fetchIfRef(widths[++i]);\n            for (j = start; j <= code; j++) {\n              glyphsWidths[j] = width;\n            }\n          }\n        }\n      }\n\n      if (properties.vertical) {\n        let vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n        vmetrics = dict.get(\"W2\");\n        if (vmetrics) {\n          for (i = 0, ii = vmetrics.length; i < ii; i++) {\n            start = xref.fetchIfRef(vmetrics[i++]);\n            code = xref.fetchIfRef(vmetrics[i]);\n            if (Array.isArray(code)) {\n              for (j = 0, jj = code.length; j < jj; j++) {\n                glyphsVMetrics[start++] = [\n                  xref.fetchIfRef(code[j++]),\n                  xref.fetchIfRef(code[j++]),\n                  xref.fetchIfRef(code[j]),\n                ];\n              }\n            } else {\n              const vmetric = [\n                xref.fetchIfRef(vmetrics[++i]),\n                xref.fetchIfRef(vmetrics[++i]),\n                xref.fetchIfRef(vmetrics[++i]),\n              ];\n              for (j = start; j <= code; j++) {\n                glyphsVMetrics[j] = vmetric;\n              }\n            }\n          }\n        }\n      }\n    } else {\n      const firstChar = properties.firstChar;\n      widths = dict.get(\"Widths\");\n      if (widths) {\n        j = firstChar;\n        for (i = 0, ii = widths.length; i < ii; i++) {\n          glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n        }\n        defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n      } else {\n        // Trying get the BaseFont metrics (see comment above).\n        const baseFontName = dict.get(\"BaseFont\");\n        if (baseFontName instanceof Name) {\n          const metrics = this.getBaseFontMetrics(baseFontName.name);\n\n          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n          defaultWidth = metrics.defaultWidth;\n        }\n      }\n    }\n\n    // Heuristic: detection of monospace font by checking all non-zero widths\n    let isMonospace = true;\n    let firstWidth = defaultWidth;\n    for (const glyph in glyphsWidths) {\n      const glyphWidth = glyphsWidths[glyph];\n      if (!glyphWidth) {\n        continue;\n      }\n      if (!firstWidth) {\n        firstWidth = glyphWidth;\n        continue;\n      }\n      if (firstWidth !== glyphWidth) {\n        isMonospace = false;\n        break;\n      }\n    }\n    if (isMonospace) {\n      properties.flags |= FontFlags.FixedPitch;\n    }\n\n    properties.defaultWidth = defaultWidth;\n    properties.widths = glyphsWidths;\n    properties.defaultVMetrics = defaultVMetrics;\n    properties.vmetrics = glyphsVMetrics;\n  }\n\n  isSerifFont(baseFontName) {\n    // Simulating descriptor flags attribute\n    const fontNameWoStyle = baseFontName.split(\"-\")[0];\n    return (\n      fontNameWoStyle in getSerifFonts() ||\n      fontNameWoStyle.search(/serif/gi) !== -1\n    );\n  }\n\n  getBaseFontMetrics(name) {\n    let defaultWidth = 0;\n    let widths = Object.create(null);\n    let monospace = false;\n    const stdFontMap = getStdFontMap();\n    let lookupName = stdFontMap[name] || name;\n    const Metrics = getMetrics();\n\n    if (!(lookupName in Metrics)) {\n      // Use default fonts for looking up font metrics if the passed\n      // font is not a base font\n      if (this.isSerifFont(name)) {\n        lookupName = \"Times-Roman\";\n      } else {\n        lookupName = \"Helvetica\";\n      }\n    }\n    const glyphWidths = Metrics[lookupName];\n\n    if (typeof glyphWidths === \"number\") {\n      defaultWidth = glyphWidths;\n      monospace = true;\n    } else {\n      widths = glyphWidths(); // expand lazy widths array\n    }\n\n    return {\n      defaultWidth,\n      monospace,\n      widths,\n    };\n  }\n\n  buildCharCodeToWidth(widthsByGlyphName, properties) {\n    const widths = Object.create(null);\n    const differences = properties.differences;\n    const encoding = properties.defaultEncoding;\n    for (let charCode = 0; charCode < 256; charCode++) {\n      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n        widths[charCode] = widthsByGlyphName[differences[charCode]];\n        continue;\n      }\n      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n        widths[charCode] = widthsByGlyphName[encoding[charCode]];\n        continue;\n      }\n    }\n    return widths;\n  }\n\n  preEvaluateFont(dict) {\n    const baseDict = dict;\n    let type = dict.get(\"Subtype\");\n    if (!(type instanceof Name)) {\n      throw new FormatError(\"invalid font Subtype\");\n    }\n\n    let composite = false;\n    let hash, toUnicode;\n    if (type.name === \"Type0\") {\n      // If font is a composite\n      //  - get the descendant font\n      //  - set the type according to the descendant font\n      //  - get the FontDescriptor from the descendant font\n      const df = dict.get(\"DescendantFonts\");\n      if (!df) {\n        throw new FormatError(\"Descendant fonts are not specified\");\n      }\n      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n      if (!(dict instanceof Dict)) {\n        throw new FormatError(\"Descendant font is not a dictionary.\");\n      }\n      type = dict.get(\"Subtype\");\n      if (!(type instanceof Name)) {\n        throw new FormatError(\"invalid font Subtype\");\n      }\n      composite = true;\n    }\n\n    const firstChar = dict.get(\"FirstChar\") || 0,\n      lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n    const descriptor = dict.get(\"FontDescriptor\");\n    if (descriptor) {\n      hash = new MurmurHash3_64();\n\n      const encoding = baseDict.getRaw(\"Encoding\");\n      if (encoding instanceof Name) {\n        hash.update(encoding.name);\n      } else if (encoding instanceof Ref) {\n        hash.update(encoding.toString());\n      } else if (encoding instanceof Dict) {\n        for (const entry of encoding.getRawValues()) {\n          if (entry instanceof Name) {\n            hash.update(entry.name);\n          } else if (entry instanceof Ref) {\n            hash.update(entry.toString());\n          } else if (Array.isArray(entry)) {\n            // 'Differences' array (fixes bug1157493.pdf).\n            const diffLength = entry.length,\n              diffBuf = new Array(diffLength);\n\n            for (let j = 0; j < diffLength; j++) {\n              const diffEntry = entry[j];\n              if (diffEntry instanceof Name) {\n                diffBuf[j] = diffEntry.name;\n              } else if (\n                typeof diffEntry === \"number\" ||\n                diffEntry instanceof Ref\n              ) {\n                diffBuf[j] = diffEntry.toString();\n              }\n            }\n            hash.update(diffBuf.join());\n          }\n        }\n      }\n\n      hash.update(`${firstChar}-${lastChar}`); // Fixes issue10665_reduced.pdf\n\n      toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n      if (toUnicode instanceof BaseStream) {\n        const stream = toUnicode.str || toUnicode;\n        const uint8array = stream.buffer\n          ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\n          : new Uint8Array(\n              stream.bytes.buffer,\n              stream.start,\n              stream.end - stream.start\n            );\n        hash.update(uint8array);\n      } else if (toUnicode instanceof Name) {\n        hash.update(toUnicode.name);\n      }\n\n      const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n      if (Array.isArray(widths)) {\n        const widthsBuf = [];\n        for (const entry of widths) {\n          if (typeof entry === \"number\" || entry instanceof Ref) {\n            widthsBuf.push(entry.toString());\n          }\n        }\n        hash.update(widthsBuf.join());\n      }\n\n      if (composite) {\n        hash.update(\"compositeFont\");\n\n        const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n        if (Array.isArray(compositeWidths)) {\n          const widthsBuf = [];\n          for (const entry of compositeWidths) {\n            if (typeof entry === \"number\" || entry instanceof Ref) {\n              widthsBuf.push(entry.toString());\n            } else if (Array.isArray(entry)) {\n              const subWidthsBuf = [];\n              for (const element of entry) {\n                if (typeof element === \"number\" || element instanceof Ref) {\n                  subWidthsBuf.push(element.toString());\n                }\n              }\n              widthsBuf.push(`[${subWidthsBuf.join()}]`);\n            }\n          }\n          hash.update(widthsBuf.join());\n        }\n\n        const cidToGidMap =\n          dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n        if (cidToGidMap instanceof Name) {\n          hash.update(cidToGidMap.name);\n        } else if (cidToGidMap instanceof Ref) {\n          hash.update(cidToGidMap.toString());\n        } else if (cidToGidMap instanceof BaseStream) {\n          hash.update(cidToGidMap.peekBytes());\n        }\n      }\n    }\n\n    return {\n      descriptor,\n      dict,\n      baseDict,\n      composite,\n      type: type.name,\n      firstChar,\n      lastChar,\n      toUnicode,\n      hash: hash ? hash.hexdigest() : \"\",\n    };\n  }\n\n  async translateFont({\n    descriptor,\n    dict,\n    baseDict,\n    composite,\n    type,\n    firstChar,\n    lastChar,\n    toUnicode,\n    cssFontInfo,\n  }) {\n    const isType3Font = type === \"Type3\";\n    let properties;\n\n    if (!descriptor) {\n      if (isType3Font) {\n        // FontDescriptor is only required for Type3 fonts when the document\n        // is a tagged pdf. Create a barbebones one to get by.\n        descriptor = new Dict(null);\n        descriptor.set(\"FontName\", Name.get(type));\n        descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n      } else {\n        // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n        // FontDescriptor was not required.\n        // This case is here for compatibility.\n        let baseFontName = dict.get(\"BaseFont\");\n        if (!(baseFontName instanceof Name)) {\n          throw new FormatError(\"Base font is not specified\");\n        }\n\n        // Using base font name as a font name.\n        baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n        const metrics = this.getBaseFontMetrics(baseFontName);\n\n        // Simulating descriptor flags attribute\n        const fontNameWoStyle = baseFontName.split(\"-\")[0];\n        const flags =\n          (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n          (metrics.monospace ? FontFlags.FixedPitch : 0) |\n          (getSymbolsFonts()[fontNameWoStyle]\n            ? FontFlags.Symbolic\n            : FontFlags.Nonsymbolic);\n\n        properties = {\n          type,\n          name: baseFontName,\n          loadedName: baseDict.loadedName,\n          widths: metrics.widths,\n          defaultWidth: metrics.defaultWidth,\n          isSimulatedFlags: true,\n          flags,\n          firstChar,\n          lastChar,\n          toUnicode,\n          xHeight: 0,\n          capHeight: 0,\n          italicAngle: 0,\n          isType3Font,\n        };\n        const widths = dict.get(\"Widths\");\n\n        const standardFontName = getStandardFontName(baseFontName);\n        let file = null;\n        if (standardFontName) {\n          properties.isStandardFont = true;\n          file = await this.fetchStandardFontData(standardFontName);\n          properties.isInternalFont = !!file;\n        }\n        return this.extractDataStructures(dict, dict, properties).then(\n          newProperties => {\n            if (widths) {\n              const glyphWidths = [];\n              let j = firstChar;\n              for (let i = 0, ii = widths.length; i < ii; i++) {\n                glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n              }\n              newProperties.widths = glyphWidths;\n            } else {\n              newProperties.widths = this.buildCharCodeToWidth(\n                metrics.widths,\n                newProperties\n              );\n            }\n            return new Font(baseFontName, file, newProperties);\n          }\n        );\n      }\n    }\n\n    // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n    // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n    // to ignore this rule when a variant of a standard font is used.\n    // TODO Fill the width array depending on which of the base font this is\n    // a variant.\n\n    let fontName = descriptor.get(\"FontName\");\n    let baseFont = dict.get(\"BaseFont\");\n    // Some bad PDFs have a string as the font name.\n    if (typeof fontName === \"string\") {\n      fontName = Name.get(fontName);\n    }\n    if (typeof baseFont === \"string\") {\n      baseFont = Name.get(baseFont);\n    }\n\n    if (!isType3Font) {\n      const fontNameStr = fontName && fontName.name;\n      const baseFontStr = baseFont && baseFont.name;\n      if (fontNameStr !== baseFontStr) {\n        info(\n          `The FontDescriptor's FontName is \"${fontNameStr}\" but ` +\n            `should be the same as the Font's BaseFont \"${baseFontStr}\".`\n        );\n        // Workaround for cases where e.g. fontNameStr = 'Arial' and\n        // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n        if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n          fontName = baseFont;\n        }\n      }\n    }\n    fontName = fontName || baseFont;\n\n    if (!(fontName instanceof Name)) {\n      throw new FormatError(\"invalid font name\");\n    }\n\n    let fontFile, subtype, length1, length2, length3;\n    try {\n      fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n    } catch (ex) {\n      if (!this.options.ignoreErrors) {\n        throw ex;\n      }\n      warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n      fontFile = new NullStream();\n    }\n    let isStandardFont = false;\n    let isInternalFont = false;\n    let glyphScaleFactors = null;\n    if (fontFile) {\n      if (fontFile.dict) {\n        const subtypeEntry = fontFile.dict.get(\"Subtype\");\n        if (subtypeEntry instanceof Name) {\n          subtype = subtypeEntry.name;\n        }\n        length1 = fontFile.dict.get(\"Length1\");\n        length2 = fontFile.dict.get(\"Length2\");\n        length3 = fontFile.dict.get(\"Length3\");\n      }\n    } else if (cssFontInfo) {\n      // We've a missing XFA font.\n      const standardFontName = getXfaFontName(fontName.name);\n      if (standardFontName) {\n        cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n        cssFontInfo.metrics = standardFontName.metrics || null;\n        glyphScaleFactors = standardFontName.factors || null;\n        fontFile = await this.fetchStandardFontData(standardFontName.name);\n        isInternalFont = !!fontFile;\n\n        // We're using a substitution font but for example widths (if any)\n        // are related to the glyph positions in the font.\n        // So we overwrite everything here to be sure that widths are\n        // correct.\n        baseDict = dict = getXfaFontDict(fontName.name);\n        composite = true;\n      }\n    } else if (!isType3Font) {\n      const standardFontName = getStandardFontName(fontName.name);\n      if (standardFontName) {\n        isStandardFont = true;\n        fontFile = await this.fetchStandardFontData(standardFontName);\n        isInternalFont = !!fontFile;\n      }\n    }\n\n    properties = {\n      type,\n      name: fontName.name,\n      subtype,\n      file: fontFile,\n      length1,\n      length2,\n      length3,\n      isStandardFont,\n      isInternalFont,\n      loadedName: baseDict.loadedName,\n      composite,\n      fixedPitch: false,\n      fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n      firstChar,\n      lastChar,\n      toUnicode,\n      bbox: descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"),\n      ascent: descriptor.get(\"Ascent\"),\n      descent: descriptor.get(\"Descent\"),\n      xHeight: descriptor.get(\"XHeight\") || 0,\n      capHeight: descriptor.get(\"CapHeight\") || 0,\n      flags: descriptor.get(\"Flags\"),\n      italicAngle: descriptor.get(\"ItalicAngle\") || 0,\n      isType3Font,\n      cssFontInfo,\n      scaleFactors: glyphScaleFactors,\n    };\n\n    if (composite) {\n      const cidEncoding = baseDict.get(\"Encoding\");\n      if (cidEncoding instanceof Name) {\n        properties.cidEncoding = cidEncoding.name;\n      }\n      const cMap = await CMapFactory.create({\n        encoding: cidEncoding,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      });\n      properties.cMap = cMap;\n      properties.vertical = properties.cMap.vertical;\n    }\n\n    return this.extractDataStructures(dict, baseDict, properties).then(\n      newProperties => {\n        this.extractWidths(dict, descriptor, newProperties);\n\n        return new Font(fontName.name, fontFile, newProperties);\n      }\n    );\n  }\n\n  static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n    function buildPath(fontChar) {\n      const glyphName = `${font.loadedName}_path_${fontChar}`;\n      try {\n        if (font.renderer.hasBuiltPath(fontChar)) {\n          return;\n        }\n        handler.send(\"commonobj\", [\n          glyphName,\n          \"FontPath\",\n          font.renderer.getPathJs(fontChar),\n        ]);\n      } catch (reason) {\n        if (evaluatorOptions.ignoreErrors) {\n          // Error in the font data -- sending unsupported feature notification\n          // and allow glyph path building to continue.\n          handler.send(\"UnsupportedFeature\", {\n            featureId: UNSUPPORTED_FEATURES.errorFontBuildPath,\n          });\n          warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n          return;\n        }\n        throw reason;\n      }\n    }\n\n    for (const glyph of glyphs) {\n      buildPath(glyph.fontChar);\n\n      // If the glyph has an accent we need to build a path for its\n      // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n      const accent = glyph.accent;\n      if (accent && accent.fontChar) {\n        buildPath(accent.fontChar);\n      }\n    }\n  }\n\n  static get fallbackFontDict() {\n    const dict = new Dict();\n    dict.set(\"BaseFont\", Name.get(\"PDFJS-FallbackFont\"));\n    dict.set(\"Type\", Name.get(\"FallbackType\"));\n    dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n    dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n\n    return shadow(this, \"fallbackFontDict\", dict);\n  }\n}\n\nclass TranslatedFont {\n  constructor({ loadedName, font, dict, evaluatorOptions }) {\n    this.loadedName = loadedName;\n    this.font = font;\n    this.dict = dict;\n    this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\n    this.type3Loaded = null;\n    this.type3Dependencies = font.isType3Font ? new Set() : null;\n    this.sent = false;\n  }\n\n  send(handler) {\n    if (this.sent) {\n      return;\n    }\n    this.sent = true;\n\n    handler.send(\"commonobj\", [\n      this.loadedName,\n      \"Font\",\n      this.font.exportData(this._evaluatorOptions.fontExtraProperties),\n    ]);\n  }\n\n  fallback(handler) {\n    if (!this.font.data) {\n      return;\n    }\n    // When font loading failed, fall back to the built-in font renderer.\n    this.font.disableFontFace = true;\n    // An arbitrary number of text rendering operators could have been\n    // encountered between the point in time when the 'Font' message was sent\n    // to the main-thread, and the point in time when the 'FontFallback'\n    // message was received on the worker-thread.\n    // To ensure that all 'FontPath's are available on the main-thread, when\n    // font loading failed, attempt to resend *all* previously parsed glyphs.\n    PartialEvaluator.buildFontPaths(\n      this.font,\n      /* glyphs = */ this.font.glyphCacheValues,\n      handler,\n      this._evaluatorOptions\n    );\n  }\n\n  loadType3Data(evaluator, resources, task) {\n    if (this.type3Loaded) {\n      return this.type3Loaded;\n    }\n    if (!this.font.isType3Font) {\n      throw new Error(\"Must be a Type3 font.\");\n    }\n    // When parsing Type3 glyphs, always ignore them if there are errors.\n    // Compared to the parsing of e.g. an entire page, it doesn't really\n    // make sense to only be able to render a Type3 glyph partially.\n    const type3Evaluator = evaluator.clone({ ignoreErrors: false });\n    type3Evaluator.parsingType3Font = true;\n    // Prevent circular references in Type3 fonts.\n    const type3FontRefs = new RefSet(evaluator.type3FontRefs);\n    if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) {\n      type3FontRefs.put(this.dict.objId);\n    }\n    type3Evaluator.type3FontRefs = type3FontRefs;\n\n    const translatedFont = this.font,\n      type3Dependencies = this.type3Dependencies;\n    let loadCharProcsPromise = Promise.resolve();\n    const charProcs = this.dict.get(\"CharProcs\");\n    const fontResources = this.dict.get(\"Resources\") || resources;\n    const charProcOperatorList = Object.create(null);\n\n    const isEmptyBBox =\n      !translatedFont.bbox || isArrayEqual(translatedFont.bbox, [0, 0, 0, 0]);\n\n    for (const key of charProcs.getKeys()) {\n      loadCharProcsPromise = loadCharProcsPromise.then(() => {\n        const glyphStream = charProcs.get(key);\n        const operatorList = new OperatorList();\n        return type3Evaluator\n          .getOperatorList({\n            stream: glyphStream,\n            task,\n            resources: fontResources,\n            operatorList,\n          })\n          .then(() => {\n            // According to the PDF specification, section \"9.6.5 Type 3 Fonts\"\n            // and \"Table 113\":\n            //  \"A glyph description that begins with the d1 operator should\n            //   not execute any operators that set the colour (or other\n            //   colour-related parameters) in the graphics state;\n            //   any use of such operators shall be ignored.\"\n            if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\n              this._removeType3ColorOperators(operatorList, isEmptyBBox);\n            }\n            charProcOperatorList[key] = operatorList.getIR();\n\n            for (const dependency of operatorList.dependencies) {\n              type3Dependencies.add(dependency);\n            }\n          })\n          .catch(function (reason) {\n            warn(`Type3 font resource \"${key}\" is not available.`);\n            const dummyOperatorList = new OperatorList();\n            charProcOperatorList[key] = dummyOperatorList.getIR();\n          });\n      });\n    }\n    this.type3Loaded = loadCharProcsPromise.then(() => {\n      translatedFont.charProcOperatorList = charProcOperatorList;\n      if (this._bbox) {\n        translatedFont.isCharBBox = true;\n        translatedFont.bbox = this._bbox;\n      }\n    });\n    return this.type3Loaded;\n  }\n\n  /**\n   * @private\n   */\n  _removeType3ColorOperators(operatorList, isEmptyBBox = false) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        operatorList.fnArray[0] === OPS.setCharWidthAndBounds,\n        \"Type3 glyph shall start with the d1 operator.\"\n      );\n    }\n    if (isEmptyBBox) {\n      if (!this._bbox) {\n        this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\n      }\n      const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2));\n\n      this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\n      this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\n      this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\n      this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\n    }\n    let i = 1,\n      ii = operatorList.length;\n    while (i < ii) {\n      switch (operatorList.fnArray[i]) {\n        case OPS.setStrokeColorSpace:\n        case OPS.setFillColorSpace:\n        case OPS.setStrokeColor:\n        case OPS.setStrokeColorN:\n        case OPS.setFillColor:\n        case OPS.setFillColorN:\n        case OPS.setStrokeGray:\n        case OPS.setFillGray:\n        case OPS.setStrokeRGBColor:\n        case OPS.setFillRGBColor:\n        case OPS.setStrokeCMYKColor:\n        case OPS.setFillCMYKColor:\n        case OPS.shadingFill:\n        case OPS.setRenderingIntent:\n          operatorList.fnArray.splice(i, 1);\n          operatorList.argsArray.splice(i, 1);\n          ii--;\n          continue;\n\n        case OPS.setGState:\n          const [gStateObj] = operatorList.argsArray[i];\n          let j = 0,\n            jj = gStateObj.length;\n          while (j < jj) {\n            const [gStateKey] = gStateObj[j];\n            switch (gStateKey) {\n              case \"TR\":\n              case \"TR2\":\n              case \"HT\":\n              case \"BG\":\n              case \"BG2\":\n              case \"UCR\":\n              case \"UCR2\":\n                gStateObj.splice(j, 1);\n                jj--;\n                continue;\n            }\n            j++;\n          }\n          break;\n      }\n      i++;\n    }\n  }\n}\n\nclass StateManager {\n  constructor(initialState = new EvalState()) {\n    this.state = initialState;\n    this.stateStack = [];\n  }\n\n  save() {\n    const old = this.state;\n    this.stateStack.push(this.state);\n    this.state = old.clone();\n  }\n\n  restore() {\n    const prev = this.stateStack.pop();\n    if (prev) {\n      this.state = prev;\n    }\n  }\n\n  transform(args) {\n    this.state.ctm = Util.transform(this.state.ctm, args);\n  }\n}\n\nclass TextState {\n  constructor() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.fontName = null;\n    this.fontSize = 0;\n    this.font = null;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.textMatrix = IDENTITY_MATRIX.slice();\n    this.textLineMatrix = IDENTITY_MATRIX.slice();\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.leading = 0;\n    this.textHScale = 1;\n    this.textRise = 0;\n  }\n\n  setTextMatrix(a, b, c, d, e, f) {\n    const m = this.textMatrix;\n    m[0] = a;\n    m[1] = b;\n    m[2] = c;\n    m[3] = d;\n    m[4] = e;\n    m[5] = f;\n  }\n\n  setTextLineMatrix(a, b, c, d, e, f) {\n    const m = this.textLineMatrix;\n    m[0] = a;\n    m[1] = b;\n    m[2] = c;\n    m[3] = d;\n    m[4] = e;\n    m[5] = f;\n  }\n\n  translateTextMatrix(x, y) {\n    const m = this.textMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n  }\n\n  translateTextLineMatrix(x, y) {\n    const m = this.textLineMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n  }\n\n  carriageReturn() {\n    this.translateTextLineMatrix(0, -this.leading);\n    this.textMatrix = this.textLineMatrix.slice();\n  }\n\n  clone() {\n    const clone = Object.create(this);\n    clone.textMatrix = this.textMatrix.slice();\n    clone.textLineMatrix = this.textLineMatrix.slice();\n    clone.fontMatrix = this.fontMatrix.slice();\n    return clone;\n  }\n}\n\nclass EvalState {\n  constructor() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.font = null;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.fillColorSpace = ColorSpace.singletons.gray;\n    this.strokeColorSpace = ColorSpace.singletons.gray;\n  }\n\n  clone() {\n    return Object.create(this);\n  }\n}\n\nclass EvaluatorPreprocessor {\n  static get opMap() {\n    // Specifies properties for each command\n    //\n    // If variableArgs === true: [0, `numArgs`] expected\n    // If variableArgs === false: exactly `numArgs` expected\n    const getOPMap = getLookupTableFactory(function (t) {\n      // Graphic state\n      t.w = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };\n      t.J = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };\n      t.j = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };\n      t.M = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };\n      t.d = { id: OPS.setDash, numArgs: 2, variableArgs: false };\n      t.ri = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };\n      t.i = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };\n      t.gs = { id: OPS.setGState, numArgs: 1, variableArgs: false };\n      t.q = { id: OPS.save, numArgs: 0, variableArgs: false };\n      t.Q = { id: OPS.restore, numArgs: 0, variableArgs: false };\n      t.cm = { id: OPS.transform, numArgs: 6, variableArgs: false };\n\n      // Path\n      t.m = { id: OPS.moveTo, numArgs: 2, variableArgs: false };\n      t.l = { id: OPS.lineTo, numArgs: 2, variableArgs: false };\n      t.c = { id: OPS.curveTo, numArgs: 6, variableArgs: false };\n      t.v = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };\n      t.y = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };\n      t.h = { id: OPS.closePath, numArgs: 0, variableArgs: false };\n      t.re = { id: OPS.rectangle, numArgs: 4, variableArgs: false };\n      t.S = { id: OPS.stroke, numArgs: 0, variableArgs: false };\n      t.s = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };\n      t.f = { id: OPS.fill, numArgs: 0, variableArgs: false };\n      t.F = { id: OPS.fill, numArgs: 0, variableArgs: false };\n      t[\"f*\"] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };\n      t.B = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };\n      t[\"B*\"] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };\n      t.b = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };\n      t[\"b*\"] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };\n      t.n = { id: OPS.endPath, numArgs: 0, variableArgs: false };\n\n      // Clipping\n      t.W = { id: OPS.clip, numArgs: 0, variableArgs: false };\n      t[\"W*\"] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };\n\n      // Text\n      t.BT = { id: OPS.beginText, numArgs: 0, variableArgs: false };\n      t.ET = { id: OPS.endText, numArgs: 0, variableArgs: false };\n      t.Tc = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };\n      t.Tw = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };\n      t.Tz = { id: OPS.setHScale, numArgs: 1, variableArgs: false };\n      t.TL = { id: OPS.setLeading, numArgs: 1, variableArgs: false };\n      t.Tf = { id: OPS.setFont, numArgs: 2, variableArgs: false };\n      t.Tr = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };\n      t.Ts = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };\n      t.Td = { id: OPS.moveText, numArgs: 2, variableArgs: false };\n      t.TD = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };\n      t.Tm = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };\n      t[\"T*\"] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };\n      t.Tj = { id: OPS.showText, numArgs: 1, variableArgs: false };\n      t.TJ = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };\n      t[\"'\"] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };\n      t['\"'] = {\n        id: OPS.nextLineSetSpacingShowText,\n        numArgs: 3,\n        variableArgs: false,\n      };\n\n      // Type3 fonts\n      t.d0 = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };\n      t.d1 = {\n        id: OPS.setCharWidthAndBounds,\n        numArgs: 6,\n        variableArgs: false,\n      };\n\n      // Color\n      t.CS = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };\n      t.cs = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };\n      t.SC = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };\n      t.SCN = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };\n      t.sc = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };\n      t.scn = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };\n      t.G = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };\n      t.g = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };\n      t.RG = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };\n      t.rg = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };\n      t.K = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };\n      t.k = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };\n\n      // Shading\n      t.sh = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };\n\n      // Images\n      t.BI = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };\n      t.ID = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };\n      t.EI = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };\n\n      // XObjects\n      t.Do = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };\n      t.MP = { id: OPS.markPoint, numArgs: 1, variableArgs: false };\n      t.DP = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };\n      t.BMC = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };\n      t.BDC = {\n        id: OPS.beginMarkedContentProps,\n        numArgs: 2,\n        variableArgs: false,\n      };\n      t.EMC = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };\n\n      // Compatibility\n      t.BX = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };\n      t.EX = { id: OPS.endCompat, numArgs: 0, variableArgs: false };\n\n      // (reserved partial commands for the lexer)\n      t.BM = null;\n      t.BD = null;\n      t.true = null;\n      t.fa = null;\n      t.fal = null;\n      t.fals = null;\n      t.false = null;\n      t.nu = null;\n      t.nul = null;\n      t.null = null;\n    });\n\n    return shadow(this, \"opMap\", getOPMap());\n  }\n\n  static get MAX_INVALID_PATH_OPS() {\n    return shadow(this, \"MAX_INVALID_PATH_OPS\", 10);\n  }\n\n  constructor(stream, xref, stateManager = new StateManager()) {\n    // TODO(mduan): pass array of knownCommands rather than this.opMap\n    // dictionary\n    this.parser = new Parser({\n      lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n      xref,\n    });\n    this.stateManager = stateManager;\n    this.nonProcessedArgs = [];\n    this._numInvalidPathOPS = 0;\n  }\n\n  get savedStatesDepth() {\n    return this.stateManager.stateStack.length;\n  }\n\n  // |operation| is an object with two fields:\n  //\n  // - |fn| is an out param.\n  //\n  // - |args| is an inout param. On entry, it should have one of two values.\n  //\n  //   - An empty array. This indicates that the caller is providing the\n  //     array in which the args will be stored in. The caller should use\n  //     this value if it can reuse a single array for each call to read().\n  //\n  //   - |null|. This indicates that the caller needs this function to create\n  //     the array in which any args are stored in. If there are zero args,\n  //     this function will leave |operation.args| as |null| (thus avoiding\n  //     allocations that would occur if we used an empty array to represent\n  //     zero arguments). Otherwise, it will replace |null| with a new array\n  //     containing the arguments. The caller should use this value if it\n  //     cannot reuse an array for each call to read().\n  //\n  // These two modes are present because this function is very hot and so\n  // avoiding allocations where possible is worthwhile.\n  //\n  read(operation) {\n    let args = operation.args;\n    while (true) {\n      const obj = this.parser.getObj();\n      if (obj instanceof Cmd) {\n        const cmd = obj.cmd;\n        // Check that the command is valid\n        const opSpec = EvaluatorPreprocessor.opMap[cmd];\n        if (!opSpec) {\n          warn(`Unknown command \"${cmd}\".`);\n          continue;\n        }\n\n        const fn = opSpec.id;\n        const numArgs = opSpec.numArgs;\n        let argsLength = args !== null ? args.length : 0;\n\n        if (!opSpec.variableArgs) {\n          // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n          if (argsLength !== numArgs) {\n            const nonProcessedArgs = this.nonProcessedArgs;\n            while (argsLength > numArgs) {\n              nonProcessedArgs.push(args.shift());\n              argsLength--;\n            }\n            while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n              if (args === null) {\n                args = [];\n              }\n              args.unshift(nonProcessedArgs.pop());\n              argsLength++;\n            }\n          }\n\n          if (argsLength < numArgs) {\n            const partialMsg =\n              `command ${cmd}: expected ${numArgs} args, ` +\n              `but received ${argsLength} args.`;\n\n            // Incomplete path operators, in particular, can result in fairly\n            // chaotic rendering artifacts. Hence the following heuristics is\n            // used to error, rather than just warn, once a number of invalid\n            // path operators have been encountered (fixes bug1443140.pdf).\n            if (\n              fn >= OPS.moveTo &&\n              fn <= OPS.endPath && // Path operator\n              ++this._numInvalidPathOPS >\n                EvaluatorPreprocessor.MAX_INVALID_PATH_OPS\n            ) {\n              throw new FormatError(`Invalid ${partialMsg}`);\n            }\n            // If we receive too few arguments, it's not possible to execute\n            // the command, hence we skip the command.\n            warn(`Skipping ${partialMsg}`);\n            if (args !== null) {\n              args.length = 0;\n            }\n            continue;\n          }\n        } else if (argsLength > numArgs) {\n          info(\n            `Command ${cmd}: expected [0, ${numArgs}] args, ` +\n              `but received ${argsLength} args.`\n          );\n        }\n\n        // TODO figure out how to type-check vararg functions\n        this.preprocessCommand(fn, args);\n\n        operation.fn = fn;\n        operation.args = args;\n        return true;\n      }\n      if (obj === EOF) {\n        return false; // no more commands\n      }\n      // argument\n      if (obj !== null) {\n        if (args === null) {\n          args = [];\n        }\n        args.push(obj);\n        if (args.length > 33) {\n          throw new FormatError(\"Too many arguments\");\n        }\n      }\n    }\n  }\n\n  preprocessCommand(fn, args) {\n    switch (fn | 0) {\n      case OPS.save:\n        this.stateManager.save();\n        break;\n      case OPS.restore:\n        this.stateManager.restore();\n        break;\n      case OPS.transform:\n        this.stateManager.transform(args);\n        break;\n    }\n  }\n}\n\nexport { EvaluatorPreprocessor, PartialEvaluator };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  CMapCompressionType,\n  FormatError,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { Cmd, EOF, isCmd, Name } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nconst BUILT_IN_CMAPS = [\n  // << Start unicode maps.\n  \"Adobe-GB1-UCS2\",\n  \"Adobe-CNS1-UCS2\",\n  \"Adobe-Japan1-UCS2\",\n  \"Adobe-Korea1-UCS2\",\n  // >> End unicode maps.\n  \"78-EUC-H\",\n  \"78-EUC-V\",\n  \"78-H\",\n  \"78-RKSJ-H\",\n  \"78-RKSJ-V\",\n  \"78-V\",\n  \"78ms-RKSJ-H\",\n  \"78ms-RKSJ-V\",\n  \"83pv-RKSJ-H\",\n  \"90ms-RKSJ-H\",\n  \"90ms-RKSJ-V\",\n  \"90msp-RKSJ-H\",\n  \"90msp-RKSJ-V\",\n  \"90pv-RKSJ-H\",\n  \"90pv-RKSJ-V\",\n  \"Add-H\",\n  \"Add-RKSJ-H\",\n  \"Add-RKSJ-V\",\n  \"Add-V\",\n  \"Adobe-CNS1-0\",\n  \"Adobe-CNS1-1\",\n  \"Adobe-CNS1-2\",\n  \"Adobe-CNS1-3\",\n  \"Adobe-CNS1-4\",\n  \"Adobe-CNS1-5\",\n  \"Adobe-CNS1-6\",\n  \"Adobe-GB1-0\",\n  \"Adobe-GB1-1\",\n  \"Adobe-GB1-2\",\n  \"Adobe-GB1-3\",\n  \"Adobe-GB1-4\",\n  \"Adobe-GB1-5\",\n  \"Adobe-Japan1-0\",\n  \"Adobe-Japan1-1\",\n  \"Adobe-Japan1-2\",\n  \"Adobe-Japan1-3\",\n  \"Adobe-Japan1-4\",\n  \"Adobe-Japan1-5\",\n  \"Adobe-Japan1-6\",\n  \"Adobe-Korea1-0\",\n  \"Adobe-Korea1-1\",\n  \"Adobe-Korea1-2\",\n  \"B5-H\",\n  \"B5-V\",\n  \"B5pc-H\",\n  \"B5pc-V\",\n  \"CNS-EUC-H\",\n  \"CNS-EUC-V\",\n  \"CNS1-H\",\n  \"CNS1-V\",\n  \"CNS2-H\",\n  \"CNS2-V\",\n  \"ETHK-B5-H\",\n  \"ETHK-B5-V\",\n  \"ETen-B5-H\",\n  \"ETen-B5-V\",\n  \"ETenms-B5-H\",\n  \"ETenms-B5-V\",\n  \"EUC-H\",\n  \"EUC-V\",\n  \"Ext-H\",\n  \"Ext-RKSJ-H\",\n  \"Ext-RKSJ-V\",\n  \"Ext-V\",\n  \"GB-EUC-H\",\n  \"GB-EUC-V\",\n  \"GB-H\",\n  \"GB-V\",\n  \"GBK-EUC-H\",\n  \"GBK-EUC-V\",\n  \"GBK2K-H\",\n  \"GBK2K-V\",\n  \"GBKp-EUC-H\",\n  \"GBKp-EUC-V\",\n  \"GBT-EUC-H\",\n  \"GBT-EUC-V\",\n  \"GBT-H\",\n  \"GBT-V\",\n  \"GBTpc-EUC-H\",\n  \"GBTpc-EUC-V\",\n  \"GBpc-EUC-H\",\n  \"GBpc-EUC-V\",\n  \"H\",\n  \"HKdla-B5-H\",\n  \"HKdla-B5-V\",\n  \"HKdlb-B5-H\",\n  \"HKdlb-B5-V\",\n  \"HKgccs-B5-H\",\n  \"HKgccs-B5-V\",\n  \"HKm314-B5-H\",\n  \"HKm314-B5-V\",\n  \"HKm471-B5-H\",\n  \"HKm471-B5-V\",\n  \"HKscs-B5-H\",\n  \"HKscs-B5-V\",\n  \"Hankaku\",\n  \"Hiragana\",\n  \"KSC-EUC-H\",\n  \"KSC-EUC-V\",\n  \"KSC-H\",\n  \"KSC-Johab-H\",\n  \"KSC-Johab-V\",\n  \"KSC-V\",\n  \"KSCms-UHC-H\",\n  \"KSCms-UHC-HW-H\",\n  \"KSCms-UHC-HW-V\",\n  \"KSCms-UHC-V\",\n  \"KSCpc-EUC-H\",\n  \"KSCpc-EUC-V\",\n  \"Katakana\",\n  \"NWP-H\",\n  \"NWP-V\",\n  \"RKSJ-H\",\n  \"RKSJ-V\",\n  \"Roman\",\n  \"UniCNS-UCS2-H\",\n  \"UniCNS-UCS2-V\",\n  \"UniCNS-UTF16-H\",\n  \"UniCNS-UTF16-V\",\n  \"UniCNS-UTF32-H\",\n  \"UniCNS-UTF32-V\",\n  \"UniCNS-UTF8-H\",\n  \"UniCNS-UTF8-V\",\n  \"UniGB-UCS2-H\",\n  \"UniGB-UCS2-V\",\n  \"UniGB-UTF16-H\",\n  \"UniGB-UTF16-V\",\n  \"UniGB-UTF32-H\",\n  \"UniGB-UTF32-V\",\n  \"UniGB-UTF8-H\",\n  \"UniGB-UTF8-V\",\n  \"UniJIS-UCS2-H\",\n  \"UniJIS-UCS2-HW-H\",\n  \"UniJIS-UCS2-HW-V\",\n  \"UniJIS-UCS2-V\",\n  \"UniJIS-UTF16-H\",\n  \"UniJIS-UTF16-V\",\n  \"UniJIS-UTF32-H\",\n  \"UniJIS-UTF32-V\",\n  \"UniJIS-UTF8-H\",\n  \"UniJIS-UTF8-V\",\n  \"UniJIS2004-UTF16-H\",\n  \"UniJIS2004-UTF16-V\",\n  \"UniJIS2004-UTF32-H\",\n  \"UniJIS2004-UTF32-V\",\n  \"UniJIS2004-UTF8-H\",\n  \"UniJIS2004-UTF8-V\",\n  \"UniJISPro-UCS2-HW-V\",\n  \"UniJISPro-UCS2-V\",\n  \"UniJISPro-UTF8-V\",\n  \"UniJISX0213-UTF32-H\",\n  \"UniJISX0213-UTF32-V\",\n  \"UniJISX02132004-UTF32-H\",\n  \"UniJISX02132004-UTF32-V\",\n  \"UniKS-UCS2-H\",\n  \"UniKS-UCS2-V\",\n  \"UniKS-UTF16-H\",\n  \"UniKS-UTF16-V\",\n  \"UniKS-UTF32-H\",\n  \"UniKS-UTF32-V\",\n  \"UniKS-UTF8-H\",\n  \"UniKS-UTF8-V\",\n  \"V\",\n  \"WP-Symbol\",\n];\n\n// Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\n// large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\nconst MAX_MAP_RANGE = 2 ** 24 - 1; // = 0xFFFFFF\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n  constructor(builtInCMap = false) {\n    // Codespace ranges are stored as follows:\n    // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n    // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n    this.codespaceRanges = [[], [], [], []];\n    this.numCodespaceRanges = 0;\n    // Map entries have one of two forms.\n    // - cid chars are 16-bit unsigned integers, stored as integers.\n    // - bf chars are variable-length byte sequences, stored as strings, with\n    //   one byte per character.\n    this._map = [];\n    this.name = \"\";\n    this.vertical = false;\n    this.useCMap = null;\n    this.builtInCMap = builtInCMap;\n  }\n\n  addCodespaceRange(n, low, high) {\n    this.codespaceRanges[n - 1].push(low, high);\n    this.numCodespaceRanges++;\n  }\n\n  mapCidRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n    while (low <= high) {\n      this._map[low++] = dstLow++;\n    }\n  }\n\n  mapBfRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n    const lastByte = dstLow.length - 1;\n    while (low <= high) {\n      this._map[low++] = dstLow;\n      // Only the last byte has to be incremented (in the normal case).\n      const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n      if (nextCharCode > 0xff) {\n        dstLow =\n          dstLow.substring(0, lastByte - 1) +\n          String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) +\n          \"\\x00\";\n        continue;\n      }\n      dstLow =\n        dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\n    }\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n    }\n    const ii = array.length;\n    let i = 0;\n    while (low <= high && i < ii) {\n      this._map[low] = array[i++];\n      ++low;\n    }\n  }\n\n  // This is used for both bf and cid chars.\n  mapOne(src, dst) {\n    this._map[src] = dst;\n  }\n\n  lookup(code) {\n    return this._map[code];\n  }\n\n  contains(code) {\n    return this._map[code] !== undefined;\n  }\n\n  forEach(callback) {\n    // Most maps have fewer than 65536 entries, and for those we use normal\n    // array iteration. But really sparse tables are possible -- e.g. with\n    // indices in the *billions*. For such tables we use for..in, which isn't\n    // ideal because it stringifies the indices for all present elements, but\n    // it does avoid iterating over every undefined entry.\n    const map = this._map;\n    const length = map.length;\n    if (length <= 0x10000) {\n      for (let i = 0; i < length; i++) {\n        if (map[i] !== undefined) {\n          callback(i, map[i]);\n        }\n      }\n    } else {\n      for (const i in map) {\n        callback(i, map[i]);\n      }\n    }\n  }\n\n  charCodeOf(value) {\n    // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n    // are both very sparse and very large (see issue8372.pdf).\n    const map = this._map;\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n    for (const charCode in map) {\n      if (map[charCode] === value) {\n        return charCode | 0;\n      }\n    }\n    return -1;\n  }\n\n  getMap() {\n    return this._map;\n  }\n\n  readCharCode(str, offset, out) {\n    let c = 0;\n    const codespaceRanges = this.codespaceRanges;\n    // 9.7.6.2 CMap Mapping\n    // The code length is at most 4.\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n      // Check each codespace range to see if it falls within.\n      const codespaceRange = codespaceRanges[n];\n      for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n        if (c >= low && c <= high) {\n          out.charcode = c;\n          out.length = n + 1;\n          return;\n        }\n      }\n    }\n    out.charcode = 0;\n    out.length = 1;\n  }\n\n  getCharCodeLength(charCode) {\n    const codespaceRanges = this.codespaceRanges;\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      // Check each codespace range to see if it falls within.\n      const codespaceRange = codespaceRanges[n];\n      for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n        if (charCode >= low && charCode <= high) {\n          return n + 1;\n        }\n      }\n    }\n    return 1;\n  }\n\n  get length() {\n    return this._map.length;\n  }\n\n  get isIdentityCMap() {\n    if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n      return false;\n    }\n    if (this._map.length !== 0x10000) {\n      return false;\n    }\n    for (let i = 0; i < 0x10000; i++) {\n      if (this._map[i] !== i) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n  constructor(vertical, n) {\n    super();\n\n    this.vertical = vertical;\n    this.addCodespaceRange(n, 0, 0xffff);\n  }\n\n  mapCidRange(low, high, dstLow) {\n    unreachable(\"should not call mapCidRange\");\n  }\n\n  mapBfRange(low, high, dstLow) {\n    unreachable(\"should not call mapBfRange\");\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    unreachable(\"should not call mapBfRangeToArray\");\n  }\n\n  mapOne(src, dst) {\n    unreachable(\"should not call mapCidOne\");\n  }\n\n  lookup(code) {\n    return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n  }\n\n  contains(code) {\n    return Number.isInteger(code) && code <= 0xffff;\n  }\n\n  forEach(callback) {\n    for (let i = 0; i <= 0xffff; i++) {\n      callback(i, i);\n    }\n  }\n\n  charCodeOf(value) {\n    return Number.isInteger(value) && value <= 0xffff ? value : -1;\n  }\n\n  getMap() {\n    // Sometimes identity maps must be instantiated, but it's rare.\n    const map = new Array(0x10000);\n    for (let i = 0; i <= 0xffff; i++) {\n      map[i] = i;\n    }\n    return map;\n  }\n\n  get length() {\n    return 0x10000;\n  }\n\n  // eslint-disable-next-line getter-return\n  get isIdentityCMap() {\n    unreachable(\"should not access .isIdentityCMap\");\n  }\n}\n\nconst BinaryCMapReader = (function BinaryCMapReaderClosure() {\n  function hexToInt(a, size) {\n    let n = 0;\n    for (let i = 0; i <= size; i++) {\n      n = (n << 8) | a[i];\n    }\n    return n >>> 0;\n  }\n\n  function hexToStr(a, size) {\n    // This code is hot. Special-case some common values to avoid creating an\n    // object with subarray().\n    if (size === 1) {\n      return String.fromCharCode(a[0], a[1]);\n    }\n    if (size === 3) {\n      return String.fromCharCode(a[0], a[1], a[2], a[3]);\n    }\n    return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n  }\n\n  function addHex(a, b, size) {\n    let c = 0;\n    for (let i = size; i >= 0; i--) {\n      c += a[i] + b[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  function incHex(a, size) {\n    let c = 1;\n    for (let i = size; i >= 0 && c > 0; i--) {\n      c += a[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  const MAX_NUM_SIZE = 16;\n  const MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n  class BinaryCMapStream {\n    constructor(data) {\n      this.buffer = data;\n      this.pos = 0;\n      this.end = data.length;\n      this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n    }\n\n    readByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.buffer[this.pos++];\n    }\n\n    readNumber() {\n      let n = 0;\n      let last;\n      do {\n        const b = this.readByte();\n        if (b < 0) {\n          throw new FormatError(\"unexpected EOF in bcmap\");\n        }\n        last = !(b & 0x80);\n        n = (n << 7) | (b & 0x7f);\n      } while (!last);\n      return n;\n    }\n\n    readSigned() {\n      const n = this.readNumber();\n      return n & 1 ? ~(n >>> 1) : n >>> 1;\n    }\n\n    readHex(num, size) {\n      num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n      this.pos += size + 1;\n    }\n\n    readHexNumber(num, size) {\n      let last;\n      const stack = this.tmpBuf;\n      let sp = 0;\n      do {\n        const b = this.readByte();\n        if (b < 0) {\n          throw new FormatError(\"unexpected EOF in bcmap\");\n        }\n        last = !(b & 0x80);\n        stack[sp++] = b & 0x7f;\n      } while (!last);\n      let i = size,\n        buffer = 0,\n        bufferSize = 0;\n      while (i >= 0) {\n        while (bufferSize < 8 && stack.length > 0) {\n          buffer |= stack[--sp] << bufferSize;\n          bufferSize += 7;\n        }\n        num[i] = buffer & 255;\n        i--;\n        buffer >>= 8;\n        bufferSize -= 8;\n      }\n    }\n\n    readHexSigned(num, size) {\n      this.readHexNumber(num, size);\n      const sign = num[size] & 1 ? 255 : 0;\n      let c = 0;\n      for (let i = 0; i <= size; i++) {\n        c = ((c & 1) << 8) | num[i];\n        num[i] = (c >> 1) ^ sign;\n      }\n    }\n\n    readString() {\n      const len = this.readNumber();\n      let s = \"\";\n      for (let i = 0; i < len; i++) {\n        s += String.fromCharCode(this.readNumber());\n      }\n      return s;\n    }\n  }\n\n  // eslint-disable-next-line no-shadow\n  class BinaryCMapReader {\n    async process(data, cMap, extend) {\n      const stream = new BinaryCMapStream(data);\n      const header = stream.readByte();\n      cMap.vertical = !!(header & 1);\n\n      let useCMap = null;\n      const start = new Uint8Array(MAX_NUM_SIZE);\n      const end = new Uint8Array(MAX_NUM_SIZE);\n      const char = new Uint8Array(MAX_NUM_SIZE);\n      const charCode = new Uint8Array(MAX_NUM_SIZE);\n      const tmp = new Uint8Array(MAX_NUM_SIZE);\n      let code;\n\n      let b;\n      while ((b = stream.readByte()) >= 0) {\n        const type = b >> 5;\n        if (type === 7) {\n          // metadata, e.g. comment or usecmap\n          switch (b & 0x1f) {\n            case 0:\n              stream.readString(); // skipping comment\n              break;\n            case 1:\n              useCMap = stream.readString();\n              break;\n          }\n          continue;\n        }\n        const sequence = !!(b & 0x10);\n        const dataSize = b & 15;\n\n        if (dataSize + 1 > MAX_NUM_SIZE) {\n          throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n        }\n\n        const ucs2DataSize = 1;\n        const subitemsCount = stream.readNumber();\n        switch (type) {\n          case 0: // codespacerange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            cMap.addCodespaceRange(\n              dataSize + 1,\n              hexToInt(start, dataSize),\n              hexToInt(end, dataSize)\n            );\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              cMap.addCodespaceRange(\n                dataSize + 1,\n                hexToInt(start, dataSize),\n                hexToInt(end, dataSize)\n              );\n            }\n            break;\n          case 1: // notdefrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            stream.readNumber(); // code\n            // undefined range, skipping\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              stream.readNumber(); // code\n              // nop\n            }\n            break;\n          case 2: // cidchar\n            stream.readHex(char, dataSize);\n            code = stream.readNumber();\n            cMap.mapOne(hexToInt(char, dataSize), code);\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(char, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, dataSize);\n                addHex(char, tmp, dataSize);\n              }\n              code = stream.readSigned() + (code + 1);\n              cMap.mapOne(hexToInt(char, dataSize), code);\n            }\n            break;\n          case 3: // cidrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            code = stream.readNumber();\n            cMap.mapCidRange(\n              hexToInt(start, dataSize),\n              hexToInt(end, dataSize),\n              code\n            );\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, dataSize);\n                addHex(start, end, dataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              code = stream.readNumber();\n              cMap.mapCidRange(\n                hexToInt(start, dataSize),\n                hexToInt(end, dataSize),\n                code\n              );\n            }\n            break;\n          case 4: // bfchar\n            stream.readHex(char, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapOne(\n              hexToInt(char, ucs2DataSize),\n              hexToStr(charCode, dataSize)\n            );\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(char, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, ucs2DataSize);\n                addHex(char, tmp, ucs2DataSize);\n              }\n              incHex(charCode, dataSize);\n              stream.readHexSigned(tmp, dataSize);\n              addHex(charCode, tmp, dataSize);\n              cMap.mapOne(\n                hexToInt(char, ucs2DataSize),\n                hexToStr(charCode, dataSize)\n              );\n            }\n            break;\n          case 5: // bfrange\n            stream.readHex(start, ucs2DataSize);\n            stream.readHexNumber(end, ucs2DataSize);\n            addHex(end, start, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapBfRange(\n              hexToInt(start, ucs2DataSize),\n              hexToInt(end, ucs2DataSize),\n              hexToStr(charCode, dataSize)\n            );\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(end, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, ucs2DataSize);\n                addHex(start, end, ucs2DataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, ucs2DataSize);\n              addHex(end, start, ucs2DataSize);\n              stream.readHex(charCode, dataSize);\n              cMap.mapBfRange(\n                hexToInt(start, ucs2DataSize),\n                hexToInt(end, ucs2DataSize),\n                hexToStr(charCode, dataSize)\n              );\n            }\n            break;\n          default:\n            throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n        }\n      }\n\n      if (useCMap) {\n        return extend(useCMap);\n      }\n      return cMap;\n    }\n  }\n\n  return BinaryCMapReader;\n})();\n\nconst CMapFactory = (function CMapFactoryClosure() {\n  function strToInt(str) {\n    let a = 0;\n    for (let i = 0; i < str.length; i++) {\n      a = (a << 8) | str.charCodeAt(i);\n    }\n    return a >>> 0;\n  }\n\n  function expectString(obj) {\n    if (typeof obj !== \"string\") {\n      throw new FormatError(\"Malformed CMap: expected string.\");\n    }\n  }\n\n  function expectInt(obj) {\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\"Malformed CMap: expected int.\");\n    }\n  }\n\n  function parseBfChar(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n      if (obj === EOF) {\n        break;\n      }\n      if (isCmd(obj, \"endbfchar\")) {\n        return;\n      }\n      expectString(obj);\n      const src = strToInt(obj);\n      obj = lexer.getObj();\n      // TODO are /dstName used?\n      expectString(obj);\n      const dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseBfRange(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n      if (obj === EOF) {\n        break;\n      }\n      if (isCmd(obj, \"endbfrange\")) {\n        return;\n      }\n      expectString(obj);\n      const low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      const high = strToInt(obj);\n      obj = lexer.getObj();\n      if (Number.isInteger(obj) || typeof obj === \"string\") {\n        const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n        cMap.mapBfRange(low, high, dstLow);\n      } else if (isCmd(obj, \"[\")) {\n        obj = lexer.getObj();\n        const array = [];\n        while (!isCmd(obj, \"]\") && obj !== EOF) {\n          array.push(obj);\n          obj = lexer.getObj();\n        }\n        cMap.mapBfRangeToArray(low, high, array);\n      } else {\n        break;\n      }\n    }\n    throw new FormatError(\"Invalid bf range.\");\n  }\n\n  function parseCidChar(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n      if (obj === EOF) {\n        break;\n      }\n      if (isCmd(obj, \"endcidchar\")) {\n        return;\n      }\n      expectString(obj);\n      const src = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      const dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseCidRange(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n      if (obj === EOF) {\n        break;\n      }\n      if (isCmd(obj, \"endcidrange\")) {\n        return;\n      }\n      expectString(obj);\n      const low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      const high = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      const dstLow = obj;\n      cMap.mapCidRange(low, high, dstLow);\n    }\n  }\n\n  function parseCodespaceRange(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n      if (obj === EOF) {\n        break;\n      }\n      if (isCmd(obj, \"endcodespacerange\")) {\n        return;\n      }\n      if (typeof obj !== \"string\") {\n        break;\n      }\n      const low = strToInt(obj);\n      obj = lexer.getObj();\n      if (typeof obj !== \"string\") {\n        break;\n      }\n      const high = strToInt(obj);\n      cMap.addCodespaceRange(obj.length, low, high);\n    }\n    throw new FormatError(\"Invalid codespace range.\");\n  }\n\n  function parseWMode(cMap, lexer) {\n    const obj = lexer.getObj();\n    if (Number.isInteger(obj)) {\n      cMap.vertical = !!obj;\n    }\n  }\n\n  function parseCMapName(cMap, lexer) {\n    const obj = lexer.getObj();\n    if (obj instanceof Name) {\n      cMap.name = obj.name;\n    }\n  }\n\n  async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n    let previous, embeddedUseCMap;\n    objLoop: while (true) {\n      try {\n        const obj = lexer.getObj();\n        if (obj === EOF) {\n          break;\n        } else if (obj instanceof Name) {\n          if (obj.name === \"WMode\") {\n            parseWMode(cMap, lexer);\n          } else if (obj.name === \"CMapName\") {\n            parseCMapName(cMap, lexer);\n          }\n          previous = obj;\n        } else if (obj instanceof Cmd) {\n          switch (obj.cmd) {\n            case \"endcmap\":\n              break objLoop;\n            case \"usecmap\":\n              if (previous instanceof Name) {\n                embeddedUseCMap = previous.name;\n              }\n              break;\n            case \"begincodespacerange\":\n              parseCodespaceRange(cMap, lexer);\n              break;\n            case \"beginbfchar\":\n              parseBfChar(cMap, lexer);\n              break;\n            case \"begincidchar\":\n              parseCidChar(cMap, lexer);\n              break;\n            case \"beginbfrange\":\n              parseBfRange(cMap, lexer);\n              break;\n            case \"begincidrange\":\n              parseCidRange(cMap, lexer);\n              break;\n          }\n        }\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(\"Invalid cMap data: \" + ex);\n        continue;\n      }\n    }\n\n    if (!useCMap && embeddedUseCMap) {\n      // Load the useCMap definition from the file only if there wasn't one\n      // specified.\n      useCMap = embeddedUseCMap;\n    }\n    if (useCMap) {\n      return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n    }\n    return cMap;\n  }\n\n  async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n    cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\n    // If there aren't any code space ranges defined clone all the parent ones\n    // into this cMap.\n    if (cMap.numCodespaceRanges === 0) {\n      const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n      for (let i = 0; i < useCodespaceRanges.length; i++) {\n        cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n      }\n      cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n    }\n    // Merge the map into the current one, making sure not to override\n    // any previously defined entries.\n    cMap.useCMap.forEach(function (key, value) {\n      if (!cMap.contains(key)) {\n        cMap.mapOne(key, cMap.useCMap.lookup(key));\n      }\n    });\n\n    return cMap;\n  }\n\n  async function createBuiltInCMap(name, fetchBuiltInCMap) {\n    if (name === \"Identity-H\") {\n      return new IdentityCMap(false, 2);\n    } else if (name === \"Identity-V\") {\n      return new IdentityCMap(true, 2);\n    }\n    if (!BUILT_IN_CMAPS.includes(name)) {\n      throw new Error(\"Unknown CMap name: \" + name);\n    }\n    if (!fetchBuiltInCMap) {\n      throw new Error(\"Built-in CMap parameters are not provided.\");\n    }\n\n    const { cMapData, compressionType } = await fetchBuiltInCMap(name);\n    const cMap = new CMap(true);\n\n    if (compressionType === CMapCompressionType.BINARY) {\n      return new BinaryCMapReader().process(cMapData, cMap, useCMap => {\n        return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n      });\n    }\n    if (compressionType === CMapCompressionType.NONE) {\n      const lexer = new Lexer(new Stream(cMapData));\n      return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n    }\n    throw new Error(\n      \"TODO: Only BINARY/NONE CMap compression is currently supported.\"\n    );\n  }\n\n  return {\n    async create(params) {\n      const encoding = params.encoding;\n      const fetchBuiltInCMap = params.fetchBuiltInCMap;\n      const useCMap = params.useCMap;\n\n      if (encoding instanceof Name) {\n        return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n      } else if (encoding instanceof BaseStream) {\n        const parsedCMap = await parseCMap(\n          /* cMap = */ new CMap(),\n          /* lexer = */ new Lexer(encoding),\n          fetchBuiltInCMap,\n          useCMap\n        );\n\n        if (parsedCMap.isIdentityCMap) {\n          return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n        }\n        return parsedCMap;\n      }\n      throw new Error(\"Encoding required.\");\n    },\n  };\n})();\n\nexport { CMap, CMapFactory, IdentityCMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  FormatError,\n  info,\n  StreamType,\n  warn,\n} from \"../shared/util.js\";\nimport { Cmd, Dict, EOF, isCmd, Name, Ref } from \"./primitives.js\";\nimport {\n  isWhiteSpace,\n  MissingDataException,\n  ParserEOFException,\n} from \"./core_utils.js\";\nimport { Ascii85Stream } from \"./ascii_85_stream.js\";\nimport { AsciiHexStream } from \"./ascii_hex_stream.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { FlateStream } from \"./flate_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\nimport { LZWStream } from \"./lzw_stream.js\";\nimport { NullStream } from \"./stream.js\";\nimport { PredictorStream } from \"./predictor_stream.js\";\nimport { RunLengthStream } from \"./run_length_stream.js\";\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n  const bytesLength = bytes.length;\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      bytesLength < MAX_ADLER32_LENGTH,\n      'computeAdler32: Unsupported \"bytes\" length.'\n    );\n  }\n  let a = 1,\n    b = 0;\n  for (let i = 0; i < bytesLength; ++i) {\n    // No modulo required in the loop if `bytesLength < 5552`.\n    a += bytes[i] & 0xff;\n    b += a;\n  }\n  return (b % 65521 << 16) | a % 65521;\n}\n\nclass Parser {\n  constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\n    this.lexer = lexer;\n    this.xref = xref;\n    this.allowStreams = allowStreams;\n    this.recoveryMode = recoveryMode;\n\n    this.imageCache = Object.create(null);\n    this.refill();\n  }\n\n  refill() {\n    this.buf1 = this.lexer.getObj();\n    this.buf2 = this.lexer.getObj();\n  }\n\n  shift() {\n    if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n      this.buf1 = this.buf2;\n      this.buf2 = null;\n    } else {\n      this.buf1 = this.buf2;\n      this.buf2 = this.lexer.getObj();\n    }\n  }\n\n  tryShift() {\n    try {\n      this.shift();\n      return true;\n    } catch (e) {\n      if (e instanceof MissingDataException) {\n        throw e;\n      }\n      // Upon failure, the caller should reset this.lexer.pos to a known good\n      // state and call this.shift() twice to reset the buffers.\n      return false;\n    }\n  }\n\n  getObj(cipherTransform = null) {\n    const buf1 = this.buf1;\n    this.shift();\n\n    if (buf1 instanceof Cmd) {\n      switch (buf1.cmd) {\n        case \"BI\": // inline image\n          return this.makeInlineImage(cipherTransform);\n        case \"[\": // array\n          const array = [];\n          while (!isCmd(this.buf1, \"]\") && this.buf1 !== EOF) {\n            array.push(this.getObj(cipherTransform));\n          }\n          if (this.buf1 === EOF) {\n            if (this.recoveryMode) {\n              return array;\n            }\n            throw new ParserEOFException(\"End of file inside array.\");\n          }\n          this.shift();\n          return array;\n        case \"<<\": // dictionary or stream\n          const dict = new Dict(this.xref);\n          while (!isCmd(this.buf1, \">>\") && this.buf1 !== EOF) {\n            if (!(this.buf1 instanceof Name)) {\n              info(\"Malformed dictionary: key must be a name object\");\n              this.shift();\n              continue;\n            }\n\n            const key = this.buf1.name;\n            this.shift();\n            if (this.buf1 === EOF) {\n              break;\n            }\n            dict.set(key, this.getObj(cipherTransform));\n          }\n          if (this.buf1 === EOF) {\n            if (this.recoveryMode) {\n              return dict;\n            }\n            throw new ParserEOFException(\"End of file inside dictionary.\");\n          }\n\n          // Stream objects are not allowed inside content streams or\n          // object streams.\n          if (isCmd(this.buf2, \"stream\")) {\n            return this.allowStreams\n              ? this.makeStream(dict, cipherTransform)\n              : dict;\n          }\n          this.shift();\n          return dict;\n        default:\n          // simple object\n          return buf1;\n      }\n    }\n\n    if (Number.isInteger(buf1)) {\n      // indirect reference or integer\n      if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n        const ref = Ref.get(buf1, this.buf1);\n        this.shift();\n        this.shift();\n        return ref;\n      }\n      return buf1;\n    }\n\n    if (typeof buf1 === \"string\") {\n      if (cipherTransform) {\n        return cipherTransform.decryptString(buf1);\n      }\n      return buf1;\n    }\n\n    // simple object\n    return buf1;\n  }\n\n  /**\n   * Find the end of the stream by searching for the /EI\\s/.\n   * @returns {number} The inline stream length.\n   */\n  findDefaultInlineStreamEnd(stream) {\n    const E = 0x45,\n      I = 0x49,\n      SPACE = 0x20,\n      LF = 0xa,\n      CR = 0xd,\n      NUL = 0x0;\n    const lexer = this.lexer,\n      startPos = stream.pos,\n      n = 10;\n    let state = 0,\n      ch,\n      maybeEIPos;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else {\n        assert(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n        if (ch === SPACE || ch === LF || ch === CR) {\n          maybeEIPos = stream.pos;\n          // Let's check that the next `n` bytes are ASCII... just to be sure.\n          const followingBytes = stream.peekBytes(n);\n          for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n            ch = followingBytes[i];\n            if (ch === NUL && followingBytes[i + 1] !== NUL) {\n              // NUL bytes are not supposed to occur *outside* of inline\n              // images, but some PDF generators violate that assumption,\n              // thus breaking the EI detection heuristics used below.\n              //\n              // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n              // since that *could* result in inline images being truncated.\n              //\n              // To attempt to address this, we'll still treat any *sequence*\n              // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n              // continue checking the `followingBytes` (fixes issue8823.pdf).\n              continue;\n            }\n            if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n              // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n              // it's binary stuff. Resetting the state.\n              state = 0;\n              break;\n            }\n          }\n\n          if (state !== 2) {\n            continue;\n          }\n          // Check that the \"EI\" sequence isn't part of the image data, since\n          // that would cause the image to be truncated (fixes issue11124.pdf).\n          if (lexer.knownCommands) {\n            const nextObj = lexer.peekObj();\n            if (nextObj instanceof Cmd && !lexer.knownCommands[nextObj.cmd]) {\n              // Not a valid command, i.e. the inline image data *itself*\n              // contains an \"EI\" sequence. Resetting the state.\n              state = 0;\n            }\n          } else {\n            warn(\n              \"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\"\n            );\n          }\n\n          if (state === 2) {\n            break; // Finished!\n          }\n        } else {\n          state = 0;\n        }\n      }\n    }\n\n    if (ch === -1) {\n      warn(\n        \"findDefaultInlineStreamEnd: \" +\n          \"Reached the end of the stream without finding a valid EI marker\"\n      );\n      if (maybeEIPos) {\n        warn('... trying to recover by using the last \"EI\" occurrence.');\n        stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n      }\n    }\n\n    let endOffset = 4;\n    stream.skip(-endOffset); // Set the stream position to just before \"EI\".\n    ch = stream.peekByte();\n    stream.skip(endOffset); // ... and remember to reset the stream position.\n\n    // Ensure that we don't accidentally truncate the inline image, when the\n    // data is immediately followed by the \"EI\" marker (fixes issue10388.pdf).\n    if (!isWhiteSpace(ch)) {\n      endOffset--;\n    }\n    return stream.pos - endOffset - startPos;\n  }\n\n  /**\n   * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findDCTDecodeInlineStreamEnd(stream) {\n    const startPos = stream.pos;\n    let foundEOI = false,\n      b,\n      markerLength;\n    while ((b = stream.getByte()) !== -1) {\n      if (b !== 0xff) {\n        // Not a valid marker.\n        continue;\n      }\n      switch (stream.getByte()) {\n        case 0x00: // Byte stuffing.\n          // 0xFF00 appears to be a very common byte sequence in JPEG images.\n          break;\n\n        case 0xff: // Fill byte.\n          // Avoid skipping a valid marker, resetting the stream position.\n          stream.skip(-1);\n          break;\n\n        case 0xd9: // EOI\n          foundEOI = true;\n          break;\n\n        case 0xc0: // SOF0\n        case 0xc1: // SOF1\n        case 0xc2: // SOF2\n        case 0xc3: // SOF3\n        /* falls through */\n        case 0xc5: // SOF5\n        case 0xc6: // SOF6\n        case 0xc7: // SOF7\n        /* falls through */\n        case 0xc9: // SOF9\n        case 0xca: // SOF10\n        case 0xcb: // SOF11\n        /* falls through */\n        case 0xcd: // SOF13\n        case 0xce: // SOF14\n        case 0xcf: // SOF15\n        /* falls through */\n        case 0xc4: // DHT\n        case 0xcc: // DAC\n        /* falls through */\n        case 0xda: // SOS\n        case 0xdb: // DQT\n        case 0xdc: // DNL\n        case 0xdd: // DRI\n        case 0xde: // DHP\n        case 0xdf: // EXP\n        /* falls through */\n        case 0xe0: // APP0\n        case 0xe1: // APP1\n        case 0xe2: // APP2\n        case 0xe3: // APP3\n        case 0xe4: // APP4\n        case 0xe5: // APP5\n        case 0xe6: // APP6\n        case 0xe7: // APP7\n        case 0xe8: // APP8\n        case 0xe9: // APP9\n        case 0xea: // APP10\n        case 0xeb: // APP11\n        case 0xec: // APP12\n        case 0xed: // APP13\n        case 0xee: // APP14\n        case 0xef: // APP15\n        /* falls through */\n        case 0xfe: // COM\n          // The marker should be followed by the length of the segment.\n          markerLength = stream.getUint16();\n          if (markerLength > 2) {\n            // |markerLength| contains the byte length of the marker segment,\n            // including its own length (2 bytes) and excluding the marker.\n            stream.skip(markerLength - 2); // Jump to the next marker.\n          } else {\n            // The marker length is invalid, resetting the stream position.\n            stream.skip(-2);\n          }\n          break;\n      }\n      if (foundEOI) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (b === -1) {\n      warn(\n        \"Inline DCTDecode image stream: \" +\n          \"EOI marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findASCII85DecodeInlineStreamEnd(stream) {\n    const TILDE = 0x7e,\n      GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === TILDE) {\n        const tildePos = stream.pos;\n\n        ch = stream.peekByte();\n        // Handle corrupt PDF documents which contains whitespace \"inside\" of\n        // the EOD marker (fixes issue10614.pdf).\n        while (isWhiteSpace(ch)) {\n          stream.skip();\n          ch = stream.peekByte();\n        }\n        if (ch === GT) {\n          stream.skip();\n          break;\n        }\n        // Handle corrupt PDF documents which contains truncated EOD markers,\n        // where the '>' character is missing (fixes issue11385.pdf).\n        if (stream.pos > tildePos) {\n          const maybeEI = stream.peekBytes(2);\n          if (maybeEI[0] === /* E = */ 0x45 && maybeEI[1] === /* I = */ 0x49) {\n            break;\n          }\n        }\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\n        \"Inline ASCII85Decode image stream: \" +\n          \"EOD marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findASCIIHexDecodeInlineStreamEnd(stream) {\n    const GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === GT) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\n        \"Inline ASCIIHexDecode image stream: \" +\n          \"EOD marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Skip over the /EI/ for streams where we search for an EOD marker.\n   */\n  inlineStreamSkipEI(stream) {\n    const E = 0x45,\n      I = 0x49;\n    let state = 0,\n      ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else if (state === 2) {\n        break;\n      }\n    }\n  }\n\n  makeInlineImage(cipherTransform) {\n    const lexer = this.lexer;\n    const stream = lexer.stream;\n\n    // Parse dictionary.\n    const dict = new Dict(this.xref);\n    let dictLength;\n    while (!isCmd(this.buf1, \"ID\") && this.buf1 !== EOF) {\n      if (!(this.buf1 instanceof Name)) {\n        throw new FormatError(\"Dictionary key must be a name object\");\n      }\n      const key = this.buf1.name;\n      this.shift();\n      if (this.buf1 === EOF) {\n        break;\n      }\n      dict.set(key, this.getObj(cipherTransform));\n    }\n    if (lexer.beginInlineImagePos !== -1) {\n      dictLength = stream.pos - lexer.beginInlineImagePos;\n    }\n\n    // Extract the name of the first (i.e. the current) image filter.\n    const filter = dict.get(\"F\", \"Filter\");\n    let filterName;\n    if (filter instanceof Name) {\n      filterName = filter.name;\n    } else if (Array.isArray(filter)) {\n      const filterZero = this.xref.fetchIfRef(filter[0]);\n      if (filterZero instanceof Name) {\n        filterName = filterZero.name;\n      }\n    }\n\n    // Parse image stream.\n    const startPos = stream.pos;\n    let length;\n    switch (filterName) {\n      case \"DCT\":\n      case \"DCTDecode\":\n        length = this.findDCTDecodeInlineStreamEnd(stream);\n        break;\n      case \"A85\":\n      case \"ASCII85Decode\":\n        length = this.findASCII85DecodeInlineStreamEnd(stream);\n        break;\n      case \"AHx\":\n      case \"ASCIIHexDecode\":\n        length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n        break;\n      default:\n        length = this.findDefaultInlineStreamEnd(stream);\n    }\n    let imageStream = stream.makeSubStream(startPos, length, dict);\n\n    // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n    // adler32 checksum.\n    let cacheKey;\n    if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n      const imageBytes = imageStream.getBytes();\n      imageStream.reset();\n\n      const initialStreamPos = stream.pos;\n      // Set the stream position to the beginning of the dictionary data...\n      stream.pos = lexer.beginInlineImagePos;\n      // ... and fetch the bytes of the *entire* dictionary.\n      const dictBytes = stream.getBytes(dictLength);\n      // Finally, don't forget to reset the stream position.\n      stream.pos = initialStreamPos;\n\n      cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n\n      const cacheEntry = this.imageCache[cacheKey];\n      if (cacheEntry !== undefined) {\n        this.buf2 = Cmd.get(\"EI\");\n        this.shift();\n\n        cacheEntry.reset();\n        return cacheEntry;\n      }\n    }\n\n    if (cipherTransform) {\n      imageStream = cipherTransform.createStream(imageStream, length);\n    }\n\n    imageStream = this.filter(imageStream, dict, length);\n    imageStream.dict = dict;\n    if (cacheKey !== undefined) {\n      imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n      this.imageCache[cacheKey] = imageStream;\n    }\n\n    this.buf2 = Cmd.get(\"EI\");\n    this.shift();\n\n    return imageStream;\n  }\n\n  _findStreamLength(startPos, signature) {\n    const { stream } = this.lexer;\n    stream.pos = startPos;\n\n    const SCAN_BLOCK_LENGTH = 2048;\n    const signatureLength = signature.length;\n\n    while (stream.pos < stream.end) {\n      const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      const scanLength = scanBytes.length - signatureLength;\n\n      if (scanLength <= 0) {\n        break;\n      }\n      let pos = 0;\n      while (pos < scanLength) {\n        let j = 0;\n        while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n          j++;\n        }\n        if (j >= signatureLength) {\n          // `signature` found.\n          stream.pos += pos;\n          return stream.pos - startPos;\n        }\n        pos++;\n      }\n      stream.pos += scanLength;\n    }\n    return -1;\n  }\n\n  makeStream(dict, cipherTransform) {\n    const lexer = this.lexer;\n    let stream = lexer.stream;\n\n    // Get the stream's start position.\n    lexer.skipToNextLine();\n    const startPos = stream.pos - 1;\n\n    // Get the length.\n    let length = dict.get(\"Length\");\n    if (!Number.isInteger(length)) {\n      info(`Bad length \"${length && length.toString()}\" in stream.`);\n      length = 0;\n    }\n\n    // Skip over the stream data.\n    stream.pos = startPos + length;\n    lexer.nextChar();\n\n    // Shift '>>' and check whether the new object marks the end of the stream.\n    if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n      this.shift(); // 'stream'\n    } else {\n      // Bad stream length, scanning for endstream command.\n      const ENDSTREAM_SIGNATURE = new Uint8Array([\n        0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,\n      ]);\n      let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n      if (actualLength < 0) {\n        // Only allow limited truncation of the endstream signature,\n        // to prevent false positives.\n        const MAX_TRUNCATION = 1;\n        // Check if the PDF generator included truncated endstream commands,\n        // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n        for (let i = 1; i <= MAX_TRUNCATION; i++) {\n          const end = ENDSTREAM_SIGNATURE.length - i;\n          const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n          const maybeLength = this._findStreamLength(\n            startPos,\n            TRUNCATED_SIGNATURE\n          );\n          if (maybeLength >= 0) {\n            // Ensure that the byte immediately following the truncated\n            // endstream command is a space, to prevent false positives.\n            const lastByte = stream.peekBytes(end + 1)[end];\n            if (!isWhiteSpace(lastByte)) {\n              break;\n            }\n            info(\n              `Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n                \"searching for endstream command.\"\n            );\n            actualLength = maybeLength;\n            break;\n          }\n        }\n\n        if (actualLength < 0) {\n          throw new FormatError(\"Missing endstream command.\");\n        }\n      }\n      length = actualLength;\n\n      lexer.nextChar();\n      this.shift();\n      this.shift();\n    }\n    this.shift(); // 'endstream'\n\n    stream = stream.makeSubStream(startPos, length, dict);\n    if (cipherTransform) {\n      stream = cipherTransform.createStream(stream, length);\n    }\n    stream = this.filter(stream, dict, length);\n    stream.dict = dict;\n    return stream;\n  }\n\n  filter(stream, dict, length) {\n    let filter = dict.get(\"F\", \"Filter\");\n    let params = dict.get(\"DP\", \"DecodeParms\");\n\n    if (filter instanceof Name) {\n      if (Array.isArray(params)) {\n        warn(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\n      }\n      return this.makeFilter(stream, filter.name, length, params);\n    }\n\n    let maybeLength = length;\n    if (Array.isArray(filter)) {\n      const filterArray = filter;\n      const paramsArray = params;\n      for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n        filter = this.xref.fetchIfRef(filterArray[i]);\n        if (!(filter instanceof Name)) {\n          throw new FormatError(`Bad filter name \"${filter}\"`);\n        }\n\n        params = null;\n        if (Array.isArray(paramsArray) && i in paramsArray) {\n          params = this.xref.fetchIfRef(paramsArray[i]);\n        }\n        stream = this.makeFilter(stream, filter.name, maybeLength, params);\n        // After the first stream the `length` variable is invalid.\n        maybeLength = null;\n      }\n    }\n    return stream;\n  }\n\n  makeFilter(stream, name, maybeLength, params) {\n    // Since the 'Length' entry in the stream dictionary can be completely\n    // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n    // when we can be absolutely certain that it actually is empty.\n    if (maybeLength === 0) {\n      warn(`Empty \"${name}\" stream.`);\n      return new NullStream();\n    }\n    const xrefStats = this.xref.stats;\n\n    try {\n      switch (name) {\n        case \"Fl\":\n        case \"FlateDecode\":\n          xrefStats.addStreamType(StreamType.FLATE);\n          if (params) {\n            return new PredictorStream(\n              new FlateStream(stream, maybeLength),\n              maybeLength,\n              params\n            );\n          }\n          return new FlateStream(stream, maybeLength);\n        case \"LZW\":\n        case \"LZWDecode\":\n          xrefStats.addStreamType(StreamType.LZW);\n          let earlyChange = 1;\n          if (params) {\n            if (params.has(\"EarlyChange\")) {\n              earlyChange = params.get(\"EarlyChange\");\n            }\n            return new PredictorStream(\n              new LZWStream(stream, maybeLength, earlyChange),\n              maybeLength,\n              params\n            );\n          }\n          return new LZWStream(stream, maybeLength, earlyChange);\n        case \"DCT\":\n        case \"DCTDecode\":\n          xrefStats.addStreamType(StreamType.DCT);\n          return new JpegStream(stream, maybeLength, params);\n        case \"JPX\":\n        case \"JPXDecode\":\n          xrefStats.addStreamType(StreamType.JPX);\n          return new JpxStream(stream, maybeLength, params);\n        case \"A85\":\n        case \"ASCII85Decode\":\n          xrefStats.addStreamType(StreamType.A85);\n          return new Ascii85Stream(stream, maybeLength);\n        case \"AHx\":\n        case \"ASCIIHexDecode\":\n          xrefStats.addStreamType(StreamType.AHX);\n          return new AsciiHexStream(stream, maybeLength);\n        case \"CCF\":\n        case \"CCITTFaxDecode\":\n          xrefStats.addStreamType(StreamType.CCF);\n          return new CCITTFaxStream(stream, maybeLength, params);\n        case \"RL\":\n        case \"RunLengthDecode\":\n          xrefStats.addStreamType(StreamType.RLX);\n          return new RunLengthStream(stream, maybeLength);\n        case \"JBIG2Decode\":\n          xrefStats.addStreamType(StreamType.JBIG);\n          return new Jbig2Stream(stream, maybeLength, params);\n      }\n      warn(`Filter \"${name}\" is not supported.`);\n      return stream;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Invalid stream: \"${ex}\"`);\n      return new NullStream();\n    }\n  }\n}\n\n// A '1' in this array means the character is white space. A '1' or\n// '2' means the character ends a name or command.\n// prettier-ignore\nconst specialChars = [\n  1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n  1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  // fx\n];\n\nfunction toHexDigit(ch) {\n  if (ch >= /* '0' = */ 0x30 && ch /* '9' = */ <= 0x39) {\n    return ch & 0x0f;\n  }\n  if (\n    (ch >= /* 'A' = */ 0x41 && ch <= /* 'F' = */ 0x46) ||\n    (ch >= /* 'a' = */ 0x61 && ch <= /* 'f' = */ 0x66)\n  ) {\n    return (ch & 0x0f) + 9;\n  }\n  return -1;\n}\n\nclass Lexer {\n  constructor(stream, knownCommands = null) {\n    this.stream = stream;\n    this.nextChar();\n\n    // While lexing, we build up many strings one char at a time. Using += for\n    // this can result in lots of garbage strings. It's better to build an\n    // array of single-char strings and then join() them together at the end.\n    // And reusing a single array (i.e. |this.strBuf|) over and over for this\n    // purpose uses less memory than using a new array for each string.\n    this.strBuf = [];\n\n    // The PDFs might have \"glued\" commands with other commands, operands or\n    // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n    // commands and their prefixes. The prefixes are built the following way:\n    // if there a command that is a prefix of the other valid command or\n    // literal (e.g. 'f' and 'false') the following prefixes must be included,\n    // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n    // other commands or literals as a prefix. The knowCommands is optional.\n    this.knownCommands = knownCommands;\n\n    this._hexStringNumWarn = 0;\n    this.beginInlineImagePos = -1;\n  }\n\n  nextChar() {\n    return (this.currentChar = this.stream.getByte());\n  }\n\n  peekChar() {\n    return this.stream.peekByte();\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    let eNotation = false;\n    let divideBy = 0; // Different from 0 if it's a floating point value.\n    let sign = 0;\n\n    if (ch === /* '-' = */ 0x2d) {\n      sign = -1;\n      ch = this.nextChar();\n\n      if (ch === /* '-' = */ 0x2d) {\n        // Ignore double negative (this is consistent with Adobe Reader).\n        ch = this.nextChar();\n      }\n    } else if (ch === /* '+' = */ 0x2b) {\n      sign = 1;\n      ch = this.nextChar();\n    }\n    if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n      // Ignore line-breaks (this is consistent with Adobe Reader).\n      do {\n        ch = this.nextChar();\n      } while (ch === 0x0a || ch === 0x0d);\n    }\n    if (ch === /* '.' = */ 0x2e) {\n      divideBy = 10;\n      ch = this.nextChar();\n    }\n    if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n      if (isWhiteSpace(ch) || ch === /* EOF = */ -1) {\n        // This is consistent with Adobe Reader (fixes issue9252.pdf).\n        if (divideBy === 10 && sign === 0) {\n          warn(\"Lexer.getNumber - treating a single decimal point as zero.\");\n          return 0;\n        }\n        // This is consistent with Adobe Reader (fixes bug1753983.pdf).\n        if (divideBy === 0 && sign === -1) {\n          warn(\"Lexer.getNumber - treating a single minus sign as zero.\");\n          return 0;\n        }\n      }\n      throw new FormatError(\n        `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`\n      );\n    }\n\n    sign = sign || 1;\n    let baseValue = ch - 0x30; // '0'\n    let powerValue = 0;\n    let powerValueSign = 1;\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n        const currentDigit = ch - 0x30; // '0'\n        if (eNotation) {\n          // We are after an 'e' or 'E'.\n          powerValue = powerValue * 10 + currentDigit;\n        } else {\n          if (divideBy !== 0) {\n            // We are after a point.\n            divideBy *= 10;\n          }\n          baseValue = baseValue * 10 + currentDigit;\n        }\n      } else if (ch === /* '.' = */ 0x2e) {\n        if (divideBy === 0) {\n          divideBy = 1;\n        } else {\n          // A number can have only one dot.\n          break;\n        }\n      } else if (ch === /* '-' = */ 0x2d) {\n        // Ignore minus signs in the middle of numbers to match\n        // Adobe's behavior.\n        warn(\"Badly formatted number: minus sign in the middle\");\n      } else if (ch === /* 'E' = */ 0x45 || ch === /* 'e' = */ 0x65) {\n        // 'E' can be either a scientific notation or the beginning of a new\n        // operator.\n        ch = this.peekChar();\n        if (ch === /* '+' = */ 0x2b || ch === /* '-' = */ 0x2d) {\n          powerValueSign = ch === 0x2d ? -1 : 1;\n          this.nextChar(); // Consume the sign character.\n        } else if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n          // The 'E' must be the beginning of a new operator.\n          break;\n        }\n        eNotation = true;\n      } else {\n        // The last character doesn't belong to us.\n        break;\n      }\n    }\n\n    if (divideBy !== 0) {\n      baseValue /= divideBy;\n    }\n    if (eNotation) {\n      baseValue *= 10 ** (powerValueSign * powerValue);\n    }\n    return sign * baseValue;\n  }\n\n  getString() {\n    let numParen = 1;\n    let done = false;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    let ch = this.nextChar();\n    while (true) {\n      let charBuffered = false;\n      switch (ch | 0) {\n        case -1:\n          warn(\"Unterminated string\");\n          done = true;\n          break;\n        case 0x28: // '('\n          ++numParen;\n          strBuf.push(\"(\");\n          break;\n        case 0x29: // ')'\n          if (--numParen === 0) {\n            this.nextChar(); // consume strings ')'\n            done = true;\n          } else {\n            strBuf.push(\")\");\n          }\n          break;\n        case 0x5c: // '\\\\'\n          ch = this.nextChar();\n          switch (ch) {\n            case -1:\n              warn(\"Unterminated string\");\n              done = true;\n              break;\n            case 0x6e: // 'n'\n              strBuf.push(\"\\n\");\n              break;\n            case 0x72: // 'r'\n              strBuf.push(\"\\r\");\n              break;\n            case 0x74: // 't'\n              strBuf.push(\"\\t\");\n              break;\n            case 0x62: // 'b'\n              strBuf.push(\"\\b\");\n              break;\n            case 0x66: // 'f'\n              strBuf.push(\"\\f\");\n              break;\n            case 0x5c: // '\\'\n            case 0x28: // '('\n            case 0x29: // ')'\n              strBuf.push(String.fromCharCode(ch));\n              break;\n            case 0x30: // '0'\n            case 0x31: // '1'\n            case 0x32: // '2'\n            case 0x33: // '3'\n            case 0x34: // '4'\n            case 0x35: // '5'\n            case 0x36: // '6'\n            case 0x37: // '7'\n              let x = ch & 0x0f;\n              ch = this.nextChar();\n              charBuffered = true;\n              if (ch >= /* '0' = */ 0x30 && ch <= /* '7' = */ 0x37) {\n                x = (x << 3) + (ch & 0x0f);\n                ch = this.nextChar();\n                if (ch >= /* '0' = */ 0x30 && ch /* '7' = */ <= 0x37) {\n                  charBuffered = false;\n                  x = (x << 3) + (ch & 0x0f);\n                }\n              }\n              strBuf.push(String.fromCharCode(x));\n              break;\n            case 0x0d: // CR\n              if (this.peekChar() === /* LF = */ 0x0a) {\n                this.nextChar();\n              }\n              break;\n            case 0x0a: // LF\n              break;\n            default:\n              strBuf.push(String.fromCharCode(ch));\n              break;\n          }\n          break;\n        default:\n          strBuf.push(String.fromCharCode(ch));\n          break;\n      }\n      if (done) {\n        break;\n      }\n      if (!charBuffered) {\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n\n  getName() {\n    let ch, previousCh;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      if (ch === /* '#' = */ 0x23) {\n        ch = this.nextChar();\n        if (specialChars[ch]) {\n          warn(\n            \"Lexer_getName: \" +\n              \"NUMBER SIGN (#) should be followed by a hexadecimal number.\"\n          );\n          strBuf.push(\"#\");\n          break;\n        }\n        const x = toHexDigit(ch);\n        if (x !== -1) {\n          previousCh = ch;\n          ch = this.nextChar();\n          const x2 = toHexDigit(ch);\n          if (x2 === -1) {\n            warn(\n              `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\n                \"in hexadecimal number.\"\n            );\n            strBuf.push(\"#\", String.fromCharCode(previousCh));\n            if (specialChars[ch]) {\n              break;\n            }\n            strBuf.push(String.fromCharCode(ch));\n            continue;\n          }\n          strBuf.push(String.fromCharCode((x << 4) | x2));\n        } else {\n          strBuf.push(\"#\", String.fromCharCode(ch));\n        }\n      } else {\n        strBuf.push(String.fromCharCode(ch));\n      }\n    }\n    if (strBuf.length > 127) {\n      warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n    }\n    return Name.get(strBuf.join(\"\"));\n  }\n\n  /**\n   * @private\n   */\n  _hexStringWarn(ch) {\n    const MAX_HEX_STRING_NUM_WARN = 5;\n\n    if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n      warn(\"getHexString - ignoring additional invalid characters.\");\n      return;\n    }\n    if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n      // Limit the number of warning messages printed for a `this.getHexString`\n      // invocation, since corrupt PDF documents may otherwise spam the console\n      // enough to affect general performance negatively.\n      return;\n    }\n    warn(`getHexString - ignoring invalid character: ${ch}`);\n  }\n\n  getHexString() {\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    let ch = this.currentChar;\n    let isFirstHex = true;\n    let firstDigit, secondDigit;\n    this._hexStringNumWarn = 0;\n\n    while (true) {\n      if (ch < 0) {\n        warn(\"Unterminated hex string\");\n        break;\n      } else if (ch === /* '>' = */ 0x3e) {\n        this.nextChar();\n        break;\n      } else if (specialChars[ch] === 1) {\n        ch = this.nextChar();\n        continue;\n      } else {\n        if (isFirstHex) {\n          firstDigit = toHexDigit(ch);\n          if (firstDigit === -1) {\n            this._hexStringWarn(ch);\n            ch = this.nextChar();\n            continue;\n          }\n        } else {\n          secondDigit = toHexDigit(ch);\n          if (secondDigit === -1) {\n            this._hexStringWarn(ch);\n            ch = this.nextChar();\n            continue;\n          }\n          strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n        }\n        isFirstHex = !isFirstHex;\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n\n  getObj() {\n    // Skip whitespace and comments.\n    let comment = false;\n    let ch = this.currentChar;\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n      if (comment) {\n        if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n          comment = false;\n        }\n      } else if (ch === /* '%' = */ 0x25) {\n        comment = true;\n      } else if (specialChars[ch] !== 1) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n\n    // Start reading a token.\n    switch (ch | 0) {\n      case 0x30: // '0'\n      case 0x31: // '1'\n      case 0x32: // '2'\n      case 0x33: // '3'\n      case 0x34: // '4'\n      case 0x35: // '5'\n      case 0x36: // '6'\n      case 0x37: // '7'\n      case 0x38: // '8'\n      case 0x39: // '9'\n      case 0x2b: // '+'\n      case 0x2d: // '-'\n      case 0x2e: // '.'\n        return this.getNumber();\n      case 0x28: // '('\n        return this.getString();\n      case 0x2f: // '/'\n        return this.getName();\n      // array punctuation\n      case 0x5b: // '['\n        this.nextChar();\n        return Cmd.get(\"[\");\n      case 0x5d: // ']'\n        this.nextChar();\n        return Cmd.get(\"]\");\n      // hex string or dict punctuation\n      case 0x3c: // '<'\n        ch = this.nextChar();\n        if (ch === 0x3c) {\n          // dict punctuation\n          this.nextChar();\n          return Cmd.get(\"<<\");\n        }\n        return this.getHexString();\n      // dict punctuation\n      case 0x3e: // '>'\n        ch = this.nextChar();\n        if (ch === 0x3e) {\n          this.nextChar();\n          return Cmd.get(\">>\");\n        }\n        return Cmd.get(\">\");\n      case 0x7b: // '{'\n        this.nextChar();\n        return Cmd.get(\"{\");\n      case 0x7d: // '}'\n        this.nextChar();\n        return Cmd.get(\"}\");\n      case 0x29: // ')'\n        // Consume the current character in order to avoid permanently hanging\n        // the worker thread if `Lexer.getObj` is called from within a loop\n        // containing try-catch statements, since we would otherwise attempt\n        // to parse the *same* character over and over (fixes issue8061.pdf).\n        this.nextChar();\n        throw new FormatError(`Illegal character: ${ch}`);\n    }\n\n    // Start reading a command.\n    let str = String.fromCharCode(ch);\n    // A valid command cannot start with a non-visible ASCII character,\n    // and the next character may be (the start of) a valid command.\n    if (ch < 0x20 || ch > 0x7f) {\n      const nextCh = this.peekChar();\n      if (nextCh >= 0x20 && nextCh <= 0x7f) {\n        this.nextChar();\n        return Cmd.get(str);\n      }\n    }\n    const knownCommands = this.knownCommands;\n    let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      // Stop if a known command is found and next character does not make\n      // the string a command.\n      const possibleCommand = str + String.fromCharCode(ch);\n      if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n        break;\n      }\n      if (str.length === 128) {\n        throw new FormatError(`Command token too long: ${str.length}`);\n      }\n      str = possibleCommand;\n      knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    }\n    if (str === \"true\") {\n      return true;\n    }\n    if (str === \"false\") {\n      return false;\n    }\n    if (str === \"null\") {\n      return null;\n    }\n\n    if (str === \"BI\") {\n      // Keep track of the current stream position, since it's needed in order\n      // to correctly cache inline images; see `Parser.makeInlineImage`.\n      this.beginInlineImagePos = this.stream.pos;\n    }\n\n    return Cmd.get(str);\n  }\n\n  peekObj() {\n    const streamPos = this.stream.pos,\n      currentChar = this.currentChar,\n      beginInlineImagePos = this.beginInlineImagePos;\n\n    let nextObj;\n    try {\n      nextObj = this.getObj();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`peekObj: ${ex}`);\n    }\n    // Ensure that we reset *all* relevant `Lexer`-instance state.\n    this.stream.pos = streamPos;\n    this.currentChar = currentChar;\n    this.beginInlineImagePos = beginInlineImagePos;\n\n    return nextObj;\n  }\n\n  skipToNextLine() {\n    let ch = this.currentChar;\n    while (ch >= 0) {\n      if (ch === /* CR = */ 0x0d) {\n        ch = this.nextChar();\n        if (ch === /* LF = */ 0x0a) {\n          this.nextChar();\n        }\n        break;\n      } else if (ch === /* LF = */ 0x0a) {\n        this.nextChar();\n        break;\n      }\n      ch = this.nextChar();\n    }\n  }\n}\n\nclass Linearization {\n  static create(stream) {\n    function getInt(linDict, name, allowZeroValue = false) {\n      const obj = linDict.get(name);\n      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n        return obj;\n      }\n      throw new Error(\n        `The \"${name}\" parameter in the linearization ` +\n          \"dictionary is invalid.\"\n      );\n    }\n\n    function getHints(linDict) {\n      const hints = linDict.get(\"H\");\n      let hintsLength;\n\n      if (\n        Array.isArray(hints) &&\n        ((hintsLength = hints.length) === 2 || hintsLength === 4)\n      ) {\n        for (let index = 0; index < hintsLength; index++) {\n          const hint = hints[index];\n          if (!(Number.isInteger(hint) && hint > 0)) {\n            throw new Error(\n              `Hint (${index}) in the linearization dictionary is invalid.`\n            );\n          }\n        }\n        return hints;\n      }\n      throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n    }\n\n    const parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: null,\n    });\n    const obj1 = parser.getObj();\n    const obj2 = parser.getObj();\n    const obj3 = parser.getObj();\n    const linDict = parser.getObj();\n    let obj, length;\n    if (\n      !(\n        Number.isInteger(obj1) &&\n        Number.isInteger(obj2) &&\n        isCmd(obj3, \"obj\") &&\n        linDict instanceof Dict &&\n        typeof (obj = linDict.get(\"Linearized\")) === \"number\" &&\n        obj > 0\n      )\n    ) {\n      return null; // No valid linearization dictionary found.\n    } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n      throw new Error(\n        'The \"L\" parameter in the linearization dictionary ' +\n          \"does not equal the stream length.\"\n      );\n    }\n    return {\n      length,\n      hints: getHints(linDict),\n      objectNumberFirst: getInt(linDict, \"O\"),\n      endFirst: getInt(linDict, \"E\"),\n      numPages: getInt(linDict, \"N\"),\n      mainXRefEntriesOffset: getInt(linDict, \"T\"),\n      pageFirst: linDict.has(\"P\")\n        ? getInt(linDict, \"P\", /* allowZeroValue = */ true)\n        : 0,\n    };\n  }\n}\n\nexport { Lexer, Linearization, Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass Ascii85Stream extends DecodeStream {\n  constructor(str, maybeLength) {\n    // Most streams increase in size when decoded, but Ascii85 streams\n    // typically shrink by ~20%.\n    if (maybeLength) {\n      maybeLength *= 0.8;\n    }\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n    this.input = new Uint8Array(5);\n  }\n\n  readBlock() {\n    const TILDA_CHAR = 0x7e; // '~'\n    const Z_LOWER_CHAR = 0x7a; // 'z'\n    const EOF = -1;\n\n    const str = this.str;\n\n    let c = str.getByte();\n    while (isWhiteSpace(c)) {\n      c = str.getByte();\n    }\n\n    if (c === EOF || c === TILDA_CHAR) {\n      this.eof = true;\n      return;\n    }\n\n    const bufferLength = this.bufferLength;\n    let buffer, i;\n\n    // special code for z\n    if (c === Z_LOWER_CHAR) {\n      buffer = this.ensureBuffer(bufferLength + 4);\n      for (i = 0; i < 4; ++i) {\n        buffer[bufferLength + i] = 0;\n      }\n      this.bufferLength += 4;\n    } else {\n      const input = this.input;\n      input[0] = c;\n      for (i = 1; i < 5; ++i) {\n        c = str.getByte();\n        while (isWhiteSpace(c)) {\n          c = str.getByte();\n        }\n\n        input[i] = c;\n\n        if (c === EOF || c === TILDA_CHAR) {\n          break;\n        }\n      }\n      buffer = this.ensureBuffer(bufferLength + i - 1);\n      this.bufferLength += i - 1;\n\n      // partial ending;\n      if (i < 5) {\n        for (; i < 5; ++i) {\n          input[i] = 0x21 + 84;\n        }\n        this.eof = true;\n      }\n      let t = 0;\n      for (i = 0; i < 5; ++i) {\n        t = t * 85 + (input[i] - 0x21);\n      }\n\n      for (i = 3; i >= 0; --i) {\n        buffer[bufferLength + i] = t & 0xff;\n        t >>= 8;\n      }\n    }\n  }\n}\n\nexport { Ascii85Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { Stream } from \"./stream.js\";\n\n// Lots of DecodeStreams are created whose buffers are never used.  For these\n// we share a single empty buffer. This is (a) space-efficient and (b) avoids\n// having special cases that would be required if we used |null| for an empty\n// buffer.\nconst emptyBuffer = new Uint8Array(0);\n\n// Super class for the decoding streams.\nclass DecodeStream extends BaseStream {\n  constructor(maybeMinBufferLength) {\n    super();\n    this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n    this.pos = 0;\n    this.bufferLength = 0;\n    this.eof = false;\n    this.buffer = emptyBuffer;\n    this.minBufferLength = 512;\n    if (maybeMinBufferLength) {\n      // Compute the first power of two that is as big as maybeMinBufferLength.\n      while (this.minBufferLength < maybeMinBufferLength) {\n        this.minBufferLength *= 2;\n      }\n    }\n  }\n\n  get isEmpty() {\n    while (!this.eof && this.bufferLength === 0) {\n      this.readBlock();\n    }\n    return this.bufferLength === 0;\n  }\n\n  ensureBuffer(requested) {\n    const buffer = this.buffer;\n    if (requested <= buffer.byteLength) {\n      return buffer;\n    }\n    let size = this.minBufferLength;\n    while (size < requested) {\n      size *= 2;\n    }\n    const buffer2 = new Uint8Array(size);\n    buffer2.set(buffer);\n    return (this.buffer = buffer2);\n  }\n\n  getByte() {\n    const pos = this.pos;\n    while (this.bufferLength <= pos) {\n      if (this.eof) {\n        return -1;\n      }\n      this.readBlock();\n    }\n    return this.buffer[this.pos++];\n  }\n\n  getBytes(length, forceClamped = false) {\n    const pos = this.pos;\n    let end;\n\n    if (length) {\n      this.ensureBuffer(pos + length);\n      end = pos + length;\n\n      while (!this.eof && this.bufferLength < end) {\n        this.readBlock();\n      }\n      const bufEnd = this.bufferLength;\n      if (end > bufEnd) {\n        end = bufEnd;\n      }\n    } else {\n      while (!this.eof) {\n        this.readBlock();\n      }\n      end = this.bufferLength;\n    }\n\n    this.pos = end;\n    const subarray = this.buffer.subarray(pos, end);\n    // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.\n    return forceClamped && !(subarray instanceof Uint8ClampedArray)\n      ? new Uint8ClampedArray(subarray)\n      : subarray;\n  }\n\n  reset() {\n    this.pos = 0;\n  }\n\n  makeSubStream(start, length, dict = null) {\n    if (length === undefined) {\n      while (!this.eof) {\n        this.readBlock();\n      }\n    } else {\n      const end = start + length;\n      while (this.bufferLength <= end && !this.eof) {\n        this.readBlock();\n      }\n    }\n    return new Stream(this.buffer, start, length, dict);\n  }\n\n  getBaseStreams() {\n    return this.str ? this.str.getBaseStreams() : null;\n  }\n}\n\nclass StreamsSequenceStream extends DecodeStream {\n  constructor(streams, onError = null) {\n    let maybeLength = 0;\n    for (const stream of streams) {\n      maybeLength +=\n        stream instanceof DecodeStream\n          ? stream._rawMinBufferLength\n          : stream.length;\n    }\n    super(maybeLength);\n\n    this.streams = streams;\n    this._onError = onError;\n  }\n\n  readBlock() {\n    const streams = this.streams;\n    if (streams.length === 0) {\n      this.eof = true;\n      return;\n    }\n    const stream = streams.shift();\n    let chunk;\n    try {\n      chunk = stream.getBytes();\n    } catch (reason) {\n      if (this._onError) {\n        this._onError(reason, stream.dict && stream.dict.objId);\n        return;\n      }\n      throw reason;\n    }\n    const bufferLength = this.bufferLength;\n    const newLength = bufferLength + chunk.length;\n    const buffer = this.ensureBuffer(newLength);\n    buffer.set(chunk, bufferLength);\n    this.bufferLength = newLength;\n  }\n\n  getBaseStreams() {\n    const baseStreamsBuf = [];\n    for (const stream of this.streams) {\n      const baseStreams = stream.getBaseStreams();\n      if (baseStreams) {\n        baseStreamsBuf.push(...baseStreams);\n      }\n    }\n    return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n  }\n}\n\nexport { DecodeStream, StreamsSequenceStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass AsciiHexStream extends DecodeStream {\n  constructor(str, maybeLength) {\n    // Most streams increase in size when decoded, but AsciiHex streams shrink\n    // by 50%.\n    if (maybeLength) {\n      maybeLength *= 0.5;\n    }\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n\n    this.firstDigit = -1;\n  }\n\n  readBlock() {\n    const UPSTREAM_BLOCK_SIZE = 8000;\n    const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n    if (!bytes.length) {\n      this.eof = true;\n      return;\n    }\n\n    const maxDecodeLength = (bytes.length + 1) >> 1;\n    const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n    let bufferLength = this.bufferLength;\n\n    let firstDigit = this.firstDigit;\n    for (const ch of bytes) {\n      let digit;\n      if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n        digit = ch & 0x0f;\n      } else if (\n        (ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x46) ||\n        (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x66)\n      ) {\n        digit = (ch & 0x0f) + 9;\n      } else if (ch === /* '>' = */ 0x3e) {\n        this.eof = true;\n        break;\n      } else {\n        // Probably whitespace, ignoring.\n        continue;\n      }\n      if (firstDigit < 0) {\n        firstDigit = digit;\n      } else {\n        buffer[bufferLength++] = (firstDigit << 4) | digit;\n        firstDigit = -1;\n      }\n    }\n    if (firstDigit >= 0 && this.eof) {\n      // incomplete byte\n      buffer[bufferLength++] = firstDigit << 4;\n      firstDigit = -1;\n    }\n    this.firstDigit = firstDigit;\n    this.bufferLength = bufferLength;\n  }\n}\n\nexport { AsciiHexStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\n\nclass CCITTFaxStream extends DecodeStream {\n  constructor(str, maybeLength, params) {\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n\n    if (!(params instanceof Dict)) {\n      params = Dict.empty;\n    }\n\n    const source = {\n      next() {\n        return str.getByte();\n      },\n    };\n    this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n      K: params.get(\"K\"),\n      EndOfLine: params.get(\"EndOfLine\"),\n      EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n      Columns: params.get(\"Columns\"),\n      Rows: params.get(\"Rows\"),\n      EndOfBlock: params.get(\"EndOfBlock\"),\n      BlackIs1: params.get(\"BlackIs1\"),\n    });\n  }\n\n  readBlock() {\n    while (!this.eof) {\n      const c = this.ccittFaxDecoder.readNextChar();\n      if (c === -1) {\n        this.eof = true;\n        return;\n      }\n      this.ensureBuffer(this.bufferLength + 1);\n      this.buffer[this.bufferLength++] = c;\n    }\n  }\n}\n\nexport { CCITTFaxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, info } from \"../shared/util.js\";\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n *   or -1 when EOF is reached.\n */\n\nconst ccittEOL = -2;\nconst ccittEOF = -1;\nconst twoDimPass = 0;\nconst twoDimHoriz = 1;\nconst twoDimVert0 = 2;\nconst twoDimVertR1 = 3;\nconst twoDimVertL1 = 4;\nconst twoDimVertR2 = 5;\nconst twoDimVertL2 = 6;\nconst twoDimVertR3 = 7;\nconst twoDimVertL3 = 8;\n\n// prettier-ignore\nconst twoDimTable = [\n  [-1, -1], [-1, -1],                   // 000000x\n  [7, twoDimVertL3],                    // 0000010\n  [7, twoDimVertR3],                    // 0000011\n  [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n  [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n  [4, twoDimPass], [4, twoDimPass],     // 0001xxx\n  [4, twoDimPass], [4, twoDimPass],\n  [4, twoDimPass], [4, twoDimPass],\n  [4, twoDimPass], [4, twoDimPass],\n  [3, twoDimHoriz], [3, twoDimHoriz],   // 001xxxx\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [1, twoDimVert0], [1, twoDimVert0],   // 1xxxxxx\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0]\n];\n\n// prettier-ignore\nconst whiteTable1 = [\n  [-1, -1],                               // 00000\n  [12, ccittEOL],                         // 00001\n  [-1, -1], [-1, -1],                     // 0001x\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n  [11, 1792], [11, 1792],                 // 1000x\n  [12, 1984],                             // 10010\n  [12, 2048],                             // 10011\n  [12, 2112],                             // 10100\n  [12, 2176],                             // 10101\n  [12, 2240],                             // 10110\n  [12, 2304],                             // 10111\n  [11, 1856], [11, 1856],                 // 1100x\n  [11, 1920], [11, 1920],                 // 1101x\n  [12, 2368],                             // 11100\n  [12, 2432],                             // 11101\n  [12, 2496],                             // 11110\n  [12, 2560]                              // 11111\n];\n\n// prettier-ignore\nconst whiteTable2 = [\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],     // 0000000xx\n  [8, 29], [8, 29],                           // 00000010x\n  [8, 30], [8, 30],                           // 00000011x\n  [8, 45], [8, 45],                           // 00000100x\n  [8, 46], [8, 46],                           // 00000101x\n  [7, 22], [7, 22], [7, 22], [7, 22],         // 0000011xx\n  [7, 23], [7, 23], [7, 23], [7, 23],         // 0000100xx\n  [8, 47], [8, 47],                           // 00001010x\n  [8, 48], [8, 48],                           // 00001011x\n  [6, 13], [6, 13], [6, 13], [6, 13],         // 000011xxx\n  [6, 13], [6, 13], [6, 13], [6, 13],\n  [7, 20], [7, 20], [7, 20], [7, 20],         // 0001000xx\n  [8, 33], [8, 33],                           // 00010010x\n  [8, 34], [8, 34],                           // 00010011x\n  [8, 35], [8, 35],                           // 00010100x\n  [8, 36], [8, 36],                           // 00010101x\n  [8, 37], [8, 37],                           // 00010110x\n  [8, 38], [8, 38],                           // 00010111x\n  [7, 19], [7, 19], [7, 19], [7, 19],         // 0001100xx\n  [8, 31], [8, 31],                           // 00011010x\n  [8, 32], [8, 32],                           // 00011011x\n  [6, 1], [6, 1], [6, 1], [6, 1],             // 000111xxx\n  [6, 1], [6, 1], [6, 1], [6, 1],\n  [6, 12], [6, 12], [6, 12], [6, 12],         // 001000xxx\n  [6, 12], [6, 12], [6, 12], [6, 12],\n  [8, 53], [8, 53],                           // 00100100x\n  [8, 54], [8, 54],                           // 00100101x\n  [7, 26], [7, 26], [7, 26], [7, 26],         // 0010011xx\n  [8, 39], [8, 39],                           // 00101000x\n  [8, 40], [8, 40],                           // 00101001x\n  [8, 41], [8, 41],                           // 00101010x\n  [8, 42], [8, 42],                           // 00101011x\n  [8, 43], [8, 43],                           // 00101100x\n  [8, 44], [8, 44],                           // 00101101x\n  [7, 21], [7, 21], [7, 21], [7, 21],         // 0010111xx\n  [7, 28], [7, 28], [7, 28], [7, 28],         // 0011000xx\n  [8, 61], [8, 61],                           // 00110010x\n  [8, 62], [8, 62],                           // 00110011x\n  [8, 63], [8, 63],                           // 00110100x\n  [8, 0], [8, 0],                             // 00110101x\n  [8, 320], [8, 320],                         // 00110110x\n  [8, 384], [8, 384],                         // 00110111x\n  [5, 10], [5, 10], [5, 10], [5, 10],         // 00111xxxx\n  [5, 10], [5, 10], [5, 10], [5, 10],\n  [5, 10], [5, 10], [5, 10], [5, 10],\n  [5, 10], [5, 10], [5, 10], [5, 10],\n  [5, 11], [5, 11], [5, 11], [5, 11],         // 01000xxxx\n  [5, 11], [5, 11], [5, 11], [5, 11],\n  [5, 11], [5, 11], [5, 11], [5, 11],\n  [5, 11], [5, 11], [5, 11], [5, 11],\n  [7, 27], [7, 27], [7, 27], [7, 27],         // 0100100xx\n  [8, 59], [8, 59],                           // 01001010x\n  [8, 60], [8, 60],                           // 01001011x\n  [9, 1472],                                  // 010011000\n  [9, 1536],                                  // 010011001\n  [9, 1600],                                  // 010011010\n  [9, 1728],                                  // 010011011\n  [7, 18], [7, 18], [7, 18], [7, 18],         // 0100111xx\n  [7, 24], [7, 24], [7, 24], [7, 24],         // 0101000xx\n  [8, 49], [8, 49],                           // 01010010x\n  [8, 50], [8, 50],                           // 01010011x\n  [8, 51], [8, 51],                           // 01010100x\n  [8, 52], [8, 52],                           // 01010101x\n  [7, 25], [7, 25], [7, 25], [7, 25],         // 0101011xx\n  [8, 55], [8, 55],                           // 01011000x\n  [8, 56], [8, 56],                           // 01011001x\n  [8, 57], [8, 57],                           // 01011010x\n  [8, 58], [8, 58],                           // 01011011x\n  [6, 192], [6, 192], [6, 192], [6, 192],     // 010111xxx\n  [6, 192], [6, 192], [6, 192], [6, 192],\n  [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n  [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n  [8, 448], [8, 448],                         // 01100100x\n  [8, 512], [8, 512],                         // 01100101x\n  [9, 704],                                   // 011001100\n  [9, 768],                                   // 011001101\n  [8, 640], [8, 640],                         // 01100111x\n  [8, 576], [8, 576],                         // 01101000x\n  [9, 832],                                   // 011010010\n  [9, 896],                                   // 011010011\n  [9, 960],                                   // 011010100\n  [9, 1024],                                  // 011010101\n  [9, 1088],                                  // 011010110\n  [9, 1152],                                  // 011010111\n  [9, 1216],                                  // 011011000\n  [9, 1280],                                  // 011011001\n  [9, 1344],                                  // 011011010\n  [9, 1408],                                  // 011011011\n  [7, 256], [7, 256], [7, 256], [7, 256],     // 0110111xx\n  [4, 2], [4, 2], [4, 2], [4, 2],             // 0111xxxxx\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 3], [4, 3], [4, 3], [4, 3],             // 1000xxxxx\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [5, 128], [5, 128], [5, 128], [5, 128],     // 10010xxxx\n  [5, 128], [5, 128], [5, 128], [5, 128],\n  [5, 128], [5, 128], [5, 128], [5, 128],\n  [5, 128], [5, 128], [5, 128], [5, 128],\n  [5, 8], [5, 8], [5, 8], [5, 8],             // 10011xxxx\n  [5, 8], [5, 8], [5, 8], [5, 8],\n  [5, 8], [5, 8], [5, 8], [5, 8],\n  [5, 8], [5, 8], [5, 8], [5, 8],\n  [5, 9], [5, 9], [5, 9], [5, 9],             // 10100xxxx\n  [5, 9], [5, 9], [5, 9], [5, 9],\n  [5, 9], [5, 9], [5, 9], [5, 9],\n  [5, 9], [5, 9], [5, 9], [5, 9],\n  [6, 16], [6, 16], [6, 16], [6, 16],         // 101010xxx\n  [6, 16], [6, 16], [6, 16], [6, 16],\n  [6, 17], [6, 17], [6, 17], [6, 17],         // 101011xxx\n  [6, 17], [6, 17], [6, 17], [6, 17],\n  [4, 4], [4, 4], [4, 4], [4, 4],             // 1011xxxxx\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 5], [4, 5], [4, 5], [4, 5],             // 1100xxxxx\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [6, 14], [6, 14], [6, 14], [6, 14],         // 110100xxx\n  [6, 14], [6, 14], [6, 14], [6, 14],\n  [6, 15], [6, 15], [6, 15], [6, 15],         // 110101xxx\n  [6, 15], [6, 15], [6, 15], [6, 15],\n  [5, 64], [5, 64], [5, 64], [5, 64],         // 11011xxxx\n  [5, 64], [5, 64], [5, 64], [5, 64],\n  [5, 64], [5, 64], [5, 64], [5, 64],\n  [5, 64], [5, 64], [5, 64], [5, 64],\n  [4, 6], [4, 6], [4, 6], [4, 6],             // 1110xxxxx\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 7], [4, 7], [4, 7], [4, 7],             // 1111xxxxx\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7]\n];\n\n// prettier-ignore\nconst blackTable1 = [\n  [-1, -1], [-1, -1],                             // 000000000000x\n  [12, ccittEOL], [12, ccittEOL],                 // 000000000001x\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000001xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000010xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000011xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000100xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000101xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000110xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000111xx\n  [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n  [12, 1984], [12, 1984],                         // 000000010010x\n  [12, 2048], [12, 2048],                         // 000000010011x\n  [12, 2112], [12, 2112],                         // 000000010100x\n  [12, 2176], [12, 2176],                         // 000000010101x\n  [12, 2240], [12, 2240],                         // 000000010110x\n  [12, 2304], [12, 2304],                         // 000000010111x\n  [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n  [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n  [12, 2368], [12, 2368],                         // 000000011100x\n  [12, 2432], [12, 2432],                         // 000000011101x\n  [12, 2496], [12, 2496],                         // 000000011110x\n  [12, 2560], [12, 2560],                         // 000000011111x\n  [10, 18], [10, 18], [10, 18], [10, 18],         // 0000001000xxx\n  [10, 18], [10, 18], [10, 18], [10, 18],\n  [12, 52], [12, 52],                             // 000000100100x\n  [13, 640],                                      // 0000001001010\n  [13, 704],                                      // 0000001001011\n  [13, 768],                                      // 0000001001100\n  [13, 832],                                      // 0000001001101\n  [12, 55], [12, 55],                             // 000000100111x\n  [12, 56], [12, 56],                             // 000000101000x\n  [13, 1280],                                     // 0000001010010\n  [13, 1344],                                     // 0000001010011\n  [13, 1408],                                     // 0000001010100\n  [13, 1472],                                     // 0000001010101\n  [12, 59], [12, 59],                             // 000000101011x\n  [12, 60], [12, 60],                             // 000000101100x\n  [13, 1536],                                     // 0000001011010\n  [13, 1600],                                     // 0000001011011\n  [11, 24], [11, 24], [11, 24], [11, 24],         // 00000010111xx\n  [11, 25], [11, 25], [11, 25], [11, 25],         // 00000011000xx\n  [13, 1664],                                     // 0000001100100\n  [13, 1728],                                     // 0000001100101\n  [12, 320], [12, 320],                           // 000000110011x\n  [12, 384], [12, 384],                           // 000000110100x\n  [12, 448], [12, 448],                           // 000000110101x\n  [13, 512],                                      // 0000001101100\n  [13, 576],                                      // 0000001101101\n  [12, 53], [12, 53],                             // 000000110111x\n  [12, 54], [12, 54],                             // 000000111000x\n  [13, 896],                                      // 0000001110010\n  [13, 960],                                      // 0000001110011\n  [13, 1024],                                     // 0000001110100\n  [13, 1088],                                     // 0000001110101\n  [13, 1152],                                     // 0000001110110\n  [13, 1216],                                     // 0000001110111\n  [10, 64], [10, 64], [10, 64], [10, 64],         // 0000001111xxx\n  [10, 64], [10, 64], [10, 64], [10, 64]\n];\n\n// prettier-ignore\nconst blackTable2 = [\n  [8, 13], [8, 13], [8, 13], [8, 13],     // 00000100xxxx\n  [8, 13], [8, 13], [8, 13], [8, 13],\n  [8, 13], [8, 13], [8, 13], [8, 13],\n  [8, 13], [8, 13], [8, 13], [8, 13],\n  [11, 23], [11, 23],                     // 00000101000x\n  [12, 50],                               // 000001010010\n  [12, 51],                               // 000001010011\n  [12, 44],                               // 000001010100\n  [12, 45],                               // 000001010101\n  [12, 46],                               // 000001010110\n  [12, 47],                               // 000001010111\n  [12, 57],                               // 000001011000\n  [12, 58],                               // 000001011001\n  [12, 61],                               // 000001011010\n  [12, 256],                              // 000001011011\n  [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n  [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n  [12, 48],                               // 000001100100\n  [12, 49],                               // 000001100101\n  [12, 62],                               // 000001100110\n  [12, 63],                               // 000001100111\n  [12, 30],                               // 000001101000\n  [12, 31],                               // 000001101001\n  [12, 32],                               // 000001101010\n  [12, 33],                               // 000001101011\n  [12, 40],                               // 000001101100\n  [12, 41],                               // 000001101101\n  [11, 22], [11, 22],                     // 00000110111x\n  [8, 14], [8, 14], [8, 14], [8, 14],     // 00000111xxxx\n  [8, 14], [8, 14], [8, 14], [8, 14],\n  [8, 14], [8, 14], [8, 14], [8, 14],\n  [8, 14], [8, 14], [8, 14], [8, 14],\n  [7, 10], [7, 10], [7, 10], [7, 10],     // 0000100xxxxx\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 11], [7, 11], [7, 11], [7, 11],     // 0000101xxxxx\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [9, 15], [9, 15], [9, 15], [9, 15],     // 000011000xxx\n  [9, 15], [9, 15], [9, 15], [9, 15],\n  [12, 128],                              // 000011001000\n  [12, 192],                              // 000011001001\n  [12, 26],                               // 000011001010\n  [12, 27],                               // 000011001011\n  [12, 28],                               // 000011001100\n  [12, 29],                               // 000011001101\n  [11, 19], [11, 19],                     // 00001100111x\n  [11, 20], [11, 20],                     // 00001101000x\n  [12, 34],                               // 000011010010\n  [12, 35],                               // 000011010011\n  [12, 36],                               // 000011010100\n  [12, 37],                               // 000011010101\n  [12, 38],                               // 000011010110\n  [12, 39],                               // 000011010111\n  [11, 21], [11, 21],                     // 00001101100x\n  [12, 42],                               // 000011011010\n  [12, 43],                               // 000011011011\n  [10, 0], [10, 0], [10, 0], [10, 0],     // 0000110111xx\n  [7, 12], [7, 12], [7, 12], [7, 12],     // 0000111xxxxx\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12]\n];\n\n// prettier-ignore\nconst blackTable3 = [\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n  [6, 9],                                 // 000100\n  [6, 8],                                 // 000101\n  [5, 7], [5, 7],                         // 00011x\n  [4, 6], [4, 6], [4, 6], [4, 6],         // 0010xx\n  [4, 5], [4, 5], [4, 5], [4, 5],         // 0011xx\n  [3, 1], [3, 1], [3, 1], [3, 1],         // 010xxx\n  [3, 1], [3, 1], [3, 1], [3, 1],\n  [3, 4], [3, 4], [3, 4], [3, 4],         // 011xxx\n  [3, 4], [3, 4], [3, 4], [3, 4],\n  [2, 3], [2, 3], [2, 3], [2, 3],         // 10xxxx\n  [2, 3], [2, 3], [2, 3], [2, 3],\n  [2, 3], [2, 3], [2, 3], [2, 3],\n  [2, 3], [2, 3], [2, 3], [2, 3],\n  [2, 2], [2, 2], [2, 2], [2, 2],         // 11xxxx\n  [2, 2], [2, 2], [2, 2], [2, 2],\n  [2, 2], [2, 2], [2, 2], [2, 2],\n  [2, 2], [2, 2], [2, 2], [2, 2]\n];\n\n/**\n * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n * @param {Object} [options] - Decoding options.\n */\nclass CCITTFaxDecoder {\n  constructor(source, options = {}) {\n    if (!source || typeof source.next !== \"function\") {\n      throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n    }\n    this.source = source;\n    this.eof = false;\n\n    this.encoding = options.K || 0;\n    this.eoline = options.EndOfLine || false;\n    this.byteAlign = options.EncodedByteAlign || false;\n    this.columns = options.Columns || 1728;\n    this.rows = options.Rows || 0;\n    let eoblock = options.EndOfBlock;\n    if (eoblock === null || eoblock === undefined) {\n      eoblock = true;\n    }\n    this.eoblock = eoblock;\n    this.black = options.BlackIs1 || false;\n\n    this.codingLine = new Uint32Array(this.columns + 1);\n    this.refLine = new Uint32Array(this.columns + 2);\n\n    this.codingLine[0] = this.columns;\n    this.codingPos = 0;\n\n    this.row = 0;\n    this.nextLine2D = this.encoding < 0;\n    this.inputBits = 0;\n    this.inputBuf = 0;\n    this.outputBits = 0;\n    this.rowsDone = false;\n\n    let code1;\n    while ((code1 = this._lookBits(12)) === 0) {\n      this._eatBits(1);\n    }\n    if (code1 === 1) {\n      this._eatBits(12);\n    }\n    if (this.encoding > 0) {\n      this.nextLine2D = !this._lookBits(1);\n      this._eatBits(1);\n    }\n  }\n\n  readNextChar() {\n    if (this.eof) {\n      return -1;\n    }\n    const refLine = this.refLine;\n    const codingLine = this.codingLine;\n    const columns = this.columns;\n\n    let refPos, blackPixels, bits, i;\n\n    if (this.outputBits === 0) {\n      if (this.rowsDone) {\n        this.eof = true;\n      }\n      if (this.eof) {\n        return -1;\n      }\n      this.err = false;\n\n      let code1, code2, code3;\n      if (this.nextLine2D) {\n        for (i = 0; codingLine[i] < columns; ++i) {\n          refLine[i] = codingLine[i];\n        }\n        refLine[i++] = columns;\n        refLine[i] = columns;\n        codingLine[0] = 0;\n        this.codingPos = 0;\n        refPos = 0;\n        blackPixels = 0;\n\n        while (codingLine[this.codingPos] < columns) {\n          code1 = this._getTwoDimCode();\n          switch (code1) {\n            case twoDimPass:\n              this._addPixels(refLine[refPos + 1], blackPixels);\n              if (refLine[refPos + 1] < columns) {\n                refPos += 2;\n              }\n              break;\n            case twoDimHoriz:\n              code1 = code2 = 0;\n              if (blackPixels) {\n                do {\n                  code1 += code3 = this._getBlackCode();\n                } while (code3 >= 64);\n                do {\n                  code2 += code3 = this._getWhiteCode();\n                } while (code3 >= 64);\n              } else {\n                do {\n                  code1 += code3 = this._getWhiteCode();\n                } while (code3 >= 64);\n                do {\n                  code2 += code3 = this._getBlackCode();\n                } while (code3 >= 64);\n              }\n              this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n              if (codingLine[this.codingPos] < columns) {\n                this._addPixels(\n                  codingLine[this.codingPos] + code2,\n                  blackPixels ^ 1\n                );\n              }\n              while (\n                refLine[refPos] <= codingLine[this.codingPos] &&\n                refLine[refPos] < columns\n              ) {\n                refPos += 2;\n              }\n              break;\n            case twoDimVertR3:\n              this._addPixels(refLine[refPos] + 3, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertR2:\n              this._addPixels(refLine[refPos] + 2, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertR1:\n              this._addPixels(refLine[refPos] + 1, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVert0:\n              this._addPixels(refLine[refPos], blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertL3:\n              this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertL2:\n              this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertL1:\n              this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case ccittEOF:\n              this._addPixels(columns, 0);\n              this.eof = true;\n              break;\n            default:\n              info(\"bad 2d code\");\n              this._addPixels(columns, 0);\n              this.err = true;\n          }\n        }\n      } else {\n        codingLine[0] = 0;\n        this.codingPos = 0;\n        blackPixels = 0;\n        while (codingLine[this.codingPos] < columns) {\n          code1 = 0;\n          if (blackPixels) {\n            do {\n              code1 += code3 = this._getBlackCode();\n            } while (code3 >= 64);\n          } else {\n            do {\n              code1 += code3 = this._getWhiteCode();\n            } while (code3 >= 64);\n          }\n          this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n          blackPixels ^= 1;\n        }\n      }\n\n      let gotEOL = false;\n\n      if (this.byteAlign) {\n        this.inputBits &= ~7;\n      }\n\n      if (!this.eoblock && this.row === this.rows - 1) {\n        this.rowsDone = true;\n      } else {\n        code1 = this._lookBits(12);\n        if (this.eoline) {\n          while (code1 !== ccittEOF && code1 !== 1) {\n            this._eatBits(1);\n            code1 = this._lookBits(12);\n          }\n        } else {\n          while (code1 === 0) {\n            this._eatBits(1);\n            code1 = this._lookBits(12);\n          }\n        }\n        if (code1 === 1) {\n          this._eatBits(12);\n          gotEOL = true;\n        } else if (code1 === ccittEOF) {\n          this.eof = true;\n        }\n      }\n\n      if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n        this.nextLine2D = !this._lookBits(1);\n        this._eatBits(1);\n      }\n\n      if (this.eoblock && gotEOL && this.byteAlign) {\n        code1 = this._lookBits(12);\n        if (code1 === 1) {\n          this._eatBits(12);\n          if (this.encoding > 0) {\n            this._lookBits(1);\n            this._eatBits(1);\n          }\n          if (this.encoding >= 0) {\n            for (i = 0; i < 4; ++i) {\n              code1 = this._lookBits(12);\n              if (code1 !== 1) {\n                info(\"bad rtc code: \" + code1);\n              }\n              this._eatBits(12);\n              if (this.encoding > 0) {\n                this._lookBits(1);\n                this._eatBits(1);\n              }\n            }\n          }\n          this.eof = true;\n        }\n      } else if (this.err && this.eoline) {\n        while (true) {\n          code1 = this._lookBits(13);\n          if (code1 === ccittEOF) {\n            this.eof = true;\n            return -1;\n          }\n          if (code1 >> 1 === 1) {\n            break;\n          }\n          this._eatBits(1);\n        }\n        this._eatBits(12);\n        if (this.encoding > 0) {\n          this._eatBits(1);\n          this.nextLine2D = !(code1 & 1);\n        }\n      }\n\n      if (codingLine[0] > 0) {\n        this.outputBits = codingLine[(this.codingPos = 0)];\n      } else {\n        this.outputBits = codingLine[(this.codingPos = 1)];\n      }\n      this.row++;\n    }\n\n    let c;\n    if (this.outputBits >= 8) {\n      c = this.codingPos & 1 ? 0 : 0xff;\n      this.outputBits -= 8;\n      if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n        this.codingPos++;\n        this.outputBits =\n          codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n      }\n    } else {\n      bits = 8;\n      c = 0;\n      do {\n        if (typeof this.outputBits !== \"number\") {\n          throw new FormatError(\n            'Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.'\n          );\n        }\n\n        if (this.outputBits > bits) {\n          c <<= bits;\n          if (!(this.codingPos & 1)) {\n            c |= 0xff >> (8 - bits);\n          }\n          this.outputBits -= bits;\n          bits = 0;\n        } else {\n          c <<= this.outputBits;\n          if (!(this.codingPos & 1)) {\n            c |= 0xff >> (8 - this.outputBits);\n          }\n          bits -= this.outputBits;\n          this.outputBits = 0;\n          if (codingLine[this.codingPos] < columns) {\n            this.codingPos++;\n            this.outputBits =\n              codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n          } else if (bits > 0) {\n            c <<= bits;\n            bits = 0;\n          }\n        }\n      } while (bits);\n    }\n    if (this.black) {\n      c ^= 0xff;\n    }\n    return c;\n  }\n\n  /**\n   * @private\n   */\n  _addPixels(a1, blackPixels) {\n    const codingLine = this.codingLine;\n    let codingPos = this.codingPos;\n\n    if (a1 > codingLine[codingPos]) {\n      if (a1 > this.columns) {\n        info(\"row is wrong length\");\n        this.err = true;\n        a1 = this.columns;\n      }\n      if ((codingPos & 1) ^ blackPixels) {\n        ++codingPos;\n      }\n\n      codingLine[codingPos] = a1;\n    }\n    this.codingPos = codingPos;\n  }\n\n  /**\n   * @private\n   */\n  _addPixelsNeg(a1, blackPixels) {\n    const codingLine = this.codingLine;\n    let codingPos = this.codingPos;\n\n    if (a1 > codingLine[codingPos]) {\n      if (a1 > this.columns) {\n        info(\"row is wrong length\");\n        this.err = true;\n        a1 = this.columns;\n      }\n      if ((codingPos & 1) ^ blackPixels) {\n        ++codingPos;\n      }\n\n      codingLine[codingPos] = a1;\n    } else if (a1 < codingLine[codingPos]) {\n      if (a1 < 0) {\n        info(\"invalid code\");\n        this.err = true;\n        a1 = 0;\n      }\n      while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n        --codingPos;\n      }\n      codingLine[codingPos] = a1;\n    }\n\n    this.codingPos = codingPos;\n  }\n\n  /**\n   * This function returns the code found from the table.\n   * The start and end parameters set the boundaries for searching the table.\n   * The limit parameter is optional. Function returns an array with three\n   * values. The first array element indicates whether a valid code is being\n   * returned. The second array element is the actual code. The third array\n   * element indicates whether EOF was reached.\n   * @private\n   */\n  _findTableCode(start, end, table, limit) {\n    const limitValue = limit || 0;\n    for (let i = start; i <= end; ++i) {\n      let code = this._lookBits(i);\n      if (code === ccittEOF) {\n        return [true, 1, false];\n      }\n      if (i < end) {\n        code <<= end - i;\n      }\n      if (!limitValue || code >= limitValue) {\n        const p = table[code - limitValue];\n        if (p[0] === i) {\n          this._eatBits(i);\n          return [true, p[1], true];\n        }\n      }\n    }\n    return [false, 0, false];\n  }\n\n  /**\n   * @private\n   */\n  _getTwoDimCode() {\n    let code = 0;\n    let p;\n    if (this.eoblock) {\n      code = this._lookBits(7);\n      p = twoDimTable[code];\n      if (p && p[0] > 0) {\n        this._eatBits(p[0]);\n        return p[1];\n      }\n    } else {\n      const result = this._findTableCode(1, 7, twoDimTable);\n      if (result[0] && result[2]) {\n        return result[1];\n      }\n    }\n    info(\"Bad two dim code\");\n    return ccittEOF;\n  }\n\n  /**\n   * @private\n   */\n  _getWhiteCode() {\n    let code = 0;\n    let p;\n    if (this.eoblock) {\n      code = this._lookBits(12);\n      if (code === ccittEOF) {\n        return 1;\n      }\n\n      if (code >> 5 === 0) {\n        p = whiteTable1[code];\n      } else {\n        p = whiteTable2[code >> 3];\n      }\n\n      if (p[0] > 0) {\n        this._eatBits(p[0]);\n        return p[1];\n      }\n    } else {\n      let result = this._findTableCode(1, 9, whiteTable2);\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(11, 12, whiteTable1);\n      if (result[0]) {\n        return result[1];\n      }\n    }\n    info(\"bad white code\");\n    this._eatBits(1);\n    return 1;\n  }\n\n  /**\n   * @private\n   */\n  _getBlackCode() {\n    let code, p;\n    if (this.eoblock) {\n      code = this._lookBits(13);\n      if (code === ccittEOF) {\n        return 1;\n      }\n      if (code >> 7 === 0) {\n        p = blackTable1[code];\n      } else if (code >> 9 === 0 && code >> 7 !== 0) {\n        p = blackTable2[(code >> 1) - 64];\n      } else {\n        p = blackTable3[code >> 7];\n      }\n\n      if (p[0] > 0) {\n        this._eatBits(p[0]);\n        return p[1];\n      }\n    } else {\n      let result = this._findTableCode(2, 6, blackTable3);\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(7, 12, blackTable2, 64);\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(10, 13, blackTable1);\n      if (result[0]) {\n        return result[1];\n      }\n    }\n    info(\"bad black code\");\n    this._eatBits(1);\n    return 1;\n  }\n\n  /**\n   * @private\n   */\n  _lookBits(n) {\n    let c;\n    while (this.inputBits < n) {\n      if ((c = this.source.next()) === -1) {\n        if (this.inputBits === 0) {\n          return ccittEOF;\n        }\n        return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n      }\n      this.inputBuf = (this.inputBuf << 8) | c;\n      this.inputBits += 8;\n    }\n    return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n  }\n\n  /**\n   * @private\n   */\n  _eatBits(n) {\n    if ((this.inputBits -= n) < 0) {\n      this.inputBits = 0;\n    }\n  }\n}\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nconst codeLenCodeMap = new Int32Array([\n  16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,\n]);\n\nconst lengthDecode = new Int32Array([\n  0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n  0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n  0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n  0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102,\n]);\n\nconst distDecode = new Int32Array([\n  0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n  0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n  0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n  0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001,\n]);\n\nconst fixedLitCodeTab = [\n  new Int32Array([\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n    0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n    0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n    0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n    0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n    0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n    0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n    0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n    0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n    0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n    0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n    0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n    0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n    0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n    0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n    0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n    0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n    0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n    0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n    0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n    0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n    0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n    0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n    0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n    0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n    0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n    0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n    0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n    0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n    0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n    0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n    0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n    0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n    0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n    0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n    0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n    0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n    0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n    0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n    0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n    0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n    0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n    0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n    0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n    0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n    0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n    0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n    0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n    0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff,\n  ]),\n  9,\n];\n\nconst fixedDistCodeTab = [\n  new Int32Array([\n    0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n    0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n    0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n    0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000,\n  ]),\n  5,\n];\n\nclass FlateStream extends DecodeStream {\n  constructor(str, maybeLength) {\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n\n    const cmf = str.getByte();\n    const flg = str.getByte();\n    if (cmf === -1 || flg === -1) {\n      throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n    }\n    if ((cmf & 0x0f) !== 0x08) {\n      throw new FormatError(\n        `Unknown compression method in flate stream: ${cmf}, ${flg}`\n      );\n    }\n    if (((cmf << 8) + flg) % 31 !== 0) {\n      throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n    }\n    if (flg & 0x20) {\n      throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n    }\n\n    this.codeSize = 0;\n    this.codeBuf = 0;\n  }\n\n  getBits(bits) {\n    const str = this.str;\n    let codeSize = this.codeSize;\n    let codeBuf = this.codeBuf;\n\n    let b;\n    while (codeSize < bits) {\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad encoding in flate stream\");\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    b = codeBuf & ((1 << bits) - 1);\n    this.codeBuf = codeBuf >> bits;\n    this.codeSize = codeSize -= bits;\n\n    return b;\n  }\n\n  getCode(table) {\n    const str = this.str;\n    const codes = table[0];\n    const maxLen = table[1];\n    let codeSize = this.codeSize;\n    let codeBuf = this.codeBuf;\n\n    let b;\n    while (codeSize < maxLen) {\n      if ((b = str.getByte()) === -1) {\n        // premature end of stream. code might however still be valid.\n        // codeSize < codeLen check below guards against incomplete codeVal.\n        break;\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    const code = codes[codeBuf & ((1 << maxLen) - 1)];\n    const codeLen = code >> 16;\n    const codeVal = code & 0xffff;\n    if (codeLen < 1 || codeSize < codeLen) {\n      throw new FormatError(\"Bad encoding in flate stream\");\n    }\n    this.codeBuf = codeBuf >> codeLen;\n    this.codeSize = codeSize - codeLen;\n    return codeVal;\n  }\n\n  generateHuffmanTable(lengths) {\n    const n = lengths.length;\n\n    // find max code length\n    let maxLen = 0;\n    let i;\n    for (i = 0; i < n; ++i) {\n      if (lengths[i] > maxLen) {\n        maxLen = lengths[i];\n      }\n    }\n\n    // build the table\n    const size = 1 << maxLen;\n    const codes = new Int32Array(size);\n    for (\n      let len = 1, code = 0, skip = 2;\n      len <= maxLen;\n      ++len, code <<= 1, skip <<= 1\n    ) {\n      for (let val = 0; val < n; ++val) {\n        if (lengths[val] === len) {\n          // bit-reverse the code\n          let code2 = 0;\n          let t = code;\n          for (i = 0; i < len; ++i) {\n            code2 = (code2 << 1) | (t & 1);\n            t >>= 1;\n          }\n\n          // fill the table entries\n          for (i = code2; i < size; i += skip) {\n            codes[i] = (len << 16) | val;\n          }\n          ++code;\n        }\n      }\n    }\n\n    return [codes, maxLen];\n  }\n\n  readBlock() {\n    let buffer, len;\n    const str = this.str;\n    // read block header\n    let hdr = this.getBits(3);\n    if (hdr & 1) {\n      this.eof = true;\n    }\n    hdr >>= 1;\n\n    if (hdr === 0) {\n      // uncompressed block\n      let b;\n\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      let blockLen = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      blockLen |= b << 8;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      let check = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      check |= b << 8;\n      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n        // Ignoring error for bad \"empty\" block (see issue 1277)\n        throw new FormatError(\"Bad uncompressed block length in flate stream\");\n      }\n\n      this.codeBuf = 0;\n      this.codeSize = 0;\n\n      const bufferLength = this.bufferLength,\n        end = bufferLength + blockLen;\n      buffer = this.ensureBuffer(end);\n      this.bufferLength = end;\n\n      if (blockLen === 0) {\n        if (str.peekByte() === -1) {\n          this.eof = true;\n        }\n      } else {\n        const block = str.getBytes(blockLen);\n        buffer.set(block, bufferLength);\n        if (block.length < blockLen) {\n          this.eof = true;\n        }\n      }\n      return;\n    }\n\n    let litCodeTable;\n    let distCodeTable;\n    if (hdr === 1) {\n      // compressed block, fixed codes\n      litCodeTable = fixedLitCodeTab;\n      distCodeTable = fixedDistCodeTab;\n    } else if (hdr === 2) {\n      // compressed block, dynamic codes\n      const numLitCodes = this.getBits(5) + 257;\n      const numDistCodes = this.getBits(5) + 1;\n      const numCodeLenCodes = this.getBits(4) + 4;\n\n      // build the code lengths code table\n      const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n      let i;\n      for (i = 0; i < numCodeLenCodes; ++i) {\n        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n      }\n      const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n      // build the literal and distance code tables\n      len = 0;\n      i = 0;\n      const codes = numLitCodes + numDistCodes;\n      const codeLengths = new Uint8Array(codes);\n      let bitsLength, bitsOffset, what;\n      while (i < codes) {\n        const code = this.getCode(codeLenCodeTab);\n        if (code === 16) {\n          bitsLength = 2;\n          bitsOffset = 3;\n          what = len;\n        } else if (code === 17) {\n          bitsLength = 3;\n          bitsOffset = 3;\n          what = len = 0;\n        } else if (code === 18) {\n          bitsLength = 7;\n          bitsOffset = 11;\n          what = len = 0;\n        } else {\n          codeLengths[i++] = len = code;\n          continue;\n        }\n\n        let repeatLength = this.getBits(bitsLength) + bitsOffset;\n        while (repeatLength-- > 0) {\n          codeLengths[i++] = what;\n        }\n      }\n\n      litCodeTable = this.generateHuffmanTable(\n        codeLengths.subarray(0, numLitCodes)\n      );\n      distCodeTable = this.generateHuffmanTable(\n        codeLengths.subarray(numLitCodes, codes)\n      );\n    } else {\n      throw new FormatError(\"Unknown block type in flate stream\");\n    }\n\n    buffer = this.buffer;\n    let limit = buffer ? buffer.length : 0;\n    let pos = this.bufferLength;\n    while (true) {\n      let code1 = this.getCode(litCodeTable);\n      if (code1 < 256) {\n        if (pos + 1 >= limit) {\n          buffer = this.ensureBuffer(pos + 1);\n          limit = buffer.length;\n        }\n        buffer[pos++] = code1;\n        continue;\n      }\n      if (code1 === 256) {\n        this.bufferLength = pos;\n        return;\n      }\n      code1 -= 257;\n      code1 = lengthDecode[code1];\n      let code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      len = (code1 & 0xffff) + code2;\n      code1 = this.getCode(distCodeTable);\n      code1 = distDecode[code1];\n      code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      const dist = (code1 & 0xffff) + code2;\n      if (pos + len >= limit) {\n        buffer = this.ensureBuffer(pos + len);\n        limit = buffer.length;\n      }\n      for (let k = 0; k < len; ++k, ++pos) {\n        buffer[pos] = buffer[pos - dist];\n      }\n    }\n  }\n}\n\nexport { FlateStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { Jbig2Image } from \"./jbig2.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass Jbig2Stream extends DecodeStream {\n  constructor(stream, maybeLength, params) {\n    super(maybeLength);\n\n    this.stream = stream;\n    this.dict = stream.dict;\n    this.maybeLength = maybeLength;\n    this.params = params;\n  }\n\n  get bytes() {\n    // If `this.maybeLength` is null, we'll get the entire stream.\n    return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n  }\n\n  ensureBuffer(requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  }\n\n  readBlock() {\n    if (this.eof) {\n      return;\n    }\n    const jbig2Image = new Jbig2Image();\n\n    const chunks = [];\n    if (this.params instanceof Dict) {\n      const globalsStream = this.params.get(\"JBIG2Globals\");\n      if (globalsStream instanceof BaseStream) {\n        const globals = globalsStream.getBytes();\n        chunks.push({ data: globals, start: 0, end: globals.length });\n      }\n    }\n    chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\n    const data = jbig2Image.parseChunks(chunks);\n    const dataLength = data.length;\n\n    // JBIG2 had black as 1 and white as 0, inverting the colors\n    for (let i = 0; i < dataLength; i++) {\n      data[i] ^= 0xff;\n    }\n    this.buffer = data;\n    this.bufferLength = dataLength;\n    this.eof = true;\n  }\n}\n\nexport { Jbig2Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n  constructor(msg) {\n    super(`JBIG2 error: ${msg}`, \"Jbig2Error\");\n  }\n}\n\n// Utility data structures\nclass ContextCache {\n  getContexts(id) {\n    if (id in this) {\n      return this[id];\n    }\n    return (this[id] = new Int8Array(1 << 16));\n  }\n}\n\nclass DecodingContext {\n  constructor(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n  }\n\n  get decoder() {\n    const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n    return shadow(this, \"decoder\", decoder);\n  }\n\n  get contextCache() {\n    const cache = new ContextCache();\n    return shadow(this, \"contextCache\", cache);\n  }\n}\n\n// Annex A. Arithmetic Integer Decoding Procedure\n// A.2 Procedure for decoding values\nfunction decodeInteger(contextCache, procedure, decoder) {\n  const contexts = contextCache.getContexts(procedure);\n  let prev = 1;\n\n  function readBits(length) {\n    let v = 0;\n    for (let i = 0; i < length; i++) {\n      const bit = decoder.readBit(contexts, prev);\n      prev = prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n      v = (v << 1) | bit;\n    }\n    return v >>> 0;\n  }\n\n  const sign = readBits(1);\n  // prettier-ignore\n  /* eslint-disable no-nested-ternary */\n  const value = readBits(1) ?\n                  (readBits(1) ?\n                    (readBits(1) ?\n                      (readBits(1) ?\n                        (readBits(1) ?\n                          (readBits(32) + 4436) :\n                        readBits(12) + 340) :\n                      readBits(8) + 84) :\n                    readBits(6) + 20) :\n                  readBits(4) + 4) :\n                readBits(2);\n  /* eslint-enable no-nested-ternary */\n  if (sign === 0) {\n    return value;\n  } else if (value > 0) {\n    return -value;\n  }\n  return null;\n}\n\n// A.3 The IAID decoding procedure\nfunction decodeIAID(contextCache, decoder, codeLength) {\n  const contexts = contextCache.getContexts(\"IAID\");\n\n  let prev = 1;\n  for (let i = 0; i < codeLength; i++) {\n    const bit = decoder.readBit(contexts, prev);\n    prev = (prev << 1) | bit;\n  }\n  if (codeLength < 31) {\n    return prev & ((1 << codeLength) - 1);\n  }\n  return prev & 0x7fffffff;\n}\n\n// 7.3 Segment types\nconst SegmentTypes = [\n  \"SymbolDictionary\",\n  null,\n  null,\n  null,\n  \"IntermediateTextRegion\",\n  null,\n  \"ImmediateTextRegion\",\n  \"ImmediateLosslessTextRegion\",\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  \"PatternDictionary\",\n  null,\n  null,\n  null,\n  \"IntermediateHalftoneRegion\",\n  null,\n  \"ImmediateHalftoneRegion\",\n  \"ImmediateLosslessHalftoneRegion\",\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  \"IntermediateGenericRegion\",\n  null,\n  \"ImmediateGenericRegion\",\n  \"ImmediateLosslessGenericRegion\",\n  \"IntermediateGenericRefinementRegion\",\n  null,\n  \"ImmediateGenericRefinementRegion\",\n  \"ImmediateLosslessGenericRefinementRegion\",\n  null,\n  null,\n  null,\n  null,\n  \"PageInformation\",\n  \"EndOfPage\",\n  \"EndOfStripe\",\n  \"EndOfFile\",\n  \"Profiles\",\n  \"Tables\",\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  \"Extension\",\n];\n\nconst CodingTemplates = [\n  [\n    { x: -1, y: -2 },\n    { x: 0, y: -2 },\n    { x: 1, y: -2 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: 2, y: -1 },\n    { x: -4, y: 0 },\n    { x: -3, y: 0 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n  [\n    { x: -1, y: -2 },\n    { x: 0, y: -2 },\n    { x: 1, y: -2 },\n    { x: 2, y: -2 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: 2, y: -1 },\n    { x: -3, y: 0 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n  [\n    { x: -1, y: -2 },\n    { x: 0, y: -2 },\n    { x: 1, y: -2 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n  [\n    { x: -3, y: -1 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: -4, y: 0 },\n    { x: -3, y: 0 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n];\n\nconst RefinementTemplates = [\n  {\n    coding: [\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -1, y: 0 },\n    ],\n    reference: [\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -1, y: 0 },\n      { x: 0, y: 0 },\n      { x: 1, y: 0 },\n      { x: -1, y: 1 },\n      { x: 0, y: 1 },\n      { x: 1, y: 1 },\n    ],\n  },\n  {\n    coding: [\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -1, y: 0 },\n    ],\n    reference: [\n      { x: 0, y: -1 },\n      { x: -1, y: 0 },\n      { x: 0, y: 0 },\n      { x: 1, y: 0 },\n      { x: 0, y: 1 },\n      { x: 1, y: 1 },\n    ],\n  },\n];\n\n// See 6.2.5.7 Decoding the bitmap.\nconst ReusedContexts = [\n  0x9b25, // 10011 0110010 0101\n  0x0795, // 0011 110010 101\n  0x00e5, // 001 11001 01\n  0x0195, // 011001 0101\n];\n\nconst RefinementReusedContexts = [\n  0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n  0x0008, // '0000' + '001000'\n];\n\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GB\");\n  const bitmap = [];\n  let contextLabel, i, j, pixel, row, row1, row2;\n\n  // ...ooooo....\n  // ..ooooooo... Context template for current pixel (X)\n  // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n  const OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n  for (i = 0; i < height; i++) {\n    row = bitmap[i] = new Uint8Array(width);\n    row1 = i < 1 ? row : bitmap[i - 1];\n    row2 = i < 2 ? row : bitmap[i - 2];\n\n    // At the beginning of each row:\n    // Fill contextLabel with pixels that are above/right of (X)\n    contextLabel =\n      (row2[0] << 13) |\n      (row2[1] << 12) |\n      (row2[2] << 11) |\n      (row1[0] << 7) |\n      (row1[1] << 6) |\n      (row1[2] << 5) |\n      (row1[3] << 4);\n\n    for (j = 0; j < width; j++) {\n      row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n      // At each pixel: Clear contextLabel pixels that are shifted\n      // out of the context, then add new ones.\n      contextLabel =\n        ((contextLabel & OLD_PIXEL_MASK) << 1) |\n        (j + 3 < width ? row2[j + 3] << 11 : 0) |\n        (j + 4 < width ? row1[j + 4] << 4 : 0) |\n        pixel;\n    }\n  }\n\n  return bitmap;\n}\n\n// 6.2 Generic Region Decoding Procedure\nfunction decodeBitmap(\n  mmr,\n  width,\n  height,\n  templateIndex,\n  prediction,\n  skip,\n  at,\n  decodingContext\n) {\n  if (mmr) {\n    const input = new Reader(\n      decodingContext.data,\n      decodingContext.start,\n      decodingContext.end\n    );\n    return decodeMMRBitmap(input, width, height, false);\n  }\n\n  // Use optimized version for the most common case\n  if (\n    templateIndex === 0 &&\n    !skip &&\n    !prediction &&\n    at.length === 4 &&\n    at[0].x === 3 &&\n    at[0].y === -1 &&\n    at[1].x === -3 &&\n    at[1].y === -1 &&\n    at[2].x === 2 &&\n    at[2].y === -2 &&\n    at[3].x === -2 &&\n    at[3].y === -2\n  ) {\n    return decodeBitmapTemplate0(width, height, decodingContext);\n  }\n\n  const useskip = !!skip;\n  const template = CodingTemplates[templateIndex].concat(at);\n\n  // Sorting is non-standard, and it is not required. But sorting increases\n  // the number of template bits that can be reused from the previous\n  // contextLabel in the main loop.\n  template.sort(function (a, b) {\n    return a.y - b.y || a.x - b.x;\n  });\n\n  const templateLength = template.length;\n  const templateX = new Int8Array(templateLength);\n  const templateY = new Int8Array(templateLength);\n  const changingTemplateEntries = [];\n  let reuseMask = 0,\n    minX = 0,\n    maxX = 0,\n    minY = 0;\n  let c, k;\n\n  for (k = 0; k < templateLength; k++) {\n    templateX[k] = template[k].x;\n    templateY[k] = template[k].y;\n    minX = Math.min(minX, template[k].x);\n    maxX = Math.max(maxX, template[k].x);\n    minY = Math.min(minY, template[k].y);\n    // Check if the template pixel appears in two consecutive context labels,\n    // so it can be reused. Otherwise, we add it to the list of changing\n    // template entries.\n    if (\n      k < templateLength - 1 &&\n      template[k].y === template[k + 1].y &&\n      template[k].x === template[k + 1].x - 1\n    ) {\n      reuseMask |= 1 << (templateLength - 1 - k);\n    } else {\n      changingTemplateEntries.push(k);\n    }\n  }\n  const changingEntriesLength = changingTemplateEntries.length;\n\n  const changingTemplateX = new Int8Array(changingEntriesLength);\n  const changingTemplateY = new Int8Array(changingEntriesLength);\n  const changingTemplateBit = new Uint16Array(changingEntriesLength);\n  for (c = 0; c < changingEntriesLength; c++) {\n    k = changingTemplateEntries[c];\n    changingTemplateX[c] = template[k].x;\n    changingTemplateY[c] = template[k].y;\n    changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n  }\n\n  // Get the safe bounding box edges from the width, height, minX, maxX, minY\n  const sbb_left = -minX;\n  const sbb_top = -minY;\n  const sbb_right = width - maxX;\n\n  const pseudoPixelContext = ReusedContexts[templateIndex];\n  let row = new Uint8Array(width);\n  const bitmap = [];\n\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n  let ltp = 0,\n    j,\n    i0,\n    j0,\n    contextLabel = 0,\n    bit,\n    shift;\n  for (let i = 0; i < height; i++) {\n    if (prediction) {\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\n      ltp ^= sltp;\n      if (ltp) {\n        bitmap.push(row); // duplicate previous row\n        continue;\n      }\n    }\n    row = new Uint8Array(row);\n    bitmap.push(row);\n    for (j = 0; j < width; j++) {\n      if (useskip && skip[i][j]) {\n        row[j] = 0;\n        continue;\n      }\n      // Are we in the middle of a scanline, so we can reuse contextLabel\n      // bits?\n      if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n        // If yes, we can just shift the bits that are reusable and only\n        // fetch the remaining ones.\n        contextLabel = (contextLabel << 1) & reuseMask;\n        for (k = 0; k < changingEntriesLength; k++) {\n          i0 = i + changingTemplateY[k];\n          j0 = j + changingTemplateX[k];\n          bit = bitmap[i0][j0];\n          if (bit) {\n            bit = changingTemplateBit[k];\n            contextLabel |= bit;\n          }\n        }\n      } else {\n        // compute the contextLabel from scratch\n        contextLabel = 0;\n        shift = templateLength - 1;\n        for (k = 0; k < templateLength; k++, shift--) {\n          j0 = j + templateX[k];\n          if (j0 >= 0 && j0 < width) {\n            i0 = i + templateY[k];\n            if (i0 >= 0) {\n              bit = bitmap[i0][j0];\n              if (bit) {\n                contextLabel |= bit << shift;\n              }\n            }\n          }\n        }\n      }\n      const pixel = decoder.readBit(contexts, contextLabel);\n      row[j] = pixel;\n    }\n  }\n  return bitmap;\n}\n\n// 6.3.2 Generic Refinement Region Decoding Procedure\nfunction decodeRefinement(\n  width,\n  height,\n  templateIndex,\n  referenceBitmap,\n  offsetX,\n  offsetY,\n  prediction,\n  at,\n  decodingContext\n) {\n  let codingTemplate = RefinementTemplates[templateIndex].coding;\n  if (templateIndex === 0) {\n    codingTemplate = codingTemplate.concat([at[0]]);\n  }\n  const codingTemplateLength = codingTemplate.length;\n  const codingTemplateX = new Int32Array(codingTemplateLength);\n  const codingTemplateY = new Int32Array(codingTemplateLength);\n  let k;\n  for (k = 0; k < codingTemplateLength; k++) {\n    codingTemplateX[k] = codingTemplate[k].x;\n    codingTemplateY[k] = codingTemplate[k].y;\n  }\n\n  let referenceTemplate = RefinementTemplates[templateIndex].reference;\n  if (templateIndex === 0) {\n    referenceTemplate = referenceTemplate.concat([at[1]]);\n  }\n  const referenceTemplateLength = referenceTemplate.length;\n  const referenceTemplateX = new Int32Array(referenceTemplateLength);\n  const referenceTemplateY = new Int32Array(referenceTemplateLength);\n  for (k = 0; k < referenceTemplateLength; k++) {\n    referenceTemplateX[k] = referenceTemplate[k].x;\n    referenceTemplateY[k] = referenceTemplate[k].y;\n  }\n  const referenceWidth = referenceBitmap[0].length;\n  const referenceHeight = referenceBitmap.length;\n\n  const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n  const bitmap = [];\n\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n  let ltp = 0;\n  for (let i = 0; i < height; i++) {\n    if (prediction) {\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\n      ltp ^= sltp;\n      if (ltp) {\n        throw new Jbig2Error(\"prediction is not supported\");\n      }\n    }\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    for (let j = 0; j < width; j++) {\n      let i0, j0;\n      let contextLabel = 0;\n      for (k = 0; k < codingTemplateLength; k++) {\n        i0 = i + codingTemplateY[k];\n        j0 = j + codingTemplateX[k];\n        if (i0 < 0 || j0 < 0 || j0 >= width) {\n          contextLabel <<= 1; // out of bound pixel\n        } else {\n          contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n        }\n      }\n      for (k = 0; k < referenceTemplateLength; k++) {\n        i0 = i + referenceTemplateY[k] - offsetY;\n        j0 = j + referenceTemplateX[k] - offsetX;\n        if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n          contextLabel <<= 1; // out of bound pixel\n        } else {\n          contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n        }\n      }\n      const pixel = decoder.readBit(contexts, contextLabel);\n      row[j] = pixel;\n    }\n  }\n\n  return bitmap;\n}\n\n// 6.5.5 Decoding the symbol dictionary\nfunction decodeSymbolDictionary(\n  huffman,\n  refinement,\n  symbols,\n  numberOfNewSymbols,\n  numberOfExportedSymbols,\n  huffmanTables,\n  templateIndex,\n  at,\n  refinementTemplateIndex,\n  refinementAt,\n  decodingContext,\n  huffmanInput\n) {\n  if (huffman && refinement) {\n    throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n  }\n\n  const newSymbols = [];\n  let currentHeight = 0;\n  let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n  const decoder = decodingContext.decoder;\n  const contextCache = decodingContext.contextCache;\n  let tableB1, symbolWidths;\n  if (huffman) {\n    tableB1 = getStandardTable(1); // standard table B.1\n    symbolWidths = [];\n    symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n  }\n\n  while (newSymbols.length < numberOfNewSymbols) {\n    const deltaHeight = huffman\n      ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n    currentHeight += deltaHeight;\n    let currentWidth = 0,\n      totalWidth = 0;\n    const firstSymbol = huffman ? symbolWidths.length : 0;\n    while (true) {\n      const deltaWidth = huffman\n        ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n      if (deltaWidth === null) {\n        break; // OOB\n      }\n      currentWidth += deltaWidth;\n      totalWidth += currentWidth;\n      let bitmap;\n      if (refinement) {\n        // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n        const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n        if (numberOfInstances > 1) {\n          bitmap = decodeTextRegion(\n            huffman,\n            refinement,\n            currentWidth,\n            currentHeight,\n            0,\n            numberOfInstances,\n            1, // strip size\n            symbols.concat(newSymbols),\n            symbolCodeLength,\n            0, // transposed\n            0, // ds offset\n            1, // top left 7.4.3.1.1\n            0, // OR operator\n            huffmanTables,\n            refinementTemplateIndex,\n            refinementAt,\n            decodingContext,\n            0,\n            huffmanInput\n          );\n        } else {\n          const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n          const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n          const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n          const symbol =\n            symbolId < symbols.length\n              ? symbols[symbolId]\n              : newSymbols[symbolId - symbols.length];\n          bitmap = decodeRefinement(\n            currentWidth,\n            currentHeight,\n            refinementTemplateIndex,\n            symbol,\n            rdx,\n            rdy,\n            false,\n            refinementAt,\n            decodingContext\n          );\n        }\n        newSymbols.push(bitmap);\n      } else if (huffman) {\n        // Store only symbol width and decode a collective bitmap when the\n        // height class is done.\n        symbolWidths.push(currentWidth);\n      } else {\n        // 6.5.8.1 Direct-coded symbol bitmap\n        bitmap = decodeBitmap(\n          false,\n          currentWidth,\n          currentHeight,\n          templateIndex,\n          false,\n          null,\n          at,\n          decodingContext\n        );\n        newSymbols.push(bitmap);\n      }\n    }\n    if (huffman && !refinement) {\n      // 6.5.9 Height class collective bitmap\n      const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n      huffmanInput.byteAlign();\n      let collectiveBitmap;\n      if (bitmapSize === 0) {\n        // Uncompressed collective bitmap\n        collectiveBitmap = readUncompressedBitmap(\n          huffmanInput,\n          totalWidth,\n          currentHeight\n        );\n      } else {\n        // MMR collective bitmap\n        const originalEnd = huffmanInput.end;\n        const bitmapEnd = huffmanInput.position + bitmapSize;\n        huffmanInput.end = bitmapEnd;\n        collectiveBitmap = decodeMMRBitmap(\n          huffmanInput,\n          totalWidth,\n          currentHeight,\n          false\n        );\n        huffmanInput.end = originalEnd;\n        huffmanInput.position = bitmapEnd;\n      }\n      const numberOfSymbolsDecoded = symbolWidths.length;\n      if (firstSymbol === numberOfSymbolsDecoded - 1) {\n        // collectiveBitmap is a single symbol.\n        newSymbols.push(collectiveBitmap);\n      } else {\n        // Divide collectiveBitmap into symbols.\n        let i,\n          y,\n          xMin = 0,\n          xMax,\n          bitmapWidth,\n          symbolBitmap;\n        for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n          bitmapWidth = symbolWidths[i];\n          xMax = xMin + bitmapWidth;\n          symbolBitmap = [];\n          for (y = 0; y < currentHeight; y++) {\n            symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n          }\n          newSymbols.push(symbolBitmap);\n          xMin = xMax;\n        }\n      }\n    }\n  }\n\n  // 6.5.10 Exported symbols\n  const exportedSymbols = [],\n    flags = [];\n  let currentFlag = false,\n    i,\n    ii;\n  const totalSymbolsLength = symbols.length + numberOfNewSymbols;\n  while (flags.length < totalSymbolsLength) {\n    let runLength = huffman\n      ? tableB1.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IAEX\", decoder);\n    while (runLength--) {\n      flags.push(currentFlag);\n    }\n    currentFlag = !currentFlag;\n  }\n  for (i = 0, ii = symbols.length; i < ii; i++) {\n    if (flags[i]) {\n      exportedSymbols.push(symbols[i]);\n    }\n  }\n  for (let j = 0; j < numberOfNewSymbols; i++, j++) {\n    if (flags[i]) {\n      exportedSymbols.push(newSymbols[j]);\n    }\n  }\n  return exportedSymbols;\n}\n\nfunction decodeTextRegion(\n  huffman,\n  refinement,\n  width,\n  height,\n  defaultPixelValue,\n  numberOfSymbolInstances,\n  stripSize,\n  inputSymbols,\n  symbolCodeLength,\n  transposed,\n  dsOffset,\n  referenceCorner,\n  combinationOperator,\n  huffmanTables,\n  refinementTemplateIndex,\n  refinementAt,\n  decodingContext,\n  logStripSize,\n  huffmanInput\n) {\n  if (huffman && refinement) {\n    throw new Jbig2Error(\"refinement with Huffman is not supported\");\n  }\n\n  // Prepare bitmap\n  const bitmap = [];\n  let i, row;\n  for (i = 0; i < height; i++) {\n    row = new Uint8Array(width);\n    if (defaultPixelValue) {\n      for (let j = 0; j < width; j++) {\n        row[j] = defaultPixelValue;\n      }\n    }\n    bitmap.push(row);\n  }\n\n  const decoder = decodingContext.decoder;\n  const contextCache = decodingContext.contextCache;\n\n  let stripT = huffman\n    ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n    : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n  let firstS = 0;\n  i = 0;\n  while (i < numberOfSymbolInstances) {\n    const deltaT = huffman\n      ? huffmanTables.tableDeltaT.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n    stripT += deltaT;\n\n    const deltaFirstS = huffman\n      ? huffmanTables.tableFirstS.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n    firstS += deltaFirstS;\n    let currentS = firstS;\n    do {\n      let currentT = 0; // 6.4.9\n      if (stripSize > 1) {\n        currentT = huffman\n          ? huffmanInput.readBits(logStripSize)\n          : decodeInteger(contextCache, \"IAIT\", decoder);\n      }\n      const t = stripSize * stripT + currentT;\n      const symbolId = huffman\n        ? huffmanTables.symbolIDTable.decode(huffmanInput)\n        : decodeIAID(contextCache, decoder, symbolCodeLength);\n      const applyRefinement =\n        refinement &&\n        (huffman\n          ? huffmanInput.readBit()\n          : decodeInteger(contextCache, \"IARI\", decoder));\n      let symbolBitmap = inputSymbols[symbolId];\n      let symbolWidth = symbolBitmap[0].length;\n      let symbolHeight = symbolBitmap.length;\n      if (applyRefinement) {\n        const rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n        const rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n        const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n        const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n        symbolWidth += rdw;\n        symbolHeight += rdh;\n        symbolBitmap = decodeRefinement(\n          symbolWidth,\n          symbolHeight,\n          refinementTemplateIndex,\n          symbolBitmap,\n          (rdw >> 1) + rdx,\n          (rdh >> 1) + rdy,\n          false,\n          refinementAt,\n          decodingContext\n        );\n      }\n      const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n      const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n      let s2, t2, symbolRow;\n      if (transposed) {\n        // Place Symbol Bitmap from T1,S1\n        for (s2 = 0; s2 < symbolHeight; s2++) {\n          row = bitmap[offsetS + s2];\n          if (!row) {\n            continue;\n          }\n          symbolRow = symbolBitmap[s2];\n          // To ignore Parts of Symbol bitmap which goes\n          // outside bitmap region\n          const maxWidth = Math.min(width - offsetT, symbolWidth);\n          switch (combinationOperator) {\n            case 0: // OR\n              for (t2 = 0; t2 < maxWidth; t2++) {\n                row[offsetT + t2] |= symbolRow[t2];\n              }\n              break;\n            case 2: // XOR\n              for (t2 = 0; t2 < maxWidth; t2++) {\n                row[offsetT + t2] ^= symbolRow[t2];\n              }\n              break;\n            default:\n              throw new Jbig2Error(\n                `operator ${combinationOperator} is not supported`\n              );\n          }\n        }\n        currentS += symbolHeight - 1;\n      } else {\n        for (t2 = 0; t2 < symbolHeight; t2++) {\n          row = bitmap[offsetT + t2];\n          if (!row) {\n            continue;\n          }\n          symbolRow = symbolBitmap[t2];\n          switch (combinationOperator) {\n            case 0: // OR\n              for (s2 = 0; s2 < symbolWidth; s2++) {\n                row[offsetS + s2] |= symbolRow[s2];\n              }\n              break;\n            case 2: // XOR\n              for (s2 = 0; s2 < symbolWidth; s2++) {\n                row[offsetS + s2] ^= symbolRow[s2];\n              }\n              break;\n            default:\n              throw new Jbig2Error(\n                `operator ${combinationOperator} is not supported`\n              );\n          }\n        }\n        currentS += symbolWidth - 1;\n      }\n      i++;\n      const deltaS = huffman\n        ? huffmanTables.tableDeltaS.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n      if (deltaS === null) {\n        break; // OOB\n      }\n      currentS += deltaS + dsOffset;\n    } while (true);\n  }\n  return bitmap;\n}\n\nfunction decodePatternDictionary(\n  mmr,\n  patternWidth,\n  patternHeight,\n  maxPatternIndex,\n  template,\n  decodingContext\n) {\n  const at = [];\n  if (!mmr) {\n    at.push({\n      x: -patternWidth,\n      y: 0,\n    });\n    if (template === 0) {\n      at.push(\n        {\n          x: -3,\n          y: -1,\n        },\n        {\n          x: 2,\n          y: -2,\n        },\n        {\n          x: -2,\n          y: -2,\n        }\n      );\n    }\n  }\n  const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n  const collectiveBitmap = decodeBitmap(\n    mmr,\n    collectiveWidth,\n    patternHeight,\n    template,\n    false,\n    null,\n    at,\n    decodingContext\n  );\n  // Divide collective bitmap into patterns.\n  const patterns = [];\n  for (let i = 0; i <= maxPatternIndex; i++) {\n    const patternBitmap = [];\n    const xMin = patternWidth * i;\n    const xMax = xMin + patternWidth;\n    for (let y = 0; y < patternHeight; y++) {\n      patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n    }\n    patterns.push(patternBitmap);\n  }\n  return patterns;\n}\n\nfunction decodeHalftoneRegion(\n  mmr,\n  patterns,\n  template,\n  regionWidth,\n  regionHeight,\n  defaultPixelValue,\n  enableSkip,\n  combinationOperator,\n  gridWidth,\n  gridHeight,\n  gridOffsetX,\n  gridOffsetY,\n  gridVectorX,\n  gridVectorY,\n  decodingContext\n) {\n  const skip = null;\n  if (enableSkip) {\n    throw new Jbig2Error(\"skip is not supported\");\n  }\n  if (combinationOperator !== 0) {\n    throw new Jbig2Error(\n      `operator \"${combinationOperator}\" is not supported in halftone region`\n    );\n  }\n\n  // Prepare bitmap.\n  const regionBitmap = [];\n  let i, j, row;\n  for (i = 0; i < regionHeight; i++) {\n    row = new Uint8Array(regionWidth);\n    if (defaultPixelValue) {\n      for (j = 0; j < regionWidth; j++) {\n        row[j] = defaultPixelValue;\n      }\n    }\n    regionBitmap.push(row);\n  }\n\n  const numberOfPatterns = patterns.length;\n  const pattern0 = patterns[0];\n  const patternWidth = pattern0[0].length,\n    patternHeight = pattern0.length;\n  const bitsPerValue = log2(numberOfPatterns);\n  const at = [];\n  if (!mmr) {\n    at.push({\n      x: template <= 1 ? 3 : 2,\n      y: -1,\n    });\n    if (template === 0) {\n      at.push(\n        {\n          x: -3,\n          y: -1,\n        },\n        {\n          x: 2,\n          y: -2,\n        },\n        {\n          x: -2,\n          y: -2,\n        }\n      );\n    }\n  }\n  // Annex C. Gray-scale Image Decoding Procedure.\n  const grayScaleBitPlanes = [];\n  let mmrInput, bitmap;\n  if (mmr) {\n    // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n    // the end of each bitmap, so EOFBs must be decoded.\n    mmrInput = new Reader(\n      decodingContext.data,\n      decodingContext.start,\n      decodingContext.end\n    );\n  }\n  for (i = bitsPerValue - 1; i >= 0; i--) {\n    if (mmr) {\n      bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n    } else {\n      bitmap = decodeBitmap(\n        false,\n        gridWidth,\n        gridHeight,\n        template,\n        false,\n        skip,\n        at,\n        decodingContext\n      );\n    }\n    grayScaleBitPlanes[i] = bitmap;\n  }\n  // 6.6.5.2 Rendering the patterns.\n  let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n  for (mg = 0; mg < gridHeight; mg++) {\n    for (ng = 0; ng < gridWidth; ng++) {\n      bit = 0;\n      patternIndex = 0;\n      for (j = bitsPerValue - 1; j >= 0; j--) {\n        bit ^= grayScaleBitPlanes[j][mg][ng]; // Gray decoding\n        patternIndex |= bit << j;\n      }\n      patternBitmap = patterns[patternIndex];\n      x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n      y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n      // Draw patternBitmap at (x, y).\n      if (\n        x >= 0 &&\n        x + patternWidth <= regionWidth &&\n        y >= 0 &&\n        y + patternHeight <= regionHeight\n      ) {\n        for (i = 0; i < patternHeight; i++) {\n          regionRow = regionBitmap[y + i];\n          patternRow = patternBitmap[i];\n          for (j = 0; j < patternWidth; j++) {\n            regionRow[x + j] |= patternRow[j];\n          }\n        }\n      } else {\n        let regionX, regionY;\n        for (i = 0; i < patternHeight; i++) {\n          regionY = y + i;\n          if (regionY < 0 || regionY >= regionHeight) {\n            continue;\n          }\n          regionRow = regionBitmap[regionY];\n          patternRow = patternBitmap[i];\n          for (j = 0; j < patternWidth; j++) {\n            regionX = x + j;\n            if (regionX >= 0 && regionX < regionWidth) {\n              regionRow[regionX] |= patternRow[j];\n            }\n          }\n        }\n      }\n    }\n  }\n  return regionBitmap;\n}\n\nfunction readSegmentHeader(data, start) {\n  const segmentHeader = {};\n  segmentHeader.number = readUint32(data, start);\n  const flags = data[start + 4];\n  const segmentType = flags & 0x3f;\n  if (!SegmentTypes[segmentType]) {\n    throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n  }\n  segmentHeader.type = segmentType;\n  segmentHeader.typeName = SegmentTypes[segmentType];\n  segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n  const pageAssociationFieldSize = !!(flags & 0x40);\n  const referredFlags = data[start + 5];\n  let referredToCount = (referredFlags >> 5) & 7;\n  const retainBits = [referredFlags & 31];\n  let position = start + 6;\n  if (referredFlags === 7) {\n    referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n    position += 3;\n    let bytes = (referredToCount + 7) >> 3;\n    retainBits[0] = data[position++];\n    while (--bytes > 0) {\n      retainBits.push(data[position++]);\n    }\n  } else if (referredFlags === 5 || referredFlags === 6) {\n    throw new Jbig2Error(\"invalid referred-to flags\");\n  }\n\n  segmentHeader.retainBits = retainBits;\n\n  let referredToSegmentNumberSize = 4;\n  if (segmentHeader.number <= 256) {\n    referredToSegmentNumberSize = 1;\n  } else if (segmentHeader.number <= 65536) {\n    referredToSegmentNumberSize = 2;\n  }\n  const referredTo = [];\n  let i, ii;\n  for (i = 0; i < referredToCount; i++) {\n    let number;\n    if (referredToSegmentNumberSize === 1) {\n      number = data[position];\n    } else if (referredToSegmentNumberSize === 2) {\n      number = readUint16(data, position);\n    } else {\n      number = readUint32(data, position);\n    }\n    referredTo.push(number);\n    position += referredToSegmentNumberSize;\n  }\n  segmentHeader.referredTo = referredTo;\n  if (!pageAssociationFieldSize) {\n    segmentHeader.pageAssociation = data[position++];\n  } else {\n    segmentHeader.pageAssociation = readUint32(data, position);\n    position += 4;\n  }\n  segmentHeader.length = readUint32(data, position);\n  position += 4;\n\n  if (segmentHeader.length === 0xffffffff) {\n    // 7.2.7 Segment data length, unknown segment length\n    if (segmentType === 38) {\n      // ImmediateGenericRegion\n      const genericRegionInfo = readRegionSegmentInformation(data, position);\n      const genericRegionSegmentFlags =\n        data[position + RegionSegmentInformationFieldLength];\n      const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n      // searching for the segment end\n      const searchPatternLength = 6;\n      const searchPattern = new Uint8Array(searchPatternLength);\n      if (!genericRegionMmr) {\n        searchPattern[0] = 0xff;\n        searchPattern[1] = 0xac;\n      }\n      searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n      searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n      searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n      searchPattern[5] = genericRegionInfo.height & 0xff;\n      for (i = position, ii = data.length; i < ii; i++) {\n        let j = 0;\n        while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n          j++;\n        }\n        if (j === searchPatternLength) {\n          segmentHeader.length = i + searchPatternLength;\n          break;\n        }\n      }\n      if (segmentHeader.length === 0xffffffff) {\n        throw new Jbig2Error(\"segment end was not found\");\n      }\n    } else {\n      throw new Jbig2Error(\"invalid unknown segment length\");\n    }\n  }\n  segmentHeader.headerEnd = position;\n  return segmentHeader;\n}\n\nfunction readSegments(header, data, start, end) {\n  const segments = [];\n  let position = start;\n  while (position < end) {\n    const segmentHeader = readSegmentHeader(data, position);\n    position = segmentHeader.headerEnd;\n    const segment = {\n      header: segmentHeader,\n      data,\n    };\n    if (!header.randomAccess) {\n      segment.start = position;\n      position += segmentHeader.length;\n      segment.end = position;\n    }\n    segments.push(segment);\n    if (segmentHeader.type === 51) {\n      break; // end of file is found\n    }\n  }\n  if (header.randomAccess) {\n    for (let i = 0, ii = segments.length; i < ii; i++) {\n      segments[i].start = position;\n      position += segments[i].header.length;\n      segments[i].end = position;\n    }\n  }\n  return segments;\n}\n\n// 7.4.1 Region segment information field\nfunction readRegionSegmentInformation(data, start) {\n  return {\n    width: readUint32(data, start),\n    height: readUint32(data, start + 4),\n    x: readUint32(data, start + 8),\n    y: readUint32(data, start + 12),\n    combinationOperator: data[start + 16] & 7,\n  };\n}\nconst RegionSegmentInformationFieldLength = 17;\n\nfunction processSegment(segment, visitor) {\n  const header = segment.header;\n\n  const data = segment.data,\n    end = segment.end;\n  let position = segment.start;\n  let args, at, i, atLength;\n  switch (header.type) {\n    case 0: // SymbolDictionary\n      // 7.4.2 Symbol dictionary segment syntax\n      const dictionary = {};\n      const dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n      dictionary.huffman = !!(dictionaryFlags & 1);\n      dictionary.refinement = !!(dictionaryFlags & 2);\n      dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n      dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n      dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n      dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n      dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n      dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n      dictionary.template = (dictionaryFlags >> 10) & 3;\n      dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n      position += 2;\n      if (!dictionary.huffman) {\n        atLength = dictionary.template === 0 ? 4 : 1;\n        at = [];\n        for (i = 0; i < atLength; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        dictionary.at = at;\n      }\n      if (dictionary.refinement && !dictionary.refinementTemplate) {\n        at = [];\n        for (i = 0; i < 2; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        dictionary.refinementAt = at;\n      }\n      dictionary.numberOfExportedSymbols = readUint32(data, position);\n      position += 4;\n      dictionary.numberOfNewSymbols = readUint32(data, position);\n      position += 4;\n      args = [\n        dictionary,\n        header.number,\n        header.referredTo,\n        data,\n        position,\n        end,\n      ];\n      break;\n    case 6: // ImmediateTextRegion\n    case 7: // ImmediateLosslessTextRegion\n      const textRegion = {};\n      textRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const textRegionSegmentFlags = readUint16(data, position);\n      position += 2;\n      textRegion.huffman = !!(textRegionSegmentFlags & 1);\n      textRegion.refinement = !!(textRegionSegmentFlags & 2);\n      textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n      textRegion.stripSize = 1 << textRegion.logStripSize;\n      textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n      textRegion.transposed = !!(textRegionSegmentFlags & 64);\n      textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n      textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n      textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n      textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n      if (textRegion.huffman) {\n        const textRegionHuffmanFlags = readUint16(data, position);\n        position += 2;\n        textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n        textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n        textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n        textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n        textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n        textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n        textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n        textRegion.huffmanRefinementSizeSelector = !!(\n          textRegionHuffmanFlags & 0x4000\n        );\n      }\n      if (textRegion.refinement && !textRegion.refinementTemplate) {\n        at = [];\n        for (i = 0; i < 2; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        textRegion.refinementAt = at;\n      }\n      textRegion.numberOfSymbolInstances = readUint32(data, position);\n      position += 4;\n      args = [textRegion, header.referredTo, data, position, end];\n      break;\n    case 16: // PatternDictionary\n      // 7.4.4. Pattern dictionary segment syntax\n      const patternDictionary = {};\n      const patternDictionaryFlags = data[position++];\n      patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n      patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n      patternDictionary.patternWidth = data[position++];\n      patternDictionary.patternHeight = data[position++];\n      patternDictionary.maxPatternIndex = readUint32(data, position);\n      position += 4;\n      args = [patternDictionary, header.number, data, position, end];\n      break;\n    case 22: // ImmediateHalftoneRegion\n    case 23: // ImmediateLosslessHalftoneRegion\n      // 7.4.5 Halftone region segment syntax\n      const halftoneRegion = {};\n      halftoneRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const halftoneRegionFlags = data[position++];\n      halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n      halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n      halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n      halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n      halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n      halftoneRegion.gridWidth = readUint32(data, position);\n      position += 4;\n      halftoneRegion.gridHeight = readUint32(data, position);\n      position += 4;\n      halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n      position += 4;\n      halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n      position += 4;\n      halftoneRegion.gridVectorX = readUint16(data, position);\n      position += 2;\n      halftoneRegion.gridVectorY = readUint16(data, position);\n      position += 2;\n      args = [halftoneRegion, header.referredTo, data, position, end];\n      break;\n    case 38: // ImmediateGenericRegion\n    case 39: // ImmediateLosslessGenericRegion\n      const genericRegion = {};\n      genericRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const genericRegionSegmentFlags = data[position++];\n      genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n      genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n      genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n      if (!genericRegion.mmr) {\n        atLength = genericRegion.template === 0 ? 4 : 1;\n        at = [];\n        for (i = 0; i < atLength; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        genericRegion.at = at;\n      }\n      args = [genericRegion, data, position, end];\n      break;\n    case 48: // PageInformation\n      const pageInfo = {\n        width: readUint32(data, position),\n        height: readUint32(data, position + 4),\n        resolutionX: readUint32(data, position + 8),\n        resolutionY: readUint32(data, position + 12),\n      };\n      if (pageInfo.height === 0xffffffff) {\n        delete pageInfo.height;\n      }\n      const pageSegmentFlags = data[position + 16];\n      readUint16(data, position + 17); // pageStripingInformation\n      pageInfo.lossless = !!(pageSegmentFlags & 1);\n      pageInfo.refinement = !!(pageSegmentFlags & 2);\n      pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n      pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n      pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n      pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n      args = [pageInfo];\n      break;\n    case 49: // EndOfPage\n      break;\n    case 50: // EndOfStripe\n      break;\n    case 51: // EndOfFile\n      break;\n    case 53: // Tables\n      args = [header.number, data, position, end];\n      break;\n    case 62: // 7.4.15 defines 2 extension types which\n      // are comments and can be ignored.\n      break;\n    default:\n      throw new Jbig2Error(\n        `segment type ${header.typeName}(${header.type})` +\n          \" is not implemented\"\n      );\n  }\n  const callbackName = \"on\" + header.typeName;\n  if (callbackName in visitor) {\n    visitor[callbackName].apply(visitor, args);\n  }\n}\n\nfunction processSegments(segments, visitor) {\n  for (let i = 0, ii = segments.length; i < ii; i++) {\n    processSegment(segments[i], visitor);\n  }\n}\n\nfunction parseJbig2Chunks(chunks) {\n  const visitor = new SimpleSegmentVisitor();\n  for (let i = 0, ii = chunks.length; i < ii; i++) {\n    const chunk = chunks[i];\n    const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n    processSegments(segments, visitor);\n  }\n  return visitor.buffer;\n}\n\nfunction parseJbig2(data) {\n  const end = data.length;\n  let position = 0;\n\n  if (\n    data[position] !== 0x97 ||\n    data[position + 1] !== 0x4a ||\n    data[position + 2] !== 0x42 ||\n    data[position + 3] !== 0x32 ||\n    data[position + 4] !== 0x0d ||\n    data[position + 5] !== 0x0a ||\n    data[position + 6] !== 0x1a ||\n    data[position + 7] !== 0x0a\n  ) {\n    throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n  }\n\n  const header = Object.create(null);\n  position += 8;\n  const flags = data[position++];\n  header.randomAccess = !(flags & 1);\n  if (!(flags & 2)) {\n    header.numberOfPages = readUint32(data, position);\n    position += 4;\n  }\n\n  const segments = readSegments(header, data, position, end);\n  const visitor = new SimpleSegmentVisitor();\n  processSegments(segments, visitor);\n\n  const { width, height } = visitor.currentPageInfo;\n  const bitPacked = visitor.buffer;\n  const imgData = new Uint8ClampedArray(width * height);\n  let q = 0,\n    k = 0;\n  for (let i = 0; i < height; i++) {\n    let mask = 0,\n      buffer;\n    for (let j = 0; j < width; j++) {\n      if (!mask) {\n        mask = 128;\n        buffer = bitPacked[k++];\n      }\n      imgData[q++] = buffer & mask ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n\n  return { imgData, width, height };\n}\n\nclass SimpleSegmentVisitor {\n  onPageInformation(info) {\n    this.currentPageInfo = info;\n    const rowSize = (info.width + 7) >> 3;\n    const buffer = new Uint8ClampedArray(rowSize * info.height);\n    // The contents of ArrayBuffers are initialized to 0.\n    // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n    if (info.defaultPixelValue) {\n      for (let i = 0, ii = buffer.length; i < ii; i++) {\n        buffer[i] = 0xff;\n      }\n    }\n    this.buffer = buffer;\n  }\n\n  drawBitmap(regionInfo, bitmap) {\n    const pageInfo = this.currentPageInfo;\n    const width = regionInfo.width,\n      height = regionInfo.height;\n    const rowSize = (pageInfo.width + 7) >> 3;\n    const combinationOperator = pageInfo.combinationOperatorOverride\n      ? regionInfo.combinationOperator\n      : pageInfo.combinationOperator;\n    const buffer = this.buffer;\n    const mask0 = 128 >> (regionInfo.x & 7);\n    let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n    let i, j, mask, offset;\n    switch (combinationOperator) {\n      case 0: // OR\n        for (i = 0; i < height; i++) {\n          mask = mask0;\n          offset = offset0;\n          for (j = 0; j < width; j++) {\n            if (bitmap[i][j]) {\n              buffer[offset] |= mask;\n            }\n            mask >>= 1;\n            if (!mask) {\n              mask = 128;\n              offset++;\n            }\n          }\n          offset0 += rowSize;\n        }\n        break;\n      case 2: // XOR\n        for (i = 0; i < height; i++) {\n          mask = mask0;\n          offset = offset0;\n          for (j = 0; j < width; j++) {\n            if (bitmap[i][j]) {\n              buffer[offset] ^= mask;\n            }\n            mask >>= 1;\n            if (!mask) {\n              mask = 128;\n              offset++;\n            }\n          }\n          offset0 += rowSize;\n        }\n        break;\n      default:\n        throw new Jbig2Error(\n          `operator ${combinationOperator} is not supported`\n        );\n    }\n  }\n\n  onImmediateGenericRegion(region, data, start, end) {\n    const regionInfo = region.info;\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeBitmap(\n      region.mmr,\n      regionInfo.width,\n      regionInfo.height,\n      region.template,\n      region.prediction,\n      null,\n      region.at,\n      decodingContext\n    );\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessGenericRegion() {\n    this.onImmediateGenericRegion.apply(this, arguments);\n  }\n\n  onSymbolDictionary(\n    dictionary,\n    currentSegment,\n    referredSegments,\n    data,\n    start,\n    end\n  ) {\n    let huffmanTables, huffmanInput;\n    if (dictionary.huffman) {\n      huffmanTables = getSymbolDictionaryHuffmanTables(\n        dictionary,\n        referredSegments,\n        this.customTables\n      );\n      huffmanInput = new Reader(data, start, end);\n    }\n\n    // Combines exported symbols from all referred segments\n    let symbols = this.symbols;\n    if (!symbols) {\n      this.symbols = symbols = {};\n    }\n\n    let inputSymbols = [];\n    for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n      const referredSymbols = symbols[referredSegments[i]];\n      // referredSymbols is undefined when we have a reference to a Tables\n      // segment instead of a SymbolDictionary.\n      if (referredSymbols) {\n        inputSymbols = inputSymbols.concat(referredSymbols);\n      }\n    }\n\n    const decodingContext = new DecodingContext(data, start, end);\n    symbols[currentSegment] = decodeSymbolDictionary(\n      dictionary.huffman,\n      dictionary.refinement,\n      inputSymbols,\n      dictionary.numberOfNewSymbols,\n      dictionary.numberOfExportedSymbols,\n      huffmanTables,\n      dictionary.template,\n      dictionary.at,\n      dictionary.refinementTemplate,\n      dictionary.refinementAt,\n      decodingContext,\n      huffmanInput\n    );\n  }\n\n  onImmediateTextRegion(region, referredSegments, data, start, end) {\n    const regionInfo = region.info;\n    let huffmanTables, huffmanInput;\n\n    // Combines exported symbols from all referred segments\n    const symbols = this.symbols;\n    let inputSymbols = [];\n    for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n      const referredSymbols = symbols[referredSegments[i]];\n      // referredSymbols is undefined when we have a reference to a Tables\n      // segment instead of a SymbolDictionary.\n      if (referredSymbols) {\n        inputSymbols = inputSymbols.concat(referredSymbols);\n      }\n    }\n    const symbolCodeLength = log2(inputSymbols.length);\n    if (region.huffman) {\n      huffmanInput = new Reader(data, start, end);\n      huffmanTables = getTextRegionHuffmanTables(\n        region,\n        referredSegments,\n        this.customTables,\n        inputSymbols.length,\n        huffmanInput\n      );\n    }\n\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeTextRegion(\n      region.huffman,\n      region.refinement,\n      regionInfo.width,\n      regionInfo.height,\n      region.defaultPixelValue,\n      region.numberOfSymbolInstances,\n      region.stripSize,\n      inputSymbols,\n      symbolCodeLength,\n      region.transposed,\n      region.dsOffset,\n      region.referenceCorner,\n      region.combinationOperator,\n      huffmanTables,\n      region.refinementTemplate,\n      region.refinementAt,\n      decodingContext,\n      region.logStripSize,\n      huffmanInput\n    );\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessTextRegion() {\n    this.onImmediateTextRegion.apply(this, arguments);\n  }\n\n  onPatternDictionary(dictionary, currentSegment, data, start, end) {\n    let patterns = this.patterns;\n    if (!patterns) {\n      this.patterns = patterns = {};\n    }\n    const decodingContext = new DecodingContext(data, start, end);\n    patterns[currentSegment] = decodePatternDictionary(\n      dictionary.mmr,\n      dictionary.patternWidth,\n      dictionary.patternHeight,\n      dictionary.maxPatternIndex,\n      dictionary.template,\n      decodingContext\n    );\n  }\n\n  onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n    // HalftoneRegion refers to exactly one PatternDictionary.\n    const patterns = this.patterns[referredSegments[0]];\n    const regionInfo = region.info;\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeHalftoneRegion(\n      region.mmr,\n      patterns,\n      region.template,\n      regionInfo.width,\n      regionInfo.height,\n      region.defaultPixelValue,\n      region.enableSkip,\n      region.combinationOperator,\n      region.gridWidth,\n      region.gridHeight,\n      region.gridOffsetX,\n      region.gridOffsetY,\n      region.gridVectorX,\n      region.gridVectorY,\n      decodingContext\n    );\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessHalftoneRegion() {\n    this.onImmediateHalftoneRegion.apply(this, arguments);\n  }\n\n  onTables(currentSegment, data, start, end) {\n    let customTables = this.customTables;\n    if (!customTables) {\n      this.customTables = customTables = {};\n    }\n    customTables[currentSegment] = decodeTablesSegment(data, start, end);\n  }\n}\n\nclass HuffmanLine {\n  constructor(lineData) {\n    if (lineData.length === 2) {\n      // OOB line.\n      this.isOOB = true;\n      this.rangeLow = 0;\n      this.prefixLength = lineData[0];\n      this.rangeLength = 0;\n      this.prefixCode = lineData[1];\n      this.isLowerRange = false;\n    } else {\n      // Normal, upper range or lower range line.\n      // Upper range lines are processed like normal lines.\n      this.isOOB = false;\n      this.rangeLow = lineData[0];\n      this.prefixLength = lineData[1];\n      this.rangeLength = lineData[2];\n      this.prefixCode = lineData[3];\n      this.isLowerRange = lineData[4] === \"lower\";\n    }\n  }\n}\n\nclass HuffmanTreeNode {\n  constructor(line) {\n    this.children = [];\n    if (line) {\n      // Leaf node\n      this.isLeaf = true;\n      this.rangeLength = line.rangeLength;\n      this.rangeLow = line.rangeLow;\n      this.isLowerRange = line.isLowerRange;\n      this.isOOB = line.isOOB;\n    } else {\n      // Intermediate or root node\n      this.isLeaf = false;\n    }\n  }\n\n  buildTree(line, shift) {\n    const bit = (line.prefixCode >> shift) & 1;\n    if (shift <= 0) {\n      // Create a leaf node.\n      this.children[bit] = new HuffmanTreeNode(line);\n    } else {\n      // Create an intermediate node and continue recursively.\n      let node = this.children[bit];\n      if (!node) {\n        this.children[bit] = node = new HuffmanTreeNode(null);\n      }\n      node.buildTree(line, shift - 1);\n    }\n  }\n\n  decodeNode(reader) {\n    if (this.isLeaf) {\n      if (this.isOOB) {\n        return null;\n      }\n      const htOffset = reader.readBits(this.rangeLength);\n      return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n    }\n    const node = this.children[reader.readBit()];\n    if (!node) {\n      throw new Jbig2Error(\"invalid Huffman data\");\n    }\n    return node.decodeNode(reader);\n  }\n}\n\nclass HuffmanTable {\n  constructor(lines, prefixCodesDone) {\n    if (!prefixCodesDone) {\n      this.assignPrefixCodes(lines);\n    }\n    // Create Huffman tree.\n    this.rootNode = new HuffmanTreeNode(null);\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      const line = lines[i];\n      if (line.prefixLength > 0) {\n        this.rootNode.buildTree(line, line.prefixLength - 1);\n      }\n    }\n  }\n\n  decode(reader) {\n    return this.rootNode.decodeNode(reader);\n  }\n\n  assignPrefixCodes(lines) {\n    // Annex B.3 Assigning the prefix codes.\n    const linesLength = lines.length;\n    let prefixLengthMax = 0;\n    for (let i = 0; i < linesLength; i++) {\n      prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n    }\n\n    const histogram = new Uint32Array(prefixLengthMax + 1);\n    for (let i = 0; i < linesLength; i++) {\n      histogram[lines[i].prefixLength]++;\n    }\n    let currentLength = 1,\n      firstCode = 0,\n      currentCode,\n      currentTemp,\n      line;\n    histogram[0] = 0;\n\n    while (currentLength <= prefixLengthMax) {\n      firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n      currentCode = firstCode;\n      currentTemp = 0;\n      while (currentTemp < linesLength) {\n        line = lines[currentTemp];\n        if (line.prefixLength === currentLength) {\n          line.prefixCode = currentCode;\n          currentCode++;\n        }\n        currentTemp++;\n      }\n      currentLength++;\n    }\n  }\n}\n\nfunction decodeTablesSegment(data, start, end) {\n  // Decodes a Tables segment, i.e., a custom Huffman table.\n  // Annex B.2 Code table structure.\n  const flags = data[start];\n  const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n  const highestValue = readUint32(data, start + 5) & 0xffffffff;\n  const reader = new Reader(data, start + 9, end);\n\n  const prefixSizeBits = ((flags >> 1) & 7) + 1;\n  const rangeSizeBits = ((flags >> 4) & 7) + 1;\n  const lines = [];\n  let prefixLength,\n    rangeLength,\n    currentRangeLow = lowestValue;\n\n  // Normal table lines\n  do {\n    prefixLength = reader.readBits(prefixSizeBits);\n    rangeLength = reader.readBits(rangeSizeBits);\n    lines.push(\n      new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n    );\n    currentRangeLow += 1 << rangeLength;\n  } while (currentRangeLow < highestValue);\n\n  // Lower range table line\n  prefixLength = reader.readBits(prefixSizeBits);\n  lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n\n  // Upper range table line\n  prefixLength = reader.readBits(prefixSizeBits);\n  lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n  if (flags & 1) {\n    // Out-of-band table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([prefixLength, 0]));\n  }\n\n  return new HuffmanTable(lines, false);\n}\n\nconst standardTablesCache = {};\n\nfunction getStandardTable(number) {\n  // Annex B.5 Standard Huffman tables.\n  let table = standardTablesCache[number];\n  if (table) {\n    return table;\n  }\n  let lines;\n  switch (number) {\n    case 1:\n      lines = [\n        [0, 1, 4, 0x0],\n        [16, 2, 8, 0x2],\n        [272, 3, 16, 0x6],\n        [65808, 3, 32, 0x7], // upper\n      ];\n      break;\n    case 2:\n      lines = [\n        [0, 1, 0, 0x0],\n        [1, 2, 0, 0x2],\n        [2, 3, 0, 0x6],\n        [3, 4, 3, 0xe],\n        [11, 5, 6, 0x1e],\n        [75, 6, 32, 0x3e], // upper\n        [6, 0x3f], // OOB\n      ];\n      break;\n    case 3:\n      lines = [\n        [-256, 8, 8, 0xfe],\n        [0, 1, 0, 0x0],\n        [1, 2, 0, 0x2],\n        [2, 3, 0, 0x6],\n        [3, 4, 3, 0xe],\n        [11, 5, 6, 0x1e],\n        [-257, 8, 32, 0xff, \"lower\"],\n        [75, 7, 32, 0x7e], // upper\n        [6, 0x3e], // OOB\n      ];\n      break;\n    case 4:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 2, 0, 0x2],\n        [3, 3, 0, 0x6],\n        [4, 4, 3, 0xe],\n        [12, 5, 6, 0x1e],\n        [76, 5, 32, 0x1f], // upper\n      ];\n      break;\n    case 5:\n      lines = [\n        [-255, 7, 8, 0x7e],\n        [1, 1, 0, 0x0],\n        [2, 2, 0, 0x2],\n        [3, 3, 0, 0x6],\n        [4, 4, 3, 0xe],\n        [12, 5, 6, 0x1e],\n        [-256, 7, 32, 0x7f, \"lower\"],\n        [76, 6, 32, 0x3e], // upper\n      ];\n      break;\n    case 6:\n      lines = [\n        [-2048, 5, 10, 0x1c],\n        [-1024, 4, 9, 0x8],\n        [-512, 4, 8, 0x9],\n        [-256, 4, 7, 0xa],\n        [-128, 5, 6, 0x1d],\n        [-64, 5, 5, 0x1e],\n        [-32, 4, 5, 0xb],\n        [0, 2, 7, 0x0],\n        [128, 3, 7, 0x2],\n        [256, 3, 8, 0x3],\n        [512, 4, 9, 0xc],\n        [1024, 4, 10, 0xd],\n        [-2049, 6, 32, 0x3e, \"lower\"],\n        [2048, 6, 32, 0x3f], // upper\n      ];\n      break;\n    case 7:\n      lines = [\n        [-1024, 4, 9, 0x8],\n        [-512, 3, 8, 0x0],\n        [-256, 4, 7, 0x9],\n        [-128, 5, 6, 0x1a],\n        [-64, 5, 5, 0x1b],\n        [-32, 4, 5, 0xa],\n        [0, 4, 5, 0xb],\n        [32, 5, 5, 0x1c],\n        [64, 5, 6, 0x1d],\n        [128, 4, 7, 0xc],\n        [256, 3, 8, 0x1],\n        [512, 3, 9, 0x2],\n        [1024, 3, 10, 0x3],\n        [-1025, 5, 32, 0x1e, \"lower\"],\n        [2048, 5, 32, 0x1f], // upper\n      ];\n      break;\n    case 8:\n      lines = [\n        [-15, 8, 3, 0xfc],\n        [-7, 9, 1, 0x1fc],\n        [-5, 8, 1, 0xfd],\n        [-3, 9, 0, 0x1fd],\n        [-2, 7, 0, 0x7c],\n        [-1, 4, 0, 0xa],\n        [0, 2, 1, 0x0],\n        [2, 5, 0, 0x1a],\n        [3, 6, 0, 0x3a],\n        [4, 3, 4, 0x4],\n        [20, 6, 1, 0x3b],\n        [22, 4, 4, 0xb],\n        [38, 4, 5, 0xc],\n        [70, 5, 6, 0x1b],\n        [134, 5, 7, 0x1c],\n        [262, 6, 7, 0x3c],\n        [390, 7, 8, 0x7d],\n        [646, 6, 10, 0x3d],\n        [-16, 9, 32, 0x1fe, \"lower\"],\n        [1670, 9, 32, 0x1ff], // upper\n        [2, 0x1], // OOB\n      ];\n      break;\n    case 9:\n      lines = [\n        [-31, 8, 4, 0xfc],\n        [-15, 9, 2, 0x1fc],\n        [-11, 8, 2, 0xfd],\n        [-7, 9, 1, 0x1fd],\n        [-5, 7, 1, 0x7c],\n        [-3, 4, 1, 0xa],\n        [-1, 3, 1, 0x2],\n        [1, 3, 1, 0x3],\n        [3, 5, 1, 0x1a],\n        [5, 6, 1, 0x3a],\n        [7, 3, 5, 0x4],\n        [39, 6, 2, 0x3b],\n        [43, 4, 5, 0xb],\n        [75, 4, 6, 0xc],\n        [139, 5, 7, 0x1b],\n        [267, 5, 8, 0x1c],\n        [523, 6, 8, 0x3c],\n        [779, 7, 9, 0x7d],\n        [1291, 6, 11, 0x3d],\n        [-32, 9, 32, 0x1fe, \"lower\"],\n        [3339, 9, 32, 0x1ff], // upper\n        [2, 0x0], // OOB\n      ];\n      break;\n    case 10:\n      lines = [\n        [-21, 7, 4, 0x7a],\n        [-5, 8, 0, 0xfc],\n        [-4, 7, 0, 0x7b],\n        [-3, 5, 0, 0x18],\n        [-2, 2, 2, 0x0],\n        [2, 5, 0, 0x19],\n        [3, 6, 0, 0x36],\n        [4, 7, 0, 0x7c],\n        [5, 8, 0, 0xfd],\n        [6, 2, 6, 0x1],\n        [70, 5, 5, 0x1a],\n        [102, 6, 5, 0x37],\n        [134, 6, 6, 0x38],\n        [198, 6, 7, 0x39],\n        [326, 6, 8, 0x3a],\n        [582, 6, 9, 0x3b],\n        [1094, 6, 10, 0x3c],\n        [2118, 7, 11, 0x7d],\n        [-22, 8, 32, 0xfe, \"lower\"],\n        [4166, 8, 32, 0xff], // upper\n        [2, 0x2], // OOB\n      ];\n      break;\n    case 11:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 2, 1, 0x2],\n        [4, 4, 0, 0xc],\n        [5, 4, 1, 0xd],\n        [7, 5, 1, 0x1c],\n        [9, 5, 2, 0x1d],\n        [13, 6, 2, 0x3c],\n        [17, 7, 2, 0x7a],\n        [21, 7, 3, 0x7b],\n        [29, 7, 4, 0x7c],\n        [45, 7, 5, 0x7d],\n        [77, 7, 6, 0x7e],\n        [141, 7, 32, 0x7f], // upper\n      ];\n      break;\n    case 12:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 2, 0, 0x2],\n        [3, 3, 1, 0x6],\n        [5, 5, 0, 0x1c],\n        [6, 5, 1, 0x1d],\n        [8, 6, 1, 0x3c],\n        [10, 7, 0, 0x7a],\n        [11, 7, 1, 0x7b],\n        [13, 7, 2, 0x7c],\n        [17, 7, 3, 0x7d],\n        [25, 7, 4, 0x7e],\n        [41, 8, 5, 0xfe],\n        [73, 8, 32, 0xff], // upper\n      ];\n      break;\n    case 13:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 3, 0, 0x4],\n        [3, 4, 0, 0xc],\n        [4, 5, 0, 0x1c],\n        [5, 4, 1, 0xd],\n        [7, 3, 3, 0x5],\n        [15, 6, 1, 0x3a],\n        [17, 6, 2, 0x3b],\n        [21, 6, 3, 0x3c],\n        [29, 6, 4, 0x3d],\n        [45, 6, 5, 0x3e],\n        [77, 7, 6, 0x7e],\n        [141, 7, 32, 0x7f], // upper\n      ];\n      break;\n    case 14:\n      lines = [\n        [-2, 3, 0, 0x4],\n        [-1, 3, 0, 0x5],\n        [0, 1, 0, 0x0],\n        [1, 3, 0, 0x6],\n        [2, 3, 0, 0x7],\n      ];\n      break;\n    case 15:\n      lines = [\n        [-24, 7, 4, 0x7c],\n        [-8, 6, 2, 0x3c],\n        [-4, 5, 1, 0x1c],\n        [-2, 4, 0, 0xc],\n        [-1, 3, 0, 0x4],\n        [0, 1, 0, 0x0],\n        [1, 3, 0, 0x5],\n        [2, 4, 0, 0xd],\n        [3, 5, 1, 0x1d],\n        [5, 6, 2, 0x3d],\n        [9, 7, 4, 0x7d],\n        [-25, 7, 32, 0x7e, \"lower\"],\n        [25, 7, 32, 0x7f], // upper\n      ];\n      break;\n    default:\n      throw new Jbig2Error(`standard table B.${number} does not exist`);\n  }\n\n  for (let i = 0, ii = lines.length; i < ii; i++) {\n    lines[i] = new HuffmanLine(lines[i]);\n  }\n  table = new HuffmanTable(lines, true);\n  standardTablesCache[number] = table;\n  return table;\n}\n\nclass Reader {\n  constructor(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n    this.position = start;\n    this.shift = -1;\n    this.currentByte = 0;\n  }\n\n  readBit() {\n    if (this.shift < 0) {\n      if (this.position >= this.end) {\n        throw new Jbig2Error(\"end of data while reading bit\");\n      }\n      this.currentByte = this.data[this.position++];\n      this.shift = 7;\n    }\n    const bit = (this.currentByte >> this.shift) & 1;\n    this.shift--;\n    return bit;\n  }\n\n  readBits(numBits) {\n    let result = 0,\n      i;\n    for (i = numBits - 1; i >= 0; i--) {\n      result |= this.readBit() << i;\n    }\n    return result;\n  }\n\n  byteAlign() {\n    this.shift = -1;\n  }\n\n  next() {\n    if (this.position >= this.end) {\n      return -1;\n    }\n    return this.data[this.position++];\n  }\n}\n\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\n  // Returns a Tables segment that has been earlier decoded.\n  // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n  let currentIndex = 0;\n  for (let i = 0, ii = referredTo.length; i < ii; i++) {\n    const table = customTables[referredTo[i]];\n    if (table) {\n      if (index === currentIndex) {\n        return table;\n      }\n      currentIndex++;\n    }\n  }\n  throw new Jbig2Error(\"can't find custom Huffman table\");\n}\n\nfunction getTextRegionHuffmanTables(\n  textRegion,\n  referredTo,\n  customTables,\n  numberOfSymbols,\n  reader\n) {\n  // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n  // Read code lengths for RUNCODEs 0...34.\n  const codes = [];\n  for (let i = 0; i <= 34; i++) {\n    const codeLength = reader.readBits(4);\n    codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n  }\n  // Assign Huffman codes for RUNCODEs.\n  const runCodesTable = new HuffmanTable(codes, false);\n\n  // Read a Huffman code using the assignment above.\n  // Interpret the RUNCODE codes and the additional bits (if any).\n  codes.length = 0;\n  for (let i = 0; i < numberOfSymbols; ) {\n    const codeLength = runCodesTable.decode(reader);\n    if (codeLength >= 32) {\n      let repeatedLength, numberOfRepeats, j;\n      switch (codeLength) {\n        case 32:\n          if (i === 0) {\n            throw new Jbig2Error(\"no previous value in symbol ID table\");\n          }\n          numberOfRepeats = reader.readBits(2) + 3;\n          repeatedLength = codes[i - 1].prefixLength;\n          break;\n        case 33:\n          numberOfRepeats = reader.readBits(3) + 3;\n          repeatedLength = 0;\n          break;\n        case 34:\n          numberOfRepeats = reader.readBits(7) + 11;\n          repeatedLength = 0;\n          break;\n        default:\n          throw new Jbig2Error(\"invalid code length in symbol ID table\");\n      }\n      for (j = 0; j < numberOfRepeats; j++) {\n        codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n        i++;\n      }\n    } else {\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n      i++;\n    }\n  }\n  reader.byteAlign();\n  const symbolIDTable = new HuffmanTable(codes, false);\n\n  // 7.4.3.1.6 Text region segment Huffman table selection\n\n  let customIndex = 0,\n    tableFirstS,\n    tableDeltaS,\n    tableDeltaT;\n\n  switch (textRegion.huffmanFS) {\n    case 0:\n    case 1:\n      tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n      break;\n    case 3:\n      tableFirstS = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman FS selector\");\n  }\n\n  switch (textRegion.huffmanDS) {\n    case 0:\n    case 1:\n    case 2:\n      tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n      break;\n    case 3:\n      tableDeltaS = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DS selector\");\n  }\n\n  switch (textRegion.huffmanDT) {\n    case 0:\n    case 1:\n    case 2:\n      tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n      break;\n    case 3:\n      tableDeltaT = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DT selector\");\n  }\n\n  if (textRegion.refinement) {\n    // Load tables RDW, RDH, RDX and RDY.\n    throw new Jbig2Error(\"refinement with Huffman is not supported\");\n  }\n\n  return {\n    symbolIDTable,\n    tableFirstS,\n    tableDeltaS,\n    tableDeltaT,\n  };\n}\n\nfunction getSymbolDictionaryHuffmanTables(\n  dictionary,\n  referredTo,\n  customTables\n) {\n  // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n  let customIndex = 0,\n    tableDeltaHeight,\n    tableDeltaWidth;\n  switch (dictionary.huffmanDHSelector) {\n    case 0:\n    case 1:\n      tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n      break;\n    case 3:\n      tableDeltaHeight = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DH selector\");\n  }\n\n  switch (dictionary.huffmanDWSelector) {\n    case 0:\n    case 1:\n      tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n      break;\n    case 3:\n      tableDeltaWidth = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DW selector\");\n  }\n\n  let tableBitmapSize, tableAggregateInstances;\n  if (dictionary.bitmapSizeSelector) {\n    tableBitmapSize = getCustomHuffmanTable(\n      customIndex,\n      referredTo,\n      customTables\n    );\n    customIndex++;\n  } else {\n    tableBitmapSize = getStandardTable(1);\n  }\n\n  if (dictionary.aggregationInstancesSelector) {\n    tableAggregateInstances = getCustomHuffmanTable(\n      customIndex,\n      referredTo,\n      customTables\n    );\n  } else {\n    tableAggregateInstances = getStandardTable(1);\n  }\n\n  return {\n    tableDeltaHeight,\n    tableDeltaWidth,\n    tableBitmapSize,\n    tableAggregateInstances,\n  };\n}\n\nfunction readUncompressedBitmap(reader, width, height) {\n  const bitmap = [];\n  for (let y = 0; y < height; y++) {\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    for (let x = 0; x < width; x++) {\n      row[x] = reader.readBit();\n    }\n    reader.byteAlign();\n  }\n  return bitmap;\n}\n\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\n  // MMR is the same compression algorithm as the PDF filter\n  // CCITTFaxDecode with /K -1.\n  const params = {\n    K: -1,\n    Columns: width,\n    Rows: height,\n    BlackIs1: true,\n    EndOfBlock: endOfBlock,\n  };\n  const decoder = new CCITTFaxDecoder(input, params);\n  const bitmap = [];\n  let currentByte,\n    eof = false;\n\n  for (let y = 0; y < height; y++) {\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    let shift = -1;\n    for (let x = 0; x < width; x++) {\n      if (shift < 0) {\n        currentByte = decoder.readNextChar();\n        if (currentByte === -1) {\n          // Set the rest of the bits to zero.\n          currentByte = 0;\n          eof = true;\n        }\n        shift = 7;\n      }\n      row[x] = (currentByte >> shift) & 1;\n      shift--;\n    }\n  }\n\n  if (endOfBlock && !eof) {\n    // Read until EOFB has been consumed.\n    const lookForEOFLimit = 5;\n    for (let i = 0; i < lookForEOFLimit; i++) {\n      if (decoder.readNextChar() === -1) {\n        break;\n      }\n    }\n  }\n\n  return bitmap;\n}\n\nclass Jbig2Image {\n  parseChunks(chunks) {\n    return parseJbig2Chunks(chunks);\n  }\n\n  parse(data) {\n    const { imgData, width, height } = parseJbig2(data);\n    this.width = width;\n    this.height = height;\n    return imgData;\n  }\n}\n\nexport { Jbig2Image };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Table C-2\nconst QeTable = [\n  { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n  { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n  { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n  { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n  { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n  { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n  { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n  { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n  { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n  { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n  { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n  { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n  { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n  { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n  { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n  { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n  { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n  { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n  { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n  { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n  { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n  { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n  { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n  { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n  { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n  { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n  { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n  { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n  { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n  { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n  { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n  { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n  { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n  { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n  { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n  { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n  { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n  { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n  { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n  { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n  { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n  { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n  { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n *   JPEG 2000 Part I Final Committee Draft Version 1.0\n *   Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n  // C.3.5 Initialisation of the decoder (INITDEC)\n  constructor(data, start, end) {\n    this.data = data;\n    this.bp = start;\n    this.dataEnd = end;\n\n    this.chigh = data[start];\n    this.clow = 0;\n\n    this.byteIn();\n\n    this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n    this.clow = (this.clow << 7) & 0xffff;\n    this.ct -= 7;\n    this.a = 0x8000;\n  }\n\n  // C.3.4 Compressed data input (BYTEIN)\n  byteIn() {\n    const data = this.data;\n    let bp = this.bp;\n\n    if (data[bp] === 0xff) {\n      if (data[bp + 1] > 0x8f) {\n        this.clow += 0xff00;\n        this.ct = 8;\n      } else {\n        bp++;\n        this.clow += data[bp] << 9;\n        this.ct = 7;\n        this.bp = bp;\n      }\n    } else {\n      bp++;\n      this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n      this.ct = 8;\n      this.bp = bp;\n    }\n    if (this.clow > 0xffff) {\n      this.chigh += this.clow >> 16;\n      this.clow &= 0xffff;\n    }\n  }\n\n  // C.3.2 Decoding a decision (DECODE)\n  readBit(contexts, pos) {\n    // Contexts are packed into 1 byte:\n    // highest 7 bits carry cx.index, lowest bit carries cx.mps\n    let cx_index = contexts[pos] >> 1,\n      cx_mps = contexts[pos] & 1;\n    const qeTableIcx = QeTable[cx_index];\n    const qeIcx = qeTableIcx.qe;\n    let d;\n    let a = this.a - qeIcx;\n\n    if (this.chigh < qeIcx) {\n      // exchangeLps\n      if (a < qeIcx) {\n        a = qeIcx;\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      } else {\n        a = qeIcx;\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      }\n    } else {\n      this.chigh -= qeIcx;\n      if ((a & 0x8000) !== 0) {\n        this.a = a;\n        return cx_mps;\n      }\n      // exchangeMps\n      if (a < qeIcx) {\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      } else {\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      }\n    }\n    // C.3.3 renormD;\n    do {\n      if (this.ct === 0) {\n        this.byteIn();\n      }\n\n      a <<= 1;\n      this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n      this.clow = (this.clow << 1) & 0xffff;\n      this.ct--;\n    } while ((a & 0x8000) === 0);\n    this.a = a;\n\n    contexts[pos] = (cx_index << 1) | cx_mps;\n    return d;\n  }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { JpegImage } from \"./jpg.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG's we use a library to decode these images and the stream behaves\n * like all the other DecodeStreams.\n */\nclass JpegStream extends DecodeStream {\n  constructor(stream, maybeLength, params) {\n    // Some images may contain 'junk' before the SOI (start-of-image) marker.\n    // Note: this seems to mainly affect inline images.\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      // Find the first byte of the SOI marker (0xFFD8).\n      if (ch === 0xff) {\n        stream.skip(-1); // Reset the stream position to the SOI.\n        break;\n      }\n    }\n    super(maybeLength);\n\n    this.stream = stream;\n    this.dict = stream.dict;\n    this.maybeLength = maybeLength;\n    this.params = params;\n  }\n\n  get bytes() {\n    // If `this.maybeLength` is null, we'll get the entire stream.\n    return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n  }\n\n  ensureBuffer(requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  }\n\n  readBlock() {\n    if (this.eof) {\n      return;\n    }\n    const jpegOptions = {\n      decodeTransform: undefined,\n      colorTransform: undefined,\n    };\n\n    // Checking if values need to be transformed before conversion.\n    const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n    if (this.forceRGB && Array.isArray(decodeArr)) {\n      const bitsPerComponent = this.dict.get(\"BPC\", \"BitsPerComponent\") || 8;\n      const decodeArrLength = decodeArr.length;\n      const transform = new Int32Array(decodeArrLength);\n      let transformNeeded = false;\n      const maxValue = (1 << bitsPerComponent) - 1;\n      for (let i = 0; i < decodeArrLength; i += 2) {\n        transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n        transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n        if (transform[i] !== 256 || transform[i + 1] !== 0) {\n          transformNeeded = true;\n        }\n      }\n      if (transformNeeded) {\n        jpegOptions.decodeTransform = transform;\n      }\n    }\n    // Fetching the 'ColorTransform' entry, if it exists.\n    if (this.params instanceof Dict) {\n      const colorTransform = this.params.get(\"ColorTransform\");\n      if (Number.isInteger(colorTransform)) {\n        jpegOptions.colorTransform = colorTransform;\n      }\n    }\n    const jpegImage = new JpegImage(jpegOptions);\n\n    jpegImage.parse(this.bytes);\n    const data = jpegImage.getData({\n      width: this.drawWidth,\n      height: this.drawHeight,\n      forceRGB: this.forceRGB,\n      isSourcePDF: true,\n    });\n    this.buffer = data;\n    this.bufferLength = data.length;\n    this.eof = true;\n  }\n}\n\nexport { JpegStream };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n  constructor(msg) {\n    super(`JPEG error: ${msg}`, \"JpegError\");\n  }\n}\n\nclass DNLMarkerError extends BaseException {\n  constructor(message, scanLines) {\n    super(message, \"DNLMarkerError\");\n    this.scanLines = scanLines;\n  }\n}\n\nclass EOIMarkerError extends BaseException {\n  constructor(msg) {\n    super(msg, \"EOIMarkerError\");\n  }\n}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n *   (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n *   (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n *   Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n *   (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\n// prettier-ignore\nconst dctZigZag = new Uint8Array([\n   0,\n   1,  8,\n  16,  9,  2,\n   3, 10, 17, 24,\n  32, 25, 18, 11, 4,\n   5, 12, 19, 26, 33, 40,\n  48, 41, 34, 27, 20, 13,  6,\n   7, 14, 21, 28, 35, 42, 49, 56,\n  57, 50, 43, 36, 29, 22, 15,\n  23, 30, 37, 44, 51, 58,\n  59, 52, 45, 38, 31,\n  39, 46, 53, 60,\n  61, 54, 47,\n  55, 62,\n  63\n]);\n\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896; // sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n  let k = 0,\n    i,\n    j,\n    length = 16;\n  while (length > 0 && !codeLengths[length - 1]) {\n    length--;\n  }\n  const code = [{ children: [], index: 0 }];\n  let p = code[0],\n    q;\n  for (i = 0; i < length; i++) {\n    for (j = 0; j < codeLengths[i]; j++) {\n      p = code.pop();\n      p.children[p.index] = values[k];\n      while (p.index > 0) {\n        p = code.pop();\n      }\n      p.index++;\n      code.push(p);\n      while (code.length <= i) {\n        code.push((q = { children: [], index: 0 }));\n        p.children[p.index] = q.children;\n        p = q;\n      }\n      k++;\n    }\n    if (i + 1 < length) {\n      // p here points to last code\n      code.push((q = { children: [], index: 0 }));\n      p.children[p.index] = q.children;\n      p = q;\n    }\n  }\n  return code[0].children;\n}\n\nfunction getBlockBufferOffset(component, row, col) {\n  return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(\n  data,\n  offset,\n  frame,\n  components,\n  resetInterval,\n  spectralStart,\n  spectralEnd,\n  successivePrev,\n  successive,\n  parseDNLMarker = false\n) {\n  const mcusPerLine = frame.mcusPerLine;\n  const progressive = frame.progressive;\n\n  const startOffset = offset;\n  let bitsData = 0,\n    bitsCount = 0;\n\n  function readBit() {\n    if (bitsCount > 0) {\n      bitsCount--;\n      return (bitsData >> bitsCount) & 1;\n    }\n    bitsData = data[offset++];\n    if (bitsData === 0xff) {\n      const nextByte = data[offset++];\n      if (nextByte) {\n        if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n          offset += 2; // Skip marker length.\n\n          const scanLines = readUint16(data, offset);\n          offset += 2;\n          if (scanLines > 0 && scanLines !== frame.scanLines) {\n            throw new DNLMarkerError(\n              \"Found DNL marker (0xFFDC) while parsing scan data\",\n              scanLines\n            );\n          }\n        } else if (nextByte === /* EOI = */ 0xd9) {\n          if (parseDNLMarker) {\n            // NOTE: only 8-bit JPEG images are supported in this decoder.\n            const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n            // Heuristic to attempt to handle corrupt JPEG images with too\n            // large `scanLines` parameter, by falling back to the currently\n            // parsed number of scanLines when it's at least (approximately)\n            // one order of magnitude smaller than expected (fixes\n            // issue10880.pdf and issue10989.pdf).\n            if (\n              maybeScanLines > 0 &&\n              Math.round(frame.scanLines / maybeScanLines) >= 10\n            ) {\n              throw new DNLMarkerError(\n                \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n                  \"possibly caused by incorrect `scanLines` parameter\",\n                maybeScanLines\n              );\n            }\n          }\n          throw new EOIMarkerError(\n            \"Found EOI marker (0xFFD9) while parsing scan data\"\n          );\n        }\n        throw new JpegError(\n          `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n        );\n      }\n      // unstuff 0\n    }\n    bitsCount = 7;\n    return bitsData >>> 7;\n  }\n\n  function decodeHuffman(tree) {\n    let node = tree;\n    while (true) {\n      node = node[readBit()];\n      switch (typeof node) {\n        case \"number\":\n          return node;\n        case \"object\":\n          continue;\n      }\n      throw new JpegError(\"invalid huffman sequence\");\n    }\n  }\n\n  function receive(length) {\n    let n = 0;\n    while (length > 0) {\n      n = (n << 1) | readBit();\n      length--;\n    }\n    return n;\n  }\n\n  function receiveAndExtend(length) {\n    if (length === 1) {\n      return readBit() === 1 ? 1 : -1;\n    }\n    const n = receive(length);\n    if (n >= 1 << (length - 1)) {\n      return n;\n    }\n    return n + (-1 << length) + 1;\n  }\n\n  function decodeBaseline(component, blockOffset) {\n    const t = decodeHuffman(component.huffmanTableDC);\n    const diff = t === 0 ? 0 : receiveAndExtend(t);\n    component.blockData[blockOffset] = component.pred += diff;\n    let k = 1;\n    while (k < 64) {\n      const rs = decodeHuffman(component.huffmanTableAC);\n      const s = rs & 15,\n        r = rs >> 4;\n      if (s === 0) {\n        if (r < 15) {\n          break;\n        }\n        k += 16;\n        continue;\n      }\n      k += r;\n      const z = dctZigZag[k];\n      component.blockData[blockOffset + z] = receiveAndExtend(s);\n      k++;\n    }\n  }\n\n  function decodeDCFirst(component, blockOffset) {\n    const t = decodeHuffman(component.huffmanTableDC);\n    const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n    component.blockData[blockOffset] = component.pred += diff;\n  }\n\n  function decodeDCSuccessive(component, blockOffset) {\n    component.blockData[blockOffset] |= readBit() << successive;\n  }\n\n  let eobrun = 0;\n  function decodeACFirst(component, blockOffset) {\n    if (eobrun > 0) {\n      eobrun--;\n      return;\n    }\n    let k = spectralStart;\n    const e = spectralEnd;\n    while (k <= e) {\n      const rs = decodeHuffman(component.huffmanTableAC);\n      const s = rs & 15,\n        r = rs >> 4;\n      if (s === 0) {\n        if (r < 15) {\n          eobrun = receive(r) + (1 << r) - 1;\n          break;\n        }\n        k += 16;\n        continue;\n      }\n      k += r;\n      const z = dctZigZag[k];\n      component.blockData[blockOffset + z] =\n        receiveAndExtend(s) * (1 << successive);\n      k++;\n    }\n  }\n\n  let successiveACState = 0,\n    successiveACNextValue;\n  function decodeACSuccessive(component, blockOffset) {\n    let k = spectralStart;\n    const e = spectralEnd;\n    let r = 0;\n    let s;\n    let rs;\n    while (k <= e) {\n      const offsetZ = blockOffset + dctZigZag[k];\n      const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n      switch (successiveACState) {\n        case 0: // initial state\n          rs = decodeHuffman(component.huffmanTableAC);\n          s = rs & 15;\n          r = rs >> 4;\n          if (s === 0) {\n            if (r < 15) {\n              eobrun = receive(r) + (1 << r);\n              successiveACState = 4;\n            } else {\n              r = 16;\n              successiveACState = 1;\n            }\n          } else {\n            if (s !== 1) {\n              throw new JpegError(\"invalid ACn encoding\");\n            }\n            successiveACNextValue = receiveAndExtend(s);\n            successiveACState = r ? 2 : 3;\n          }\n          continue;\n        case 1: // skipping r zero items\n        case 2:\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          } else {\n            r--;\n            if (r === 0) {\n              successiveACState = successiveACState === 2 ? 3 : 0;\n            }\n          }\n          break;\n        case 3: // set value for a zero item\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          } else {\n            component.blockData[offsetZ] = successiveACNextValue << successive;\n            successiveACState = 0;\n          }\n          break;\n        case 4: // eob\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          }\n          break;\n      }\n      k++;\n    }\n    if (successiveACState === 4) {\n      eobrun--;\n      if (eobrun === 0) {\n        successiveACState = 0;\n      }\n    }\n  }\n\n  let blockRow = 0;\n  function decodeMcu(component, decode, mcu, row, col) {\n    const mcuRow = (mcu / mcusPerLine) | 0;\n    const mcuCol = mcu % mcusPerLine;\n    blockRow = mcuRow * component.v + row;\n    const blockCol = mcuCol * component.h + col;\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n    decode(component, blockOffset);\n  }\n\n  function decodeBlock(component, decode, mcu) {\n    blockRow = (mcu / component.blocksPerLine) | 0;\n    const blockCol = mcu % component.blocksPerLine;\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n    decode(component, blockOffset);\n  }\n\n  const componentsLength = components.length;\n  let component, i, j, k, n;\n  let decodeFn;\n  if (progressive) {\n    if (spectralStart === 0) {\n      decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n    } else {\n      decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n    }\n  } else {\n    decodeFn = decodeBaseline;\n  }\n\n  let mcu = 0,\n    fileMarker;\n  let mcuExpected;\n  if (componentsLength === 1) {\n    mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n  } else {\n    mcuExpected = mcusPerLine * frame.mcusPerColumn;\n  }\n\n  let h, v;\n  while (mcu <= mcuExpected) {\n    // reset interval stuff\n    const mcuToRead = resetInterval\n      ? Math.min(mcuExpected - mcu, resetInterval)\n      : mcuExpected;\n\n    // The `mcuToRead === 0` case should only occur when all of the expected\n    // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n    // some corrupt JPEG images contain more data than intended and we thus\n    // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n    if (mcuToRead > 0) {\n      for (i = 0; i < componentsLength; i++) {\n        components[i].pred = 0;\n      }\n      eobrun = 0;\n\n      if (componentsLength === 1) {\n        component = components[0];\n        for (n = 0; n < mcuToRead; n++) {\n          decodeBlock(component, decodeFn, mcu);\n          mcu++;\n        }\n      } else {\n        for (n = 0; n < mcuToRead; n++) {\n          for (i = 0; i < componentsLength; i++) {\n            component = components[i];\n            h = component.h;\n            v = component.v;\n            for (j = 0; j < v; j++) {\n              for (k = 0; k < h; k++) {\n                decodeMcu(component, decodeFn, mcu, j, k);\n              }\n            }\n          }\n          mcu++;\n        }\n      }\n    }\n\n    // find marker\n    bitsCount = 0;\n    fileMarker = findNextFileMarker(data, offset);\n    if (!fileMarker) {\n      break; // Reached the end of the image data without finding any marker.\n    }\n    if (fileMarker.invalid) {\n      // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n      // past those to attempt to find a valid marker (fixes issue4090.pdf).\n      const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n      warn(\n        `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n      );\n      offset = fileMarker.offset;\n    }\n    if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n      // RSTx\n      offset += 2;\n    } else {\n      break;\n    }\n  }\n\n  return offset - startOffset;\n}\n\n// A port of poppler's IDCT method which in turn is taken from:\n//   Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n//   'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n//   IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n//   988-991.\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n  const qt = component.quantizationTable,\n    blockData = component.blockData;\n  let v0, v1, v2, v3, v4, v5, v6, v7;\n  let p0, p1, p2, p3, p4, p5, p6, p7;\n  let t;\n\n  if (!qt) {\n    throw new JpegError(\"missing required Quantization Table.\");\n  }\n\n  // inverse DCT on rows\n  for (let row = 0; row < 64; row += 8) {\n    // gather block data\n    p0 = blockData[blockBufferOffset + row];\n    p1 = blockData[blockBufferOffset + row + 1];\n    p2 = blockData[blockBufferOffset + row + 2];\n    p3 = blockData[blockBufferOffset + row + 3];\n    p4 = blockData[blockBufferOffset + row + 4];\n    p5 = blockData[blockBufferOffset + row + 5];\n    p6 = blockData[blockBufferOffset + row + 6];\n    p7 = blockData[blockBufferOffset + row + 7];\n\n    // dequant p0\n    p0 *= qt[row];\n\n    // check for all-zero AC coefficients\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n      t = (dctSqrt2 * p0 + 512) >> 10;\n      p[row] = t;\n      p[row + 1] = t;\n      p[row + 2] = t;\n      p[row + 3] = t;\n      p[row + 4] = t;\n      p[row + 5] = t;\n      p[row + 6] = t;\n      p[row + 7] = t;\n      continue;\n    }\n    // dequant p1 ... p7\n    p1 *= qt[row + 1];\n    p2 *= qt[row + 2];\n    p3 *= qt[row + 3];\n    p4 *= qt[row + 4];\n    p5 *= qt[row + 5];\n    p6 *= qt[row + 6];\n    p7 *= qt[row + 7];\n\n    // stage 4\n    v0 = (dctSqrt2 * p0 + 128) >> 8;\n    v1 = (dctSqrt2 * p4 + 128) >> 8;\n    v2 = p2;\n    v3 = p6;\n    v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n    v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n    v5 = p3 << 4;\n    v6 = p5 << 4;\n\n    // stage 3\n    v0 = (v0 + v1 + 1) >> 1;\n    v1 = v0 - v1;\n    t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n    v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n    v3 = t;\n    v4 = (v4 + v6 + 1) >> 1;\n    v6 = v4 - v6;\n    v7 = (v7 + v5 + 1) >> 1;\n    v5 = v7 - v5;\n\n    // stage 2\n    v0 = (v0 + v3 + 1) >> 1;\n    v3 = v0 - v3;\n    v1 = (v1 + v2 + 1) >> 1;\n    v2 = v1 - v2;\n    t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n    v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n    v7 = t;\n    t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n    v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n    v6 = t;\n\n    // stage 1\n    p[row] = v0 + v7;\n    p[row + 7] = v0 - v7;\n    p[row + 1] = v1 + v6;\n    p[row + 6] = v1 - v6;\n    p[row + 2] = v2 + v5;\n    p[row + 5] = v2 - v5;\n    p[row + 3] = v3 + v4;\n    p[row + 4] = v3 - v4;\n  }\n\n  // inverse DCT on columns\n  for (let col = 0; col < 8; ++col) {\n    p0 = p[col];\n    p1 = p[col + 8];\n    p2 = p[col + 16];\n    p3 = p[col + 24];\n    p4 = p[col + 32];\n    p5 = p[col + 40];\n    p6 = p[col + 48];\n    p7 = p[col + 56];\n\n    // check for all-zero AC coefficients\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n      t = (dctSqrt2 * p0 + 8192) >> 14;\n      // Convert to 8-bit.\n      if (t < -2040) {\n        t = 0;\n      } else if (t >= 2024) {\n        t = 255;\n      } else {\n        t = (t + 2056) >> 4;\n      }\n      blockData[blockBufferOffset + col] = t;\n      blockData[blockBufferOffset + col + 8] = t;\n      blockData[blockBufferOffset + col + 16] = t;\n      blockData[blockBufferOffset + col + 24] = t;\n      blockData[blockBufferOffset + col + 32] = t;\n      blockData[blockBufferOffset + col + 40] = t;\n      blockData[blockBufferOffset + col + 48] = t;\n      blockData[blockBufferOffset + col + 56] = t;\n      continue;\n    }\n\n    // stage 4\n    v0 = (dctSqrt2 * p0 + 2048) >> 12;\n    v1 = (dctSqrt2 * p4 + 2048) >> 12;\n    v2 = p2;\n    v3 = p6;\n    v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n    v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n    v5 = p3;\n    v6 = p5;\n\n    // stage 3\n    // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n    // converting to UInt8 range later.\n    v0 = ((v0 + v1 + 1) >> 1) + 4112;\n    v1 = v0 - v1;\n    t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n    v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n    v3 = t;\n    v4 = (v4 + v6 + 1) >> 1;\n    v6 = v4 - v6;\n    v7 = (v7 + v5 + 1) >> 1;\n    v5 = v7 - v5;\n\n    // stage 2\n    v0 = (v0 + v3 + 1) >> 1;\n    v3 = v0 - v3;\n    v1 = (v1 + v2 + 1) >> 1;\n    v2 = v1 - v2;\n    t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n    v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n    v7 = t;\n    t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n    v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n    v6 = t;\n\n    // stage 1\n    p0 = v0 + v7;\n    p7 = v0 - v7;\n    p1 = v1 + v6;\n    p6 = v1 - v6;\n    p2 = v2 + v5;\n    p5 = v2 - v5;\n    p3 = v3 + v4;\n    p4 = v3 - v4;\n\n    // Convert to 8-bit integers.\n    if (p0 < 16) {\n      p0 = 0;\n    } else if (p0 >= 4080) {\n      p0 = 255;\n    } else {\n      p0 >>= 4;\n    }\n    if (p1 < 16) {\n      p1 = 0;\n    } else if (p1 >= 4080) {\n      p1 = 255;\n    } else {\n      p1 >>= 4;\n    }\n    if (p2 < 16) {\n      p2 = 0;\n    } else if (p2 >= 4080) {\n      p2 = 255;\n    } else {\n      p2 >>= 4;\n    }\n    if (p3 < 16) {\n      p3 = 0;\n    } else if (p3 >= 4080) {\n      p3 = 255;\n    } else {\n      p3 >>= 4;\n    }\n    if (p4 < 16) {\n      p4 = 0;\n    } else if (p4 >= 4080) {\n      p4 = 255;\n    } else {\n      p4 >>= 4;\n    }\n    if (p5 < 16) {\n      p5 = 0;\n    } else if (p5 >= 4080) {\n      p5 = 255;\n    } else {\n      p5 >>= 4;\n    }\n    if (p6 < 16) {\n      p6 = 0;\n    } else if (p6 >= 4080) {\n      p6 = 255;\n    } else {\n      p6 >>= 4;\n    }\n    if (p7 < 16) {\n      p7 = 0;\n    } else if (p7 >= 4080) {\n      p7 = 255;\n    } else {\n      p7 >>= 4;\n    }\n\n    // store block data\n    blockData[blockBufferOffset + col] = p0;\n    blockData[blockBufferOffset + col + 8] = p1;\n    blockData[blockBufferOffset + col + 16] = p2;\n    blockData[blockBufferOffset + col + 24] = p3;\n    blockData[blockBufferOffset + col + 32] = p4;\n    blockData[blockBufferOffset + col + 40] = p5;\n    blockData[blockBufferOffset + col + 48] = p6;\n    blockData[blockBufferOffset + col + 56] = p7;\n  }\n}\n\nfunction buildComponentData(frame, component) {\n  const blocksPerLine = component.blocksPerLine;\n  const blocksPerColumn = component.blocksPerColumn;\n  const computationBuffer = new Int16Array(64);\n\n  for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n    for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n      const offset = getBlockBufferOffset(component, blockRow, blockCol);\n      quantizeAndInverse(component, offset, computationBuffer);\n    }\n  }\n  return component.blockData;\n}\n\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n  const maxPos = data.length - 1;\n  let newPos = startPos < currentPos ? startPos : currentPos;\n\n  if (currentPos >= maxPos) {\n    return null; // Don't attempt to read non-existent data and just return.\n  }\n  const currentMarker = readUint16(data, currentPos);\n  if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n    return {\n      invalid: null,\n      marker: currentMarker,\n      offset: currentPos,\n    };\n  }\n  let newMarker = readUint16(data, newPos);\n  while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n    if (++newPos >= maxPos) {\n      return null; // Don't attempt to read non-existent data and just return.\n    }\n    newMarker = readUint16(data, newPos);\n  }\n  return {\n    invalid: currentMarker.toString(16),\n    marker: newMarker,\n    offset: newPos,\n  };\n}\n\nclass JpegImage {\n  constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\n    this._decodeTransform = decodeTransform;\n    this._colorTransform = colorTransform;\n  }\n\n  parse(data, { dnlScanLines = null } = {}) {\n    function readDataBlock() {\n      const length = readUint16(data, offset);\n      offset += 2;\n      let endOffset = offset + length - 2;\n\n      const fileMarker = findNextFileMarker(data, endOffset, offset);\n      if (fileMarker && fileMarker.invalid) {\n        warn(\n          \"readDataBlock - incorrect length, current marker is: \" +\n            fileMarker.invalid\n        );\n        endOffset = fileMarker.offset;\n      }\n\n      const array = data.subarray(offset, endOffset);\n      offset += array.length;\n      return array;\n    }\n\n    function prepareComponents(frame) {\n      const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n      const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n      for (let i = 0, ii = frame.components.length; i < ii; i++) {\n        const component = frame.components[i];\n        const blocksPerLine = Math.ceil(\n          (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n        );\n        const blocksPerColumn = Math.ceil(\n          (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n        );\n        const blocksPerLineForMcu = mcusPerLine * component.h;\n        const blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n        const blocksBufferSize =\n          64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n        component.blockData = new Int16Array(blocksBufferSize);\n        component.blocksPerLine = blocksPerLine;\n        component.blocksPerColumn = blocksPerColumn;\n      }\n      frame.mcusPerLine = mcusPerLine;\n      frame.mcusPerColumn = mcusPerColumn;\n    }\n\n    let offset = 0;\n    let jfif = null;\n    let adobe = null;\n    let frame, resetInterval;\n    let numSOSMarkers = 0;\n    const quantizationTables = [];\n    const huffmanTablesAC = [],\n      huffmanTablesDC = [];\n\n    let fileMarker = readUint16(data, offset);\n    offset += 2;\n    if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n      throw new JpegError(\"SOI not found\");\n    }\n    fileMarker = readUint16(data, offset);\n    offset += 2;\n\n    markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n      let i, j, l;\n      switch (fileMarker) {\n        case 0xffe0: // APP0 (Application Specific)\n        case 0xffe1: // APP1\n        case 0xffe2: // APP2\n        case 0xffe3: // APP3\n        case 0xffe4: // APP4\n        case 0xffe5: // APP5\n        case 0xffe6: // APP6\n        case 0xffe7: // APP7\n        case 0xffe8: // APP8\n        case 0xffe9: // APP9\n        case 0xffea: // APP10\n        case 0xffeb: // APP11\n        case 0xffec: // APP12\n        case 0xffed: // APP13\n        case 0xffee: // APP14\n        case 0xffef: // APP15\n        case 0xfffe: // COM (Comment)\n          const appData = readDataBlock();\n\n          if (fileMarker === 0xffe0) {\n            // 'JFIF\\x00'\n            if (\n              appData[0] === 0x4a &&\n              appData[1] === 0x46 &&\n              appData[2] === 0x49 &&\n              appData[3] === 0x46 &&\n              appData[4] === 0\n            ) {\n              jfif = {\n                version: { major: appData[5], minor: appData[6] },\n                densityUnits: appData[7],\n                xDensity: (appData[8] << 8) | appData[9],\n                yDensity: (appData[10] << 8) | appData[11],\n                thumbWidth: appData[12],\n                thumbHeight: appData[13],\n                thumbData: appData.subarray(\n                  14,\n                  14 + 3 * appData[12] * appData[13]\n                ),\n              };\n            }\n          }\n          // TODO APP1 - Exif\n          if (fileMarker === 0xffee) {\n            // 'Adobe'\n            if (\n              appData[0] === 0x41 &&\n              appData[1] === 0x64 &&\n              appData[2] === 0x6f &&\n              appData[3] === 0x62 &&\n              appData[4] === 0x65\n            ) {\n              adobe = {\n                version: (appData[5] << 8) | appData[6],\n                flags0: (appData[7] << 8) | appData[8],\n                flags1: (appData[9] << 8) | appData[10],\n                transformCode: appData[11],\n              };\n            }\n          }\n          break;\n\n        case 0xffdb: // DQT (Define Quantization Tables)\n          const quantizationTablesLength = readUint16(data, offset);\n          offset += 2;\n          const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n          let z;\n          while (offset < quantizationTablesEnd) {\n            const quantizationTableSpec = data[offset++];\n            const tableData = new Uint16Array(64);\n            if (quantizationTableSpec >> 4 === 0) {\n              // 8 bit values\n              for (j = 0; j < 64; j++) {\n                z = dctZigZag[j];\n                tableData[z] = data[offset++];\n              }\n            } else if (quantizationTableSpec >> 4 === 1) {\n              // 16 bit values\n              for (j = 0; j < 64; j++) {\n                z = dctZigZag[j];\n                tableData[z] = readUint16(data, offset);\n                offset += 2;\n              }\n            } else {\n              throw new JpegError(\"DQT - invalid table spec\");\n            }\n            quantizationTables[quantizationTableSpec & 15] = tableData;\n          }\n          break;\n\n        case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n        case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n        case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n          if (frame) {\n            throw new JpegError(\"Only single frame JPEGs supported\");\n          }\n          offset += 2; // Skip marker length.\n\n          frame = {};\n          frame.extended = fileMarker === 0xffc1;\n          frame.progressive = fileMarker === 0xffc2;\n          frame.precision = data[offset++];\n          const sofScanLines = readUint16(data, offset);\n          offset += 2;\n          frame.scanLines = dnlScanLines || sofScanLines;\n          frame.samplesPerLine = readUint16(data, offset);\n          offset += 2;\n          frame.components = [];\n          frame.componentIds = {};\n          const componentsCount = data[offset++];\n          let maxH = 0,\n            maxV = 0;\n          for (i = 0; i < componentsCount; i++) {\n            const componentId = data[offset];\n            const h = data[offset + 1] >> 4;\n            const v = data[offset + 1] & 15;\n            if (maxH < h) {\n              maxH = h;\n            }\n            if (maxV < v) {\n              maxV = v;\n            }\n            const qId = data[offset + 2];\n            l = frame.components.push({\n              h,\n              v,\n              quantizationId: qId,\n              quantizationTable: null, // See comment below.\n            });\n            frame.componentIds[componentId] = l - 1;\n            offset += 3;\n          }\n          frame.maxH = maxH;\n          frame.maxV = maxV;\n          prepareComponents(frame);\n          break;\n\n        case 0xffc4: // DHT (Define Huffman Tables)\n          const huffmanLength = readUint16(data, offset);\n          offset += 2;\n          for (i = 2; i < huffmanLength; ) {\n            const huffmanTableSpec = data[offset++];\n            const codeLengths = new Uint8Array(16);\n            let codeLengthSum = 0;\n            for (j = 0; j < 16; j++, offset++) {\n              codeLengthSum += codeLengths[j] = data[offset];\n            }\n            const huffmanValues = new Uint8Array(codeLengthSum);\n            for (j = 0; j < codeLengthSum; j++, offset++) {\n              huffmanValues[j] = data[offset];\n            }\n            i += 17 + codeLengthSum;\n\n            (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n              huffmanTableSpec & 15\n            ] = buildHuffmanTable(codeLengths, huffmanValues);\n          }\n          break;\n\n        case 0xffdd: // DRI (Define Restart Interval)\n          offset += 2; // Skip marker length.\n\n          resetInterval = readUint16(data, offset);\n          offset += 2;\n          break;\n\n        case 0xffda: // SOS (Start of Scan)\n          // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n          // of the first scan segment and may only occur once in an image.\n          // Furthermore, to prevent an infinite loop, do *not* attempt to\n          // parse DNL markers during re-parsing of the JPEG scan data.\n          const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n          offset += 2; // Skip marker length.\n\n          const selectorsCount = data[offset++],\n            components = [];\n          for (i = 0; i < selectorsCount; i++) {\n            const index = data[offset++];\n            const componentIndex = frame.componentIds[index];\n            const component = frame.components[componentIndex];\n            component.index = index;\n            const tableSpec = data[offset++];\n            component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n            component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n            components.push(component);\n          }\n          const spectralStart = data[offset++],\n            spectralEnd = data[offset++],\n            successiveApproximation = data[offset++];\n          try {\n            const processed = decodeScan(\n              data,\n              offset,\n              frame,\n              components,\n              resetInterval,\n              spectralStart,\n              spectralEnd,\n              successiveApproximation >> 4,\n              successiveApproximation & 15,\n              parseDNLMarker\n            );\n            offset += processed;\n          } catch (ex) {\n            if (ex instanceof DNLMarkerError) {\n              warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n              return this.parse(data, { dnlScanLines: ex.scanLines });\n            } else if (ex instanceof EOIMarkerError) {\n              warn(`${ex.message} -- ignoring the rest of the image data.`);\n              break markerLoop;\n            }\n            throw ex;\n          }\n          break;\n\n        case 0xffdc: // DNL (Define Number of Lines)\n          // Ignore the marker, since it's being handled in `decodeScan`.\n          offset += 4;\n          break;\n\n        case 0xffff: // Fill bytes\n          if (data[offset] !== 0xff) {\n            // Avoid skipping a valid marker.\n            offset--;\n          }\n          break;\n\n        default:\n          // Could be incorrect encoding -- the last 0xFF byte of the previous\n          // block could have been eaten by the encoder, hence we fallback to\n          // `startPos = offset - 3` when looking for the next valid marker.\n          const nextFileMarker = findNextFileMarker(\n            data,\n            /* currentPos = */ offset - 2,\n            /* startPos = */ offset - 3\n          );\n          if (nextFileMarker && nextFileMarker.invalid) {\n            warn(\n              \"JpegImage.parse - unexpected data, current marker is: \" +\n                nextFileMarker.invalid\n            );\n            offset = nextFileMarker.offset;\n            break;\n          }\n          if (!nextFileMarker || offset >= data.length - 1) {\n            warn(\n              \"JpegImage.parse - reached the end of the image data \" +\n                \"without finding an EOI marker (0xFFD9).\"\n            );\n            break markerLoop;\n          }\n          throw new JpegError(\n            \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n          );\n      }\n      fileMarker = readUint16(data, offset);\n      offset += 2;\n    }\n\n    this.width = frame.samplesPerLine;\n    this.height = frame.scanLines;\n    this.jfif = jfif;\n    this.adobe = adobe;\n    this.components = [];\n    for (let i = 0, ii = frame.components.length; i < ii; i++) {\n      const component = frame.components[i];\n\n      // Prevent errors when DQT markers are placed after SOF{n} markers,\n      // by assigning the `quantizationTable` entry after the entire image\n      // has been parsed (fixes issue7406.pdf).\n      const quantizationTable = quantizationTables[component.quantizationId];\n      if (quantizationTable) {\n        component.quantizationTable = quantizationTable;\n      }\n\n      this.components.push({\n        index: component.index,\n        output: buildComponentData(frame, component),\n        scaleX: component.h / frame.maxH,\n        scaleY: component.v / frame.maxV,\n        blocksPerLine: component.blocksPerLine,\n        blocksPerColumn: component.blocksPerColumn,\n      });\n    }\n    this.numComponents = this.components.length;\n    return undefined;\n  }\n\n  _getLinearizedBlockData(width, height, isSourcePDF = false) {\n    const scaleX = this.width / width,\n      scaleY = this.height / height;\n\n    let component, componentScaleX, componentScaleY, blocksPerScanline;\n    let x, y, i, j, k;\n    let index;\n    let offset = 0;\n    let output;\n    const numComponents = this.components.length;\n    const dataLength = width * height * numComponents;\n    const data = new Uint8ClampedArray(dataLength);\n    const xScaleBlockOffset = new Uint32Array(width);\n    const mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n    let lastComponentScaleX;\n\n    for (i = 0; i < numComponents; i++) {\n      component = this.components[i];\n      componentScaleX = component.scaleX * scaleX;\n      componentScaleY = component.scaleY * scaleY;\n      offset = i;\n      output = component.output;\n      blocksPerScanline = (component.blocksPerLine + 1) << 3;\n      // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n      // component data, that's only necessary when `componentScaleX` changes.\n      if (componentScaleX !== lastComponentScaleX) {\n        for (x = 0; x < width; x++) {\n          j = 0 | (x * componentScaleX);\n          xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n        }\n        lastComponentScaleX = componentScaleX;\n      }\n      // linearize the blocks of the component\n      for (y = 0; y < height; y++) {\n        j = 0 | (y * componentScaleY);\n        index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n        for (x = 0; x < width; x++) {\n          data[offset] = output[index + xScaleBlockOffset[x]];\n          offset += numComponents;\n        }\n      }\n    }\n\n    // decodeTransform contains pairs of multiplier (-256..256) and additive\n    let transform = this._decodeTransform;\n\n    // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n    // (this can be observed by extracting the raw image data).\n    // Since the conversion algorithms (see below) were written primarily for\n    // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n    // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n    //\n    // Unfortunately it's not (always) possible to tell, from the image data\n    // alone, if it needs to be inverted. Thus in an attempt to provide better\n    // out-of-box behaviour when `JpegImage` is used standalone, default to\n    // inverting JPEG (CMYK) images if and only if the image data does *not*\n    // come from a PDF file and no `decodeTransform` was passed by the user.\n    if (!isSourcePDF && numComponents === 4 && !transform) {\n      transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n    }\n\n    if (transform) {\n      for (i = 0; i < dataLength; ) {\n        for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n          data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n        }\n      }\n    }\n    return data;\n  }\n\n  get _isColorConversionNeeded() {\n    if (this.adobe) {\n      // The adobe transform marker overrides any previous setting.\n      return !!this.adobe.transformCode;\n    }\n    if (this.numComponents === 3) {\n      if (this._colorTransform === 0) {\n        // If the Adobe transform marker is not present and the image\n        // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n        // then the colours should *not* be transformed.\n        return false;\n      } else if (\n        this.components[0].index === /* \"R\" = */ 0x52 &&\n        this.components[1].index === /* \"G\" = */ 0x47 &&\n        this.components[2].index === /* \"B\" = */ 0x42\n      ) {\n        // If the three components are indexed as RGB in ASCII\n        // then the colours should *not* be transformed.\n        return false;\n      }\n      return true;\n    }\n    // `this.numComponents !== 3`\n    if (this._colorTransform === 1) {\n      // If the Adobe transform marker is not present and the image\n      // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n      // then the colours should be transformed.\n      return true;\n    }\n    return false;\n  }\n\n  _convertYccToRgb(data) {\n    let Y, Cb, Cr;\n    for (let i = 0, length = data.length; i < length; i += 3) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      data[i] = Y - 179.456 + 1.402 * Cr;\n      data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n      data[i + 2] = Y - 226.816 + 1.772 * Cb;\n    }\n    return data;\n  }\n\n  _convertYcckToRgb(data) {\n    let Y, Cb, Cr, k;\n    let offset = 0;\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      k = data[i + 3];\n\n      data[offset++] =\n        -122.67195406894 +\n        Cb *\n          (-6.60635669420364e-5 * Cb +\n            0.000437130475926232 * Cr -\n            5.4080610064599e-5 * Y +\n            0.00048449797120281 * k -\n            0.154362151871126) +\n        Cr *\n          (-0.000957964378445773 * Cr +\n            0.000817076911346625 * Y -\n            0.00477271405408747 * k +\n            1.53380253221734) +\n        Y *\n          (0.000961250184130688 * Y -\n            0.00266257332283933 * k +\n            0.48357088451265) +\n        k * (-0.000336197177618394 * k + 0.484791561490776);\n\n      data[offset++] =\n        107.268039397724 +\n        Cb *\n          (2.19927104525741e-5 * Cb -\n            0.000640992018297945 * Cr +\n            0.000659397001245577 * Y +\n            0.000426105652938837 * k -\n            0.176491792462875) +\n        Cr *\n          (-0.000778269941513683 * Cr +\n            0.00130872261408275 * Y +\n            0.000770482631801132 * k -\n            0.151051492775562) +\n        Y *\n          (0.00126935368114843 * Y -\n            0.00265090189010898 * k +\n            0.25802910206845) +\n        k * (-0.000318913117588328 * k - 0.213742400323665);\n\n      data[offset++] =\n        -20.810012546947 +\n        Cb *\n          (-0.000570115196973677 * Cb -\n            2.63409051004589e-5 * Cr +\n            0.0020741088115012 * Y -\n            0.00288260236853442 * k +\n            0.814272968359295) +\n        Cr *\n          (-1.53496057440975e-5 * Cr -\n            0.000132689043961446 * Y +\n            0.000560833691242812 * k -\n            0.195152027534049) +\n        Y *\n          (0.00174418132927582 * Y -\n            0.00255243321439347 * k +\n            0.116935020465145) +\n        k * (-0.000343531996510555 * k + 0.24165260232407);\n    }\n    // Ensure that only the converted RGB data is returned.\n    return data.subarray(0, offset);\n  }\n\n  _convertYcckToCmyk(data) {\n    let Y, Cb, Cr;\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      data[i] = 434.456 - Y - 1.402 * Cr;\n      data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n      data[i + 2] = 481.816 - Y - 1.772 * Cb;\n      // K in data[i + 3] is unchanged\n    }\n    return data;\n  }\n\n  _convertCmykToRgb(data) {\n    let c, m, y, k;\n    let offset = 0;\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      c = data[i];\n      m = data[i + 1];\n      y = data[i + 2];\n      k = data[i + 3];\n\n      data[offset++] =\n        255 +\n        c *\n          (-0.00006747147073602441 * c +\n            0.0008379262121013727 * m +\n            0.0002894718188643294 * y +\n            0.003264231057537806 * k -\n            1.1185611867203937) +\n        m *\n          (0.000026374107616089405 * m -\n            0.00008626949158638572 * y -\n            0.0002748769067499491 * k -\n            0.02155688794978967) +\n        y *\n          (-0.00003878099212869363 * y -\n            0.0003267808279485286 * k +\n            0.0686742238595345) -\n        k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n      data[offset++] =\n        255 +\n        c *\n          (0.00013596372813588848 * c +\n            0.000924537132573585 * m +\n            0.00010567359618683593 * y +\n            0.0004791864687436512 * k -\n            0.3109689587515875) +\n        m *\n          (-0.00023545346108370344 * m +\n            0.0002702845253534714 * y +\n            0.0020200308977307156 * k -\n            0.7488052167015494) +\n        y *\n          (0.00006834815998235662 * y +\n            0.00015168452363460973 * k -\n            0.09751927774728933) -\n        k * (0.0003189131175883281 * k + 0.7364883807733168);\n\n      data[offset++] =\n        255 +\n        c *\n          (0.000013598650411385307 * c +\n            0.00012423956175490851 * m +\n            0.0004751985097583589 * y -\n            0.0000036729317476630422 * k -\n            0.05562186980264034) +\n        m *\n          (0.00016141380598724676 * m +\n            0.0009692239130725186 * y +\n            0.0007782692450036253 * k -\n            0.44015232367526463) +\n        y *\n          (5.068882914068769e-7 * y +\n            0.0017778369011375071 * k -\n            0.7591454649749609) -\n        k * (0.0003435319965105553 * k + 0.7063770186160144);\n    }\n    // Ensure that only the converted RGB data is returned.\n    return data.subarray(0, offset);\n  }\n\n  getData({ width, height, forceRGB = false, isSourcePDF = false }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        isSourcePDF === true,\n        'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n      );\n    }\n    if (this.numComponents > 4) {\n      throw new JpegError(\"Unsupported color mode\");\n    }\n    // Type of data: Uint8ClampedArray(width * height * numComponents)\n    const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n    if (this.numComponents === 1 && forceRGB) {\n      const dataLength = data.length;\n      const rgbData = new Uint8ClampedArray(dataLength * 3);\n      let offset = 0;\n      for (let i = 0; i < dataLength; i++) {\n        const grayColor = data[i];\n        rgbData[offset++] = grayColor;\n        rgbData[offset++] = grayColor;\n        rgbData[offset++] = grayColor;\n      }\n      return rgbData;\n    } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n      return this._convertYccToRgb(data);\n    } else if (this.numComponents === 4) {\n      if (this._isColorConversionNeeded) {\n        if (forceRGB) {\n          return this._convertYcckToRgb(data);\n        }\n        return this._convertYcckToCmyk(data);\n      } else if (forceRGB) {\n        return this._convertCmykToRgb(data);\n      }\n    }\n    return data;\n  }\n}\n\nexport { JpegImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass JpxStream extends DecodeStream {\n  constructor(stream, maybeLength, params) {\n    super(maybeLength);\n\n    this.stream = stream;\n    this.dict = stream.dict;\n    this.maybeLength = maybeLength;\n    this.params = params;\n  }\n\n  get bytes() {\n    // If `this.maybeLength` is null, we'll get the entire stream.\n    return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n  }\n\n  ensureBuffer(requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  }\n\n  readBlock() {\n    if (this.eof) {\n      return;\n    }\n    const jpxImage = new JpxImage();\n    jpxImage.parse(this.bytes);\n\n    const width = jpxImage.width;\n    const height = jpxImage.height;\n    const componentsCount = jpxImage.componentsCount;\n    const tileCount = jpxImage.tiles.length;\n    if (tileCount === 1) {\n      this.buffer = jpxImage.tiles[0].items;\n    } else {\n      const data = new Uint8ClampedArray(width * height * componentsCount);\n\n      for (let k = 0; k < tileCount; k++) {\n        const tileComponents = jpxImage.tiles[k];\n        const tileWidth = tileComponents.width;\n        const tileHeight = tileComponents.height;\n        const tileLeft = tileComponents.left;\n        const tileTop = tileComponents.top;\n\n        const src = tileComponents.items;\n        let srcPosition = 0;\n        let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n        const imgRowSize = width * componentsCount;\n        const tileRowSize = tileWidth * componentsCount;\n\n        for (let j = 0; j < tileHeight; j++) {\n          const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n          data.set(rowBytes, dataPosition);\n          srcPosition += tileRowSize;\n          dataPosition += imgRowSize;\n        }\n      }\n      this.buffer = data;\n    }\n    this.bufferLength = this.buffer.length;\n    this.eof = true;\n  }\n}\n\nexport { JpxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, info, unreachable, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n  constructor(msg) {\n    super(`JPX error: ${msg}`, \"JpxError\");\n  }\n}\n\n// Table E.1\nconst SubbandsGainLog2 = {\n  LL: 0,\n  LH: 1,\n  HL: 1,\n  HH: 2,\n};\n\nclass JpxImage {\n  constructor() {\n    this.failOnCorruptedImage = false;\n  }\n\n  parse(data) {\n    const head = readUint16(data, 0);\n    // No box header, immediate start of codestream (SOC)\n    if (head === 0xff4f) {\n      this.parseCodestream(data, 0, data.length);\n      return;\n    }\n\n    const length = data.length;\n    let position = 0;\n    while (position < length) {\n      let headerSize = 8;\n      let lbox = readUint32(data, position);\n      const tbox = readUint32(data, position + 4);\n      position += headerSize;\n      if (lbox === 1) {\n        // XLBox: read UInt64 according to spec.\n        // JavaScript's int precision of 53 bit should be sufficient here.\n        lbox =\n          readUint32(data, position) * 4294967296 +\n          readUint32(data, position + 4);\n        position += 8;\n        headerSize += 8;\n      }\n      if (lbox === 0) {\n        lbox = length - position + headerSize;\n      }\n      if (lbox < headerSize) {\n        throw new JpxError(\"Invalid box field size\");\n      }\n      const dataLength = lbox - headerSize;\n      let jumpDataLength = true;\n      switch (tbox) {\n        case 0x6a703268: // 'jp2h'\n          jumpDataLength = false; // parsing child boxes\n          break;\n        case 0x636f6c72: // 'colr'\n          // Colorspaces are not used, the CS from the PDF is used.\n          const method = data[position];\n          if (method === 1) {\n            // enumerated colorspace\n            const colorspace = readUint32(data, position + 3);\n            switch (colorspace) {\n              case 16: // this indicates a sRGB colorspace\n              case 17: // this indicates a grayscale colorspace\n              case 18: // this indicates a YUV colorspace\n                break;\n              default:\n                warn(\"Unknown colorspace \" + colorspace);\n                break;\n            }\n          } else if (method === 2) {\n            info(\"ICC profile not supported\");\n          }\n          break;\n        case 0x6a703263: // 'jp2c'\n          this.parseCodestream(data, position, position + dataLength);\n          break;\n        case 0x6a502020: // 'jP\\024\\024'\n          if (readUint32(data, position) !== 0x0d0a870a) {\n            warn(\"Invalid JP2 signature\");\n          }\n          break;\n        // The following header types are valid but currently not used:\n        case 0x6a501a1a: // 'jP\\032\\032'\n        case 0x66747970: // 'ftyp'\n        case 0x72726571: // 'rreq'\n        case 0x72657320: // 'res '\n        case 0x69686472: // 'ihdr'\n          break;\n        default:\n          const headerType = String.fromCharCode(\n            (tbox >> 24) & 0xff,\n            (tbox >> 16) & 0xff,\n            (tbox >> 8) & 0xff,\n            tbox & 0xff\n          );\n          warn(`Unsupported header type ${tbox} (${headerType}).`);\n          break;\n      }\n      if (jumpDataLength) {\n        position += dataLength;\n      }\n    }\n  }\n\n  parseImageProperties(stream) {\n    let newByte = stream.getByte();\n    while (newByte >= 0) {\n      const oldByte = newByte;\n      newByte = stream.getByte();\n      const code = (oldByte << 8) | newByte;\n      // Image and tile size (SIZ)\n      if (code === 0xff51) {\n        stream.skip(4);\n        const Xsiz = stream.getInt32() >>> 0; // Byte 4\n        const Ysiz = stream.getInt32() >>> 0; // Byte 8\n        const XOsiz = stream.getInt32() >>> 0; // Byte 12\n        const YOsiz = stream.getInt32() >>> 0; // Byte 16\n        stream.skip(16);\n        const Csiz = stream.getUint16(); // Byte 36\n        this.width = Xsiz - XOsiz;\n        this.height = Ysiz - YOsiz;\n        this.componentsCount = Csiz;\n        // Results are always returned as `Uint8ClampedArray`s.\n        this.bitsPerComponent = 8;\n        return;\n      }\n    }\n    throw new JpxError(\"No size marker found in JPX stream\");\n  }\n\n  parseCodestream(data, start, end) {\n    const context = {};\n    let doNotRecover = false;\n    try {\n      let position = start;\n      while (position + 1 < end) {\n        const code = readUint16(data, position);\n        position += 2;\n\n        let length = 0,\n          j,\n          sqcd,\n          spqcds,\n          spqcdSize,\n          scalarExpounded,\n          tile;\n        switch (code) {\n          case 0xff4f: // Start of codestream (SOC)\n            context.mainHeader = true;\n            break;\n          case 0xffd9: // End of codestream (EOC)\n            break;\n          case 0xff51: // Image and tile size (SIZ)\n            length = readUint16(data, position);\n            const siz = {};\n            siz.Xsiz = readUint32(data, position + 4);\n            siz.Ysiz = readUint32(data, position + 8);\n            siz.XOsiz = readUint32(data, position + 12);\n            siz.YOsiz = readUint32(data, position + 16);\n            siz.XTsiz = readUint32(data, position + 20);\n            siz.YTsiz = readUint32(data, position + 24);\n            siz.XTOsiz = readUint32(data, position + 28);\n            siz.YTOsiz = readUint32(data, position + 32);\n            const componentsCount = readUint16(data, position + 36);\n            siz.Csiz = componentsCount;\n            const components = [];\n            j = position + 38;\n            for (let i = 0; i < componentsCount; i++) {\n              const component = {\n                precision: (data[j] & 0x7f) + 1,\n                isSigned: !!(data[j] & 0x80),\n                XRsiz: data[j + 1],\n                YRsiz: data[j + 2],\n              };\n              j += 3;\n              calculateComponentDimensions(component, siz);\n              components.push(component);\n            }\n            context.SIZ = siz;\n            context.components = components;\n            calculateTileGrids(context, components);\n            context.QCC = [];\n            context.COC = [];\n            break;\n          case 0xff5c: // Quantization default (QCD)\n            length = readUint16(data, position);\n            const qcd = {};\n            j = position + 2;\n            sqcd = data[j++];\n            switch (sqcd & 0x1f) {\n              case 0:\n                spqcdSize = 8;\n                scalarExpounded = true;\n                break;\n              case 1:\n                spqcdSize = 16;\n                scalarExpounded = false;\n                break;\n              case 2:\n                spqcdSize = 16;\n                scalarExpounded = true;\n                break;\n              default:\n                throw new Error(\"Invalid SQcd value \" + sqcd);\n            }\n            qcd.noQuantization = spqcdSize === 8;\n            qcd.scalarExpounded = scalarExpounded;\n            qcd.guardBits = sqcd >> 5;\n            spqcds = [];\n            while (j < length + position) {\n              const spqcd = {};\n              if (spqcdSize === 8) {\n                spqcd.epsilon = data[j++] >> 3;\n                spqcd.mu = 0;\n              } else {\n                spqcd.epsilon = data[j] >> 3;\n                spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                j += 2;\n              }\n              spqcds.push(spqcd);\n            }\n            qcd.SPqcds = spqcds;\n            if (context.mainHeader) {\n              context.QCD = qcd;\n            } else {\n              context.currentTile.QCD = qcd;\n              context.currentTile.QCC = [];\n            }\n            break;\n          case 0xff5d: // Quantization component (QCC)\n            length = readUint16(data, position);\n            const qcc = {};\n            j = position + 2;\n            let cqcc;\n            if (context.SIZ.Csiz < 257) {\n              cqcc = data[j++];\n            } else {\n              cqcc = readUint16(data, j);\n              j += 2;\n            }\n            sqcd = data[j++];\n            switch (sqcd & 0x1f) {\n              case 0:\n                spqcdSize = 8;\n                scalarExpounded = true;\n                break;\n              case 1:\n                spqcdSize = 16;\n                scalarExpounded = false;\n                break;\n              case 2:\n                spqcdSize = 16;\n                scalarExpounded = true;\n                break;\n              default:\n                throw new Error(\"Invalid SQcd value \" + sqcd);\n            }\n            qcc.noQuantization = spqcdSize === 8;\n            qcc.scalarExpounded = scalarExpounded;\n            qcc.guardBits = sqcd >> 5;\n            spqcds = [];\n            while (j < length + position) {\n              const spqcd = {};\n              if (spqcdSize === 8) {\n                spqcd.epsilon = data[j++] >> 3;\n                spqcd.mu = 0;\n              } else {\n                spqcd.epsilon = data[j] >> 3;\n                spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                j += 2;\n              }\n              spqcds.push(spqcd);\n            }\n            qcc.SPqcds = spqcds;\n            if (context.mainHeader) {\n              context.QCC[cqcc] = qcc;\n            } else {\n              context.currentTile.QCC[cqcc] = qcc;\n            }\n            break;\n          case 0xff52: // Coding style default (COD)\n            length = readUint16(data, position);\n            const cod = {};\n            j = position + 2;\n            const scod = data[j++];\n            cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n            cod.sopMarkerUsed = !!(scod & 2);\n            cod.ephMarkerUsed = !!(scod & 4);\n            cod.progressionOrder = data[j++];\n            cod.layersCount = readUint16(data, j);\n            j += 2;\n            cod.multipleComponentTransform = data[j++];\n\n            cod.decompositionLevelsCount = data[j++];\n            cod.xcb = (data[j++] & 0xf) + 2;\n            cod.ycb = (data[j++] & 0xf) + 2;\n            const blockStyle = data[j++];\n            cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n            cod.resetContextProbabilities = !!(blockStyle & 2);\n            cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n            cod.verticallyStripe = !!(blockStyle & 8);\n            cod.predictableTermination = !!(blockStyle & 16);\n            cod.segmentationSymbolUsed = !!(blockStyle & 32);\n            cod.reversibleTransformation = data[j++];\n            if (cod.entropyCoderWithCustomPrecincts) {\n              const precinctsSizes = [];\n              while (j < length + position) {\n                const precinctsSize = data[j++];\n                precinctsSizes.push({\n                  PPx: precinctsSize & 0xf,\n                  PPy: precinctsSize >> 4,\n                });\n              }\n              cod.precinctsSizes = precinctsSizes;\n            }\n            const unsupported = [];\n            if (cod.selectiveArithmeticCodingBypass) {\n              unsupported.push(\"selectiveArithmeticCodingBypass\");\n            }\n            if (cod.terminationOnEachCodingPass) {\n              unsupported.push(\"terminationOnEachCodingPass\");\n            }\n            if (cod.verticallyStripe) {\n              unsupported.push(\"verticallyStripe\");\n            }\n            if (cod.predictableTermination) {\n              unsupported.push(\"predictableTermination\");\n            }\n            if (unsupported.length > 0) {\n              doNotRecover = true;\n              warn(`JPX: Unsupported COD options (${unsupported.join(\", \")}).`);\n            }\n            if (context.mainHeader) {\n              context.COD = cod;\n            } else {\n              context.currentTile.COD = cod;\n              context.currentTile.COC = [];\n            }\n            break;\n          case 0xff90: // Start of tile-part (SOT)\n            length = readUint16(data, position);\n            tile = {};\n            tile.index = readUint16(data, position + 2);\n            tile.length = readUint32(data, position + 4);\n            tile.dataEnd = tile.length + position - 2;\n            tile.partIndex = data[position + 8];\n            tile.partsCount = data[position + 9];\n\n            context.mainHeader = false;\n            if (tile.partIndex === 0) {\n              // reset component specific settings\n              tile.COD = context.COD;\n              tile.COC = context.COC.slice(0); // clone of the global COC\n              tile.QCD = context.QCD;\n              tile.QCC = context.QCC.slice(0); // clone of the global COC\n            }\n            context.currentTile = tile;\n            break;\n          case 0xff93: // Start of data (SOD)\n            tile = context.currentTile;\n            if (tile.partIndex === 0) {\n              initializeTile(context, tile.index);\n              buildPackets(context);\n            }\n\n            // moving to the end of the data\n            length = tile.dataEnd - position;\n            parseTilePackets(context, data, position, length);\n            break;\n          case 0xff53: // Coding style component (COC)\n            warn(\"JPX: Codestream code 0xFF53 (COC) is not implemented.\");\n          /* falls through */\n          case 0xff55: // Tile-part lengths, main header (TLM)\n          case 0xff57: // Packet length, main header (PLM)\n          case 0xff58: // Packet length, tile-part header (PLT)\n          case 0xff64: // Comment (COM)\n            length = readUint16(data, position);\n            // skipping content\n            break;\n          default:\n            throw new Error(\"Unknown codestream code: \" + code.toString(16));\n        }\n        position += length;\n      }\n    } catch (e) {\n      if (doNotRecover || this.failOnCorruptedImage) {\n        throw new JpxError(e.message);\n      } else {\n        warn(`JPX: Trying to recover from: \"${e.message}\".`);\n      }\n    }\n    this.tiles = transformComponents(context);\n    this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n    this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n    this.componentsCount = context.SIZ.Csiz;\n  }\n}\n\nfunction calculateComponentDimensions(component, siz) {\n  // Section B.2 Component mapping\n  component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n  component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n  component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n  component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n  component.width = component.x1 - component.x0;\n  component.height = component.y1 - component.y0;\n}\nfunction calculateTileGrids(context, components) {\n  const siz = context.SIZ;\n  // Section B.3 Division into tile and tile-components\n  const tiles = [];\n  let tile;\n  const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n  const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n  for (let q = 0; q < numYtiles; q++) {\n    for (let p = 0; p < numXtiles; p++) {\n      tile = {};\n      tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n      tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n      tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n      tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n      tile.width = tile.tx1 - tile.tx0;\n      tile.height = tile.ty1 - tile.ty0;\n      tile.components = [];\n      tiles.push(tile);\n    }\n  }\n  context.tiles = tiles;\n\n  const componentsCount = siz.Csiz;\n  for (let i = 0, ii = componentsCount; i < ii; i++) {\n    const component = components[i];\n    for (let j = 0, jj = tiles.length; j < jj; j++) {\n      const tileComponent = {};\n      tile = tiles[j];\n      tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n      tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n      tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n      tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n      tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n      tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n      tile.components[i] = tileComponent;\n    }\n  }\n}\nfunction getBlocksDimensions(context, component, r) {\n  const codOrCoc = component.codingStyleParameters;\n  const result = {};\n  if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n    result.PPx = 15;\n    result.PPy = 15;\n  } else {\n    result.PPx = codOrCoc.precinctsSizes[r].PPx;\n    result.PPy = codOrCoc.precinctsSizes[r].PPy;\n  }\n  // calculate codeblock size as described in section B.7\n  result.xcb_ =\n    r > 0\n      ? Math.min(codOrCoc.xcb, result.PPx - 1)\n      : Math.min(codOrCoc.xcb, result.PPx);\n  result.ycb_ =\n    r > 0\n      ? Math.min(codOrCoc.ycb, result.PPy - 1)\n      : Math.min(codOrCoc.ycb, result.PPy);\n  return result;\n}\nfunction buildPrecincts(context, resolution, dimensions) {\n  // Section B.6 Division resolution to precincts\n  const precinctWidth = 1 << dimensions.PPx;\n  const precinctHeight = 1 << dimensions.PPy;\n  // Jasper introduces codeblock groups for mapping each subband codeblocks\n  // to precincts. Precinct partition divides a resolution according to width\n  // and height parameters. The subband that belongs to the resolution level\n  // has a different size than the level, unless it is the zero resolution.\n\n  // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n  // The precinct partitioning for a particular subband is derived from a\n  // partitioning of its parent LL band (i.e., the LL band at the next higher\n  // resolution level)... The LL band associated with each resolution level is\n  // divided into precincts... Each of the resulting precinct regions is then\n  // mapped into its child subbands (if any) at the next lower resolution\n  // level. This is accomplished by using the coordinate transformation\n  // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n  // coordinates of a point in the LL band and child subband, respectively.\n  const isZeroRes = resolution.resLevel === 0;\n  const precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n  const precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n  const numprecinctswide =\n    resolution.trx1 > resolution.trx0\n      ? Math.ceil(resolution.trx1 / precinctWidth) -\n        Math.floor(resolution.trx0 / precinctWidth)\n      : 0;\n  const numprecinctshigh =\n    resolution.try1 > resolution.try0\n      ? Math.ceil(resolution.try1 / precinctHeight) -\n        Math.floor(resolution.try0 / precinctHeight)\n      : 0;\n  const numprecincts = numprecinctswide * numprecinctshigh;\n\n  resolution.precinctParameters = {\n    precinctWidth,\n    precinctHeight,\n    numprecinctswide,\n    numprecinctshigh,\n    numprecincts,\n    precinctWidthInSubband,\n    precinctHeightInSubband,\n  };\n}\nfunction buildCodeblocks(context, subband, dimensions) {\n  // Section B.7 Division sub-band into code-blocks\n  const xcb_ = dimensions.xcb_;\n  const ycb_ = dimensions.ycb_;\n  const codeblockWidth = 1 << xcb_;\n  const codeblockHeight = 1 << ycb_;\n  const cbx0 = subband.tbx0 >> xcb_;\n  const cby0 = subband.tby0 >> ycb_;\n  const cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n  const cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n  const precinctParameters = subband.resolution.precinctParameters;\n  const codeblocks = [];\n  const precincts = [];\n  let i, j, codeblock, precinctNumber;\n  for (j = cby0; j < cby1; j++) {\n    for (i = cbx0; i < cbx1; i++) {\n      codeblock = {\n        cbx: i,\n        cby: j,\n        tbx0: codeblockWidth * i,\n        tby0: codeblockHeight * j,\n        tbx1: codeblockWidth * (i + 1),\n        tby1: codeblockHeight * (j + 1),\n      };\n\n      codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n      codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n      codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n      codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n      // Calculate precinct number for this codeblock, codeblock position\n      // should be relative to its subband, use actual dimension and position\n      // See comment about codeblock group width and height\n      const pi = Math.floor(\n        (codeblock.tbx0_ - subband.tbx0) /\n          precinctParameters.precinctWidthInSubband\n      );\n      const pj = Math.floor(\n        (codeblock.tby0_ - subband.tby0) /\n          precinctParameters.precinctHeightInSubband\n      );\n      precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n      codeblock.precinctNumber = precinctNumber;\n      codeblock.subbandType = subband.type;\n      codeblock.Lblock = 3;\n\n      if (\n        codeblock.tbx1_ <= codeblock.tbx0_ ||\n        codeblock.tby1_ <= codeblock.tby0_\n      ) {\n        continue;\n      }\n      codeblocks.push(codeblock);\n      // building precinct for the sub-band\n      let precinct = precincts[precinctNumber];\n      if (precinct !== undefined) {\n        if (i < precinct.cbxMin) {\n          precinct.cbxMin = i;\n        } else if (i > precinct.cbxMax) {\n          precinct.cbxMax = i;\n        }\n        if (j < precinct.cbyMin) {\n          precinct.cbxMin = j;\n        } else if (j > precinct.cbyMax) {\n          precinct.cbyMax = j;\n        }\n      } else {\n        precincts[precinctNumber] = precinct = {\n          cbxMin: i,\n          cbyMin: j,\n          cbxMax: i,\n          cbyMax: j,\n        };\n      }\n      codeblock.precinct = precinct;\n    }\n  }\n  subband.codeblockParameters = {\n    codeblockWidth: xcb_,\n    codeblockHeight: ycb_,\n    numcodeblockwide: cbx1 - cbx0 + 1,\n    numcodeblockhigh: cby1 - cby0 + 1,\n  };\n  subband.codeblocks = codeblocks;\n  subband.precincts = precincts;\n}\nfunction createPacket(resolution, precinctNumber, layerNumber) {\n  const precinctCodeblocks = [];\n  // Section B.10.8 Order of info in packet\n  const subbands = resolution.subbands;\n  // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n  for (let i = 0, ii = subbands.length; i < ii; i++) {\n    const subband = subbands[i];\n    const codeblocks = subband.codeblocks;\n    for (let j = 0, jj = codeblocks.length; j < jj; j++) {\n      const codeblock = codeblocks[j];\n      if (codeblock.precinctNumber !== precinctNumber) {\n        continue;\n      }\n      precinctCodeblocks.push(codeblock);\n    }\n  }\n  return {\n    layerNumber,\n    codeblocks: precinctCodeblocks,\n  };\n}\nfunction LayerResolutionComponentPositionIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  let maxDecompositionLevelsCount = 0;\n  for (let q = 0; q < componentsCount; q++) {\n    maxDecompositionLevelsCount = Math.max(\n      maxDecompositionLevelsCount,\n      tile.components[q].codingStyleParameters.decompositionLevelsCount\n    );\n  }\n\n  let l = 0,\n    r = 0,\n    i = 0,\n    k = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.1 Layer-resolution-component-position\n    for (; l < layersCount; l++) {\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; i < componentsCount; i++) {\n          const component = tile.components[i];\n          if (r > component.codingStyleParameters.decompositionLevelsCount) {\n            continue;\n          }\n\n          const resolution = component.resolutions[r];\n          const numprecincts = resolution.precinctParameters.numprecincts;\n          for (; k < numprecincts; ) {\n            const packet = createPacket(resolution, k, l);\n            k++;\n            return packet;\n          }\n          k = 0;\n        }\n        i = 0;\n      }\n      r = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction ResolutionLayerComponentPositionIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  let maxDecompositionLevelsCount = 0;\n  for (let q = 0; q < componentsCount; q++) {\n    maxDecompositionLevelsCount = Math.max(\n      maxDecompositionLevelsCount,\n      tile.components[q].codingStyleParameters.decompositionLevelsCount\n    );\n  }\n\n  let r = 0,\n    l = 0,\n    i = 0,\n    k = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.2 Resolution-layer-component-position\n    for (; r <= maxDecompositionLevelsCount; r++) {\n      for (; l < layersCount; l++) {\n        for (; i < componentsCount; i++) {\n          const component = tile.components[i];\n          if (r > component.codingStyleParameters.decompositionLevelsCount) {\n            continue;\n          }\n\n          const resolution = component.resolutions[r];\n          const numprecincts = resolution.precinctParameters.numprecincts;\n          for (; k < numprecincts; ) {\n            const packet = createPacket(resolution, k, l);\n            k++;\n            return packet;\n          }\n          k = 0;\n        }\n        i = 0;\n      }\n      l = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction ResolutionPositionComponentLayerIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  let l, r, c, p;\n  let maxDecompositionLevelsCount = 0;\n  for (c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    maxDecompositionLevelsCount = Math.max(\n      maxDecompositionLevelsCount,\n      component.codingStyleParameters.decompositionLevelsCount\n    );\n  }\n  const maxNumPrecinctsInLevel = new Int32Array(\n    maxDecompositionLevelsCount + 1\n  );\n  for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n    let maxNumPrecincts = 0;\n    for (c = 0; c < componentsCount; ++c) {\n      const resolutions = tile.components[c].resolutions;\n      if (r < resolutions.length) {\n        maxNumPrecincts = Math.max(\n          maxNumPrecincts,\n          resolutions[r].precinctParameters.numprecincts\n        );\n      }\n    }\n    maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n  }\n  l = 0;\n  r = 0;\n  c = 0;\n  p = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.3 Resolution-position-component-layer\n    for (; r <= maxDecompositionLevelsCount; r++) {\n      for (; p < maxNumPrecinctsInLevel[r]; p++) {\n        for (; c < componentsCount; c++) {\n          const component = tile.components[c];\n          if (r > component.codingStyleParameters.decompositionLevelsCount) {\n            continue;\n          }\n          const resolution = component.resolutions[r];\n          const numprecincts = resolution.precinctParameters.numprecincts;\n          if (p >= numprecincts) {\n            continue;\n          }\n          for (; l < layersCount; ) {\n            const packet = createPacket(resolution, p, l);\n            l++;\n            return packet;\n          }\n          l = 0;\n        }\n        c = 0;\n      }\n      p = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction PositionComponentResolutionLayerIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  const precinctsSizes = getPrecinctSizesInImageScale(tile);\n  const precinctsIterationSizes = precinctsSizes;\n  let l = 0,\n    r = 0,\n    c = 0,\n    px = 0,\n    py = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.4 Position-component-resolution-layer\n    for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n      for (; px < precinctsIterationSizes.maxNumWide; px++) {\n        for (; c < componentsCount; c++) {\n          const component = tile.components[c];\n          const decompositionLevelsCount =\n            component.codingStyleParameters.decompositionLevelsCount;\n          for (; r <= decompositionLevelsCount; r++) {\n            const resolution = component.resolutions[r];\n            const sizeInImageScale =\n              precinctsSizes.components[c].resolutions[r];\n            const k = getPrecinctIndexIfExist(\n              px,\n              py,\n              sizeInImageScale,\n              precinctsIterationSizes,\n              resolution\n            );\n            if (k === null) {\n              continue;\n            }\n            for (; l < layersCount; ) {\n              const packet = createPacket(resolution, k, l);\n              l++;\n              return packet;\n            }\n            l = 0;\n          }\n          r = 0;\n        }\n        c = 0;\n      }\n      px = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction ComponentPositionResolutionLayerIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  const precinctsSizes = getPrecinctSizesInImageScale(tile);\n  let l = 0,\n    r = 0,\n    c = 0,\n    px = 0,\n    py = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.5 Component-position-resolution-layer\n    for (; c < componentsCount; ++c) {\n      const component = tile.components[c];\n      const precinctsIterationSizes = precinctsSizes.components[c];\n      const decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n        for (; px < precinctsIterationSizes.maxNumWide; px++) {\n          for (; r <= decompositionLevelsCount; r++) {\n            const resolution = component.resolutions[r];\n            const sizeInImageScale = precinctsIterationSizes.resolutions[r];\n            const k = getPrecinctIndexIfExist(\n              px,\n              py,\n              sizeInImageScale,\n              precinctsIterationSizes,\n              resolution\n            );\n            if (k === null) {\n              continue;\n            }\n            for (; l < layersCount; ) {\n              const packet = createPacket(resolution, k, l);\n              l++;\n              return packet;\n            }\n            l = 0;\n          }\n          r = 0;\n        }\n        px = 0;\n      }\n      py = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction getPrecinctIndexIfExist(\n  pxIndex,\n  pyIndex,\n  sizeInImageScale,\n  precinctIterationSizes,\n  resolution\n) {\n  const posX = pxIndex * precinctIterationSizes.minWidth;\n  const posY = pyIndex * precinctIterationSizes.minHeight;\n  if (\n    posX % sizeInImageScale.width !== 0 ||\n    posY % sizeInImageScale.height !== 0\n  ) {\n    return null;\n  }\n  const startPrecinctRowIndex =\n    (posY / sizeInImageScale.width) *\n    resolution.precinctParameters.numprecinctswide;\n  return posX / sizeInImageScale.height + startPrecinctRowIndex;\n}\nfunction getPrecinctSizesInImageScale(tile) {\n  const componentsCount = tile.components.length;\n  let minWidth = Number.MAX_VALUE;\n  let minHeight = Number.MAX_VALUE;\n  let maxNumWide = 0;\n  let maxNumHigh = 0;\n  const sizePerComponent = new Array(componentsCount);\n  for (let c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    const decompositionLevelsCount =\n      component.codingStyleParameters.decompositionLevelsCount;\n    const sizePerResolution = new Array(decompositionLevelsCount + 1);\n    let minWidthCurrentComponent = Number.MAX_VALUE;\n    let minHeightCurrentComponent = Number.MAX_VALUE;\n    let maxNumWideCurrentComponent = 0;\n    let maxNumHighCurrentComponent = 0;\n    let scale = 1;\n    for (let r = decompositionLevelsCount; r >= 0; --r) {\n      const resolution = component.resolutions[r];\n      const widthCurrentResolution =\n        scale * resolution.precinctParameters.precinctWidth;\n      const heightCurrentResolution =\n        scale * resolution.precinctParameters.precinctHeight;\n      minWidthCurrentComponent = Math.min(\n        minWidthCurrentComponent,\n        widthCurrentResolution\n      );\n      minHeightCurrentComponent = Math.min(\n        minHeightCurrentComponent,\n        heightCurrentResolution\n      );\n      maxNumWideCurrentComponent = Math.max(\n        maxNumWideCurrentComponent,\n        resolution.precinctParameters.numprecinctswide\n      );\n      maxNumHighCurrentComponent = Math.max(\n        maxNumHighCurrentComponent,\n        resolution.precinctParameters.numprecinctshigh\n      );\n      sizePerResolution[r] = {\n        width: widthCurrentResolution,\n        height: heightCurrentResolution,\n      };\n      scale <<= 1;\n    }\n    minWidth = Math.min(minWidth, minWidthCurrentComponent);\n    minHeight = Math.min(minHeight, minHeightCurrentComponent);\n    maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n    maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n    sizePerComponent[c] = {\n      resolutions: sizePerResolution,\n      minWidth: minWidthCurrentComponent,\n      minHeight: minHeightCurrentComponent,\n      maxNumWide: maxNumWideCurrentComponent,\n      maxNumHigh: maxNumHighCurrentComponent,\n    };\n  }\n  return {\n    components: sizePerComponent,\n    minWidth,\n    minHeight,\n    maxNumWide,\n    maxNumHigh,\n  };\n}\nfunction buildPackets(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const componentsCount = siz.Csiz;\n  // Creating resolutions and sub-bands for each component\n  for (let c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    const decompositionLevelsCount =\n      component.codingStyleParameters.decompositionLevelsCount;\n    // Section B.5 Resolution levels and sub-bands\n    const resolutions = [];\n    const subbands = [];\n    for (let r = 0; r <= decompositionLevelsCount; r++) {\n      const blocksDimensions = getBlocksDimensions(context, component, r);\n      const resolution = {};\n      const scale = 1 << (decompositionLevelsCount - r);\n      resolution.trx0 = Math.ceil(component.tcx0 / scale);\n      resolution.try0 = Math.ceil(component.tcy0 / scale);\n      resolution.trx1 = Math.ceil(component.tcx1 / scale);\n      resolution.try1 = Math.ceil(component.tcy1 / scale);\n      resolution.resLevel = r;\n      buildPrecincts(context, resolution, blocksDimensions);\n      resolutions.push(resolution);\n\n      let subband;\n      if (r === 0) {\n        // one sub-band (LL) with last decomposition\n        subband = {};\n        subband.type = \"LL\";\n        subband.tbx0 = Math.ceil(component.tcx0 / scale);\n        subband.tby0 = Math.ceil(component.tcy0 / scale);\n        subband.tbx1 = Math.ceil(component.tcx1 / scale);\n        subband.tby1 = Math.ceil(component.tcy1 / scale);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolution.subbands = [subband];\n      } else {\n        const bscale = 1 << (decompositionLevelsCount - r + 1);\n        const resolutionSubbands = [];\n        // three sub-bands (HL, LH and HH) with rest of decompositions\n        subband = {};\n        subband.type = \"HL\";\n        subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n        subband.tby0 = Math.ceil(component.tcy0 / bscale);\n        subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n        subband.tby1 = Math.ceil(component.tcy1 / bscale);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolutionSubbands.push(subband);\n\n        subband = {};\n        subband.type = \"LH\";\n        subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n        subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n        subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n        subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolutionSubbands.push(subband);\n\n        subband = {};\n        subband.type = \"HH\";\n        subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n        subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n        subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n        subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolutionSubbands.push(subband);\n\n        resolution.subbands = resolutionSubbands;\n      }\n    }\n    component.resolutions = resolutions;\n    component.subbands = subbands;\n  }\n  // Generate the packets sequence\n  const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n  switch (progressionOrder) {\n    case 0:\n      tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n        context\n      );\n      break;\n    case 1:\n      tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n        context\n      );\n      break;\n    case 2:\n      tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n        context\n      );\n      break;\n    case 3:\n      tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n        context\n      );\n      break;\n    case 4:\n      tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n        context\n      );\n      break;\n    default:\n      throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n  }\n}\nfunction parseTilePackets(context, data, offset, dataLength) {\n  let position = 0;\n  let buffer,\n    bufferSize = 0,\n    skipNextBit = false;\n  function readBits(count) {\n    while (bufferSize < count) {\n      const b = data[offset + position];\n      position++;\n      if (skipNextBit) {\n        buffer = (buffer << 7) | b;\n        bufferSize += 7;\n        skipNextBit = false;\n      } else {\n        buffer = (buffer << 8) | b;\n        bufferSize += 8;\n      }\n      if (b === 0xff) {\n        skipNextBit = true;\n      }\n    }\n    bufferSize -= count;\n    return (buffer >>> bufferSize) & ((1 << count) - 1);\n  }\n  function skipMarkerIfEqual(value) {\n    if (\n      data[offset + position - 1] === 0xff &&\n      data[offset + position] === value\n    ) {\n      skipBytes(1);\n      return true;\n    } else if (\n      data[offset + position] === 0xff &&\n      data[offset + position + 1] === value\n    ) {\n      skipBytes(2);\n      return true;\n    }\n    return false;\n  }\n  function skipBytes(count) {\n    position += count;\n  }\n  function alignToByte() {\n    bufferSize = 0;\n    if (skipNextBit) {\n      position++;\n      skipNextBit = false;\n    }\n  }\n  function readCodingpasses() {\n    if (readBits(1) === 0) {\n      return 1;\n    }\n    if (readBits(1) === 0) {\n      return 2;\n    }\n    let value = readBits(2);\n    if (value < 3) {\n      return value + 3;\n    }\n    value = readBits(5);\n    if (value < 31) {\n      return value + 6;\n    }\n    value = readBits(7);\n    return value + 37;\n  }\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const sopMarkerUsed = context.COD.sopMarkerUsed;\n  const ephMarkerUsed = context.COD.ephMarkerUsed;\n  const packetsIterator = tile.packetsIterator;\n  while (position < dataLength) {\n    alignToByte();\n    if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n      // Skip also marker segment length and packet sequence ID\n      skipBytes(4);\n    }\n    const packet = packetsIterator.nextPacket();\n    if (!readBits(1)) {\n      continue;\n    }\n    const layerNumber = packet.layerNumber,\n      queue = [];\n    let codeblock;\n    for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n      codeblock = packet.codeblocks[i];\n      let precinct = codeblock.precinct;\n      const codeblockColumn = codeblock.cbx - precinct.cbxMin;\n      const codeblockRow = codeblock.cby - precinct.cbyMin;\n      let codeblockIncluded = false;\n      let firstTimeInclusion = false;\n      let valueReady, zeroBitPlanesTree;\n      if (codeblock.included !== undefined) {\n        codeblockIncluded = !!readBits(1);\n      } else {\n        // reading inclusion tree\n        precinct = codeblock.precinct;\n        let inclusionTree;\n        if (precinct.inclusionTree !== undefined) {\n          inclusionTree = precinct.inclusionTree;\n        } else {\n          // building inclusion and zero bit-planes trees\n          const width = precinct.cbxMax - precinct.cbxMin + 1;\n          const height = precinct.cbyMax - precinct.cbyMin + 1;\n          inclusionTree = new InclusionTree(width, height, layerNumber);\n          zeroBitPlanesTree = new TagTree(width, height);\n          precinct.inclusionTree = inclusionTree;\n          precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n          for (let l = 0; l < layerNumber; l++) {\n            if (readBits(1) !== 0) {\n              throw new JpxError(\"Invalid tag tree\");\n            }\n          }\n        }\n\n        if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n          while (true) {\n            if (readBits(1)) {\n              valueReady = !inclusionTree.nextLevel();\n              if (valueReady) {\n                codeblock.included = true;\n                codeblockIncluded = firstTimeInclusion = true;\n                break;\n              }\n            } else {\n              inclusionTree.incrementValue(layerNumber);\n              break;\n            }\n          }\n        }\n      }\n      if (!codeblockIncluded) {\n        continue;\n      }\n      if (firstTimeInclusion) {\n        zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n        zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n        while (true) {\n          if (readBits(1)) {\n            valueReady = !zeroBitPlanesTree.nextLevel();\n            if (valueReady) {\n              break;\n            }\n          } else {\n            zeroBitPlanesTree.incrementValue();\n          }\n        }\n        codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n      }\n      const codingpasses = readCodingpasses();\n      while (readBits(1)) {\n        codeblock.Lblock++;\n      }\n      const codingpassesLog2 = log2(codingpasses);\n      // rounding down log2\n      const bits =\n        (codingpasses < 1 << codingpassesLog2\n          ? codingpassesLog2 - 1\n          : codingpassesLog2) + codeblock.Lblock;\n      const codedDataLength = readBits(bits);\n      queue.push({\n        codeblock,\n        codingpasses,\n        dataLength: codedDataLength,\n      });\n    }\n    alignToByte();\n    if (ephMarkerUsed) {\n      skipMarkerIfEqual(0x92);\n    }\n    while (queue.length > 0) {\n      const packetItem = queue.shift();\n      codeblock = packetItem.codeblock;\n      if (codeblock.data === undefined) {\n        codeblock.data = [];\n      }\n      codeblock.data.push({\n        data,\n        start: offset + position,\n        end: offset + position + packetItem.dataLength,\n        codingpasses: packetItem.codingpasses,\n      });\n      position += packetItem.dataLength;\n    }\n  }\n  return position;\n}\nfunction copyCoefficients(\n  coefficients,\n  levelWidth,\n  levelHeight,\n  subband,\n  delta,\n  mb,\n  reversible,\n  segmentationSymbolUsed,\n  resetContextProbabilities\n) {\n  const x0 = subband.tbx0;\n  const y0 = subband.tby0;\n  const width = subband.tbx1 - subband.tbx0;\n  const codeblocks = subband.codeblocks;\n  const right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n  const bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n  for (let i = 0, ii = codeblocks.length; i < ii; ++i) {\n    const codeblock = codeblocks[i];\n    const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n    const blockHeight = codeblock.tby1_ - codeblock.tby0_;\n    if (blockWidth === 0 || blockHeight === 0) {\n      continue;\n    }\n    if (codeblock.data === undefined) {\n      continue;\n    }\n\n    const bitModel = new BitModel(\n      blockWidth,\n      blockHeight,\n      codeblock.subbandType,\n      codeblock.zeroBitPlanes,\n      mb\n    );\n    let currentCodingpassType = 2; // first bit plane starts from cleanup\n\n    // collect data\n    const data = codeblock.data;\n    let totalLength = 0,\n      codingpasses = 0;\n    let j, jj, dataItem;\n    for (j = 0, jj = data.length; j < jj; j++) {\n      dataItem = data[j];\n      totalLength += dataItem.end - dataItem.start;\n      codingpasses += dataItem.codingpasses;\n    }\n    const encodedData = new Uint8Array(totalLength);\n    let position = 0;\n    for (j = 0, jj = data.length; j < jj; j++) {\n      dataItem = data[j];\n      const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n      encodedData.set(chunk, position);\n      position += chunk.length;\n    }\n    // decoding the item\n    const decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n    bitModel.setDecoder(decoder);\n\n    for (j = 0; j < codingpasses; j++) {\n      switch (currentCodingpassType) {\n        case 0:\n          bitModel.runSignificancePropagationPass();\n          break;\n        case 1:\n          bitModel.runMagnitudeRefinementPass();\n          break;\n        case 2:\n          bitModel.runCleanupPass();\n          if (segmentationSymbolUsed) {\n            bitModel.checkSegmentationSymbol();\n          }\n          break;\n      }\n\n      if (resetContextProbabilities) {\n        bitModel.reset();\n      }\n\n      currentCodingpassType = (currentCodingpassType + 1) % 3;\n    }\n\n    let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n    const sign = bitModel.coefficentsSign;\n    const magnitude = bitModel.coefficentsMagnitude;\n    const bitsDecoded = bitModel.bitsDecoded;\n    const magnitudeCorrection = reversible ? 0 : 0.5;\n    let k, n, nb;\n    position = 0;\n    // Do the interleaving of Section F.3.3 here, so we do not need\n    // to copy later. LL level is not interleaved, just copied.\n    const interleave = subband.type !== \"LL\";\n    for (j = 0; j < blockHeight; j++) {\n      const row = (offset / width) | 0; // row in the non-interleaved subband\n      const levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n      for (k = 0; k < blockWidth; k++) {\n        n = magnitude[position];\n        if (n !== 0) {\n          n = (n + magnitudeCorrection) * delta;\n          if (sign[position] !== 0) {\n            n = -n;\n          }\n          nb = bitsDecoded[position];\n          const pos = interleave ? levelOffset + (offset << 1) : offset;\n          if (reversible && nb >= mb) {\n            coefficients[pos] = n;\n          } else {\n            coefficients[pos] = n * (1 << (mb - nb));\n          }\n        }\n        offset++;\n        position++;\n      }\n      offset += width - blockWidth;\n    }\n  }\n}\nfunction transformTile(context, tile, c) {\n  const component = tile.components[c];\n  const codingStyleParameters = component.codingStyleParameters;\n  const quantizationParameters = component.quantizationParameters;\n  const decompositionLevelsCount =\n    codingStyleParameters.decompositionLevelsCount;\n  const spqcds = quantizationParameters.SPqcds;\n  const scalarExpounded = quantizationParameters.scalarExpounded;\n  const guardBits = quantizationParameters.guardBits;\n  const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n  const resetContextProbabilities =\n    codingStyleParameters.resetContextProbabilities;\n  const precision = context.components[c].precision;\n\n  const reversible = codingStyleParameters.reversibleTransformation;\n  const transform = reversible\n    ? new ReversibleTransform()\n    : new IrreversibleTransform();\n\n  const subbandCoefficients = [];\n  let b = 0;\n  for (let i = 0; i <= decompositionLevelsCount; i++) {\n    const resolution = component.resolutions[i];\n\n    const width = resolution.trx1 - resolution.trx0;\n    const height = resolution.try1 - resolution.try0;\n    // Allocate space for the whole sublevel.\n    const coefficients = new Float32Array(width * height);\n\n    for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {\n      let mu, epsilon;\n      if (!scalarExpounded) {\n        // formula E-5\n        mu = spqcds[0].mu;\n        epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n      } else {\n        mu = spqcds[b].mu;\n        epsilon = spqcds[b].epsilon;\n        b++;\n      }\n\n      const subband = resolution.subbands[j];\n      const gainLog2 = SubbandsGainLog2[subband.type];\n\n      // calculate quantization coefficient (Section E.1.1.1)\n      const delta = reversible\n        ? 1\n        : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n      const mb = guardBits + epsilon - 1;\n\n      // In the first resolution level, copyCoefficients will fill the\n      // whole array with coefficients. In the succeeding passes,\n      // copyCoefficients will consecutively fill in the values that belong\n      // to the interleaved positions of the HL, LH, and HH coefficients.\n      // The LL coefficients will then be interleaved in Transform.iterate().\n      copyCoefficients(\n        coefficients,\n        width,\n        height,\n        subband,\n        delta,\n        mb,\n        reversible,\n        segmentationSymbolUsed,\n        resetContextProbabilities\n      );\n    }\n    subbandCoefficients.push({\n      width,\n      height,\n      items: coefficients,\n    });\n  }\n\n  const result = transform.calculate(\n    subbandCoefficients,\n    component.tcx0,\n    component.tcy0\n  );\n  return {\n    left: component.tcx0,\n    top: component.tcy0,\n    width: result.width,\n    height: result.height,\n    items: result.items,\n  };\n}\nfunction transformComponents(context) {\n  const siz = context.SIZ;\n  const components = context.components;\n  const componentsCount = siz.Csiz;\n  const resultImages = [];\n  for (let i = 0, ii = context.tiles.length; i < ii; i++) {\n    const tile = context.tiles[i];\n    const transformedTiles = [];\n    for (let c = 0; c < componentsCount; c++) {\n      transformedTiles[c] = transformTile(context, tile, c);\n    }\n    const tile0 = transformedTiles[0];\n    const out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n    const result = {\n      left: tile0.left,\n      top: tile0.top,\n      width: tile0.width,\n      height: tile0.height,\n      items: out,\n    };\n\n    // Section G.2.2 Inverse multi component transform\n    let shift, offset;\n    let pos = 0,\n      j,\n      jj,\n      y0,\n      y1,\n      y2;\n    if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n      const fourComponents = componentsCount === 4;\n      const y0items = transformedTiles[0].items;\n      const y1items = transformedTiles[1].items;\n      const y2items = transformedTiles[2].items;\n      const y3items = fourComponents ? transformedTiles[3].items : null;\n\n      // HACK: The multiple component transform formulas below assume that\n      // all components have the same precision. With this in mind, we\n      // compute shift and offset only once.\n      shift = components[0].precision - 8;\n      offset = (128 << shift) + 0.5;\n\n      const component0 = tile.components[0];\n      const alpha01 = componentsCount - 3;\n      jj = y0items.length;\n      if (!component0.codingStyleParameters.reversibleTransformation) {\n        // inverse irreversible multiple component transform\n        for (j = 0; j < jj; j++, pos += alpha01) {\n          y0 = y0items[j] + offset;\n          y1 = y1items[j];\n          y2 = y2items[j];\n          out[pos++] = (y0 + 1.402 * y2) >> shift;\n          out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n          out[pos++] = (y0 + 1.772 * y1) >> shift;\n        }\n      } else {\n        // inverse reversible multiple component transform\n        for (j = 0; j < jj; j++, pos += alpha01) {\n          y0 = y0items[j] + offset;\n          y1 = y1items[j];\n          y2 = y2items[j];\n          const g = y0 - ((y2 + y1) >> 2);\n\n          out[pos++] = (g + y2) >> shift;\n          out[pos++] = g >> shift;\n          out[pos++] = (g + y1) >> shift;\n        }\n      }\n      if (fourComponents) {\n        for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n          out[pos] = (y3items[j] + offset) >> shift;\n        }\n      }\n    } else {\n      // no multi-component transform\n      for (let c = 0; c < componentsCount; c++) {\n        const items = transformedTiles[c].items;\n        shift = components[c].precision - 8;\n        offset = (128 << shift) + 0.5;\n        for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n          out[pos] = (items[j] + offset) >> shift;\n          pos += componentsCount;\n        }\n      }\n    }\n    resultImages.push(result);\n  }\n  return resultImages;\n}\nfunction initializeTile(context, tileIndex) {\n  const siz = context.SIZ;\n  const componentsCount = siz.Csiz;\n  const tile = context.tiles[tileIndex];\n  for (let c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    const qcdOrQcc =\n      context.currentTile.QCC[c] !== undefined\n        ? context.currentTile.QCC[c]\n        : context.currentTile.QCD;\n    component.quantizationParameters = qcdOrQcc;\n    const codOrCoc =\n      context.currentTile.COC[c] !== undefined\n        ? context.currentTile.COC[c]\n        : context.currentTile.COD;\n    component.codingStyleParameters = codOrCoc;\n  }\n  tile.codingStyleDefaultParameters = context.currentTile.COD;\n}\n\n// Section B.10.2 Tag trees\nclass TagTree {\n  constructor(width, height) {\n    const levelsLength = log2(Math.max(width, height)) + 1;\n    this.levels = [];\n    for (let i = 0; i < levelsLength; i++) {\n      const level = {\n        width,\n        height,\n        items: [],\n      };\n      this.levels.push(level);\n      width = Math.ceil(width / 2);\n      height = Math.ceil(height / 2);\n    }\n  }\n\n  reset(i, j) {\n    let currentLevel = 0,\n      value = 0,\n      level;\n    while (currentLevel < this.levels.length) {\n      level = this.levels[currentLevel];\n      const index = i + j * level.width;\n      if (level.items[index] !== undefined) {\n        value = level.items[index];\n        break;\n      }\n      level.index = index;\n      i >>= 1;\n      j >>= 1;\n      currentLevel++;\n    }\n    currentLevel--;\n    level = this.levels[currentLevel];\n    level.items[level.index] = value;\n    this.currentLevel = currentLevel;\n    delete this.value;\n  }\n\n  incrementValue() {\n    const level = this.levels[this.currentLevel];\n    level.items[level.index]++;\n  }\n\n  nextLevel() {\n    let currentLevel = this.currentLevel;\n    let level = this.levels[currentLevel];\n    const value = level.items[level.index];\n    currentLevel--;\n    if (currentLevel < 0) {\n      this.value = value;\n      return false;\n    }\n\n    this.currentLevel = currentLevel;\n    level = this.levels[currentLevel];\n    level.items[level.index] = value;\n    return true;\n  }\n}\n\nclass InclusionTree {\n  constructor(width, height, defaultValue) {\n    const levelsLength = log2(Math.max(width, height)) + 1;\n    this.levels = [];\n    for (let i = 0; i < levelsLength; i++) {\n      const items = new Uint8Array(width * height);\n      for (let j = 0, jj = items.length; j < jj; j++) {\n        items[j] = defaultValue;\n      }\n\n      const level = {\n        width,\n        height,\n        items,\n      };\n      this.levels.push(level);\n\n      width = Math.ceil(width / 2);\n      height = Math.ceil(height / 2);\n    }\n  }\n\n  reset(i, j, stopValue) {\n    let currentLevel = 0;\n    while (currentLevel < this.levels.length) {\n      const level = this.levels[currentLevel];\n      const index = i + j * level.width;\n      level.index = index;\n      const value = level.items[index];\n\n      if (value === 0xff) {\n        break;\n      }\n\n      if (value > stopValue) {\n        this.currentLevel = currentLevel;\n        // already know about this one, propagating the value to top levels\n        this.propagateValues();\n        return false;\n      }\n\n      i >>= 1;\n      j >>= 1;\n      currentLevel++;\n    }\n    this.currentLevel = currentLevel - 1;\n    return true;\n  }\n\n  incrementValue(stopValue) {\n    const level = this.levels[this.currentLevel];\n    level.items[level.index] = stopValue + 1;\n    this.propagateValues();\n  }\n\n  propagateValues() {\n    let levelIndex = this.currentLevel;\n    let level = this.levels[levelIndex];\n    const currentValue = level.items[level.index];\n    while (--levelIndex >= 0) {\n      level = this.levels[levelIndex];\n      level.items[level.index] = currentValue;\n    }\n  }\n\n  nextLevel() {\n    let currentLevel = this.currentLevel;\n    let level = this.levels[currentLevel];\n    const value = level.items[level.index];\n    level.items[level.index] = 0xff;\n    currentLevel--;\n    if (currentLevel < 0) {\n      return false;\n    }\n\n    this.currentLevel = currentLevel;\n    level = this.levels[currentLevel];\n    level.items[level.index] = value;\n    return true;\n  }\n}\n\n// Section D. Coefficient bit modeling\nconst BitModel = (function BitModelClosure() {\n  const UNIFORM_CONTEXT = 17;\n  const RUNLENGTH_CONTEXT = 18;\n  // Table D-1\n  // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n  // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n  const LLAndLHContextsLabel = new Uint8Array([\n    0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n    7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n    8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8,\n  ]);\n  const HLContextLabel = new Uint8Array([\n    0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n    8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n    4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8,\n  ]);\n  const HHContextLabel = new Uint8Array([\n    0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n    5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n    8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8,\n  ]);\n\n  // eslint-disable-next-line no-shadow\n  class BitModel {\n    constructor(width, height, subband, zeroBitPlanes, mb) {\n      this.width = width;\n      this.height = height;\n\n      let contextLabelTable;\n      if (subband === \"HH\") {\n        contextLabelTable = HHContextLabel;\n      } else if (subband === \"HL\") {\n        contextLabelTable = HLContextLabel;\n      } else {\n        contextLabelTable = LLAndLHContextsLabel;\n      }\n      this.contextLabelTable = contextLabelTable;\n\n      const coefficientCount = width * height;\n\n      // coefficients outside the encoding region treated as insignificant\n      // add border state cells for significanceState\n      this.neighborsSignificance = new Uint8Array(coefficientCount);\n      this.coefficentsSign = new Uint8Array(coefficientCount);\n      let coefficentsMagnitude;\n      if (mb > 14) {\n        coefficentsMagnitude = new Uint32Array(coefficientCount);\n      } else if (mb > 6) {\n        coefficentsMagnitude = new Uint16Array(coefficientCount);\n      } else {\n        coefficentsMagnitude = new Uint8Array(coefficientCount);\n      }\n      this.coefficentsMagnitude = coefficentsMagnitude;\n      this.processingFlags = new Uint8Array(coefficientCount);\n\n      const bitsDecoded = new Uint8Array(coefficientCount);\n      if (zeroBitPlanes !== 0) {\n        for (let i = 0; i < coefficientCount; i++) {\n          bitsDecoded[i] = zeroBitPlanes;\n        }\n      }\n      this.bitsDecoded = bitsDecoded;\n\n      this.reset();\n    }\n\n    setDecoder(decoder) {\n      this.decoder = decoder;\n    }\n\n    reset() {\n      // We have 17 contexts that are accessed via context labels,\n      // plus the uniform and runlength context.\n      this.contexts = new Int8Array(19);\n\n      // Contexts are packed into 1 byte:\n      // highest 7 bits carry the index, lowest bit carries mps\n      this.contexts[0] = (4 << 1) | 0;\n      this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n      this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n    }\n\n    setNeighborsSignificance(row, column, index) {\n      const neighborsSignificance = this.neighborsSignificance;\n      const width = this.width,\n        height = this.height;\n      const left = column > 0;\n      const right = column + 1 < width;\n      let i;\n\n      if (row > 0) {\n        i = index - width;\n        if (left) {\n          neighborsSignificance[i - 1] += 0x10;\n        }\n        if (right) {\n          neighborsSignificance[i + 1] += 0x10;\n        }\n        neighborsSignificance[i] += 0x04;\n      }\n\n      if (row + 1 < height) {\n        i = index + width;\n        if (left) {\n          neighborsSignificance[i - 1] += 0x10;\n        }\n        if (right) {\n          neighborsSignificance[i + 1] += 0x10;\n        }\n        neighborsSignificance[i] += 0x04;\n      }\n\n      if (left) {\n        neighborsSignificance[index - 1] += 0x01;\n      }\n      if (right) {\n        neighborsSignificance[index + 1] += 0x01;\n      }\n      neighborsSignificance[index] |= 0x80;\n    }\n\n    runSignificancePropagationPass() {\n      const decoder = this.decoder;\n      const width = this.width,\n        height = this.height;\n      const coefficentsMagnitude = this.coefficentsMagnitude;\n      const coefficentsSign = this.coefficentsSign;\n      const neighborsSignificance = this.neighborsSignificance;\n      const processingFlags = this.processingFlags;\n      const contexts = this.contexts;\n      const labels = this.contextLabelTable;\n      const bitsDecoded = this.bitsDecoded;\n      const processedInverseMask = ~1;\n      const processedMask = 1;\n      const firstMagnitudeBitMask = 2;\n\n      for (let i0 = 0; i0 < height; i0 += 4) {\n        for (let j = 0; j < width; j++) {\n          let index = i0 * width + j;\n          for (let i1 = 0; i1 < 4; i1++, index += width) {\n            const i = i0 + i1;\n            if (i >= height) {\n              break;\n            }\n            // clear processed flag first\n            processingFlags[index] &= processedInverseMask;\n\n            if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n              continue;\n            }\n\n            const contextLabel = labels[neighborsSignificance[index]];\n            const decision = decoder.readBit(contexts, contextLabel);\n            if (decision) {\n              const sign = this.decodeSignBit(i, j, index);\n              coefficentsSign[index] = sign;\n              coefficentsMagnitude[index] = 1;\n              this.setNeighborsSignificance(i, j, index);\n              processingFlags[index] |= firstMagnitudeBitMask;\n            }\n            bitsDecoded[index]++;\n            processingFlags[index] |= processedMask;\n          }\n        }\n      }\n    }\n\n    decodeSignBit(row, column, index) {\n      const width = this.width,\n        height = this.height;\n      const coefficentsMagnitude = this.coefficentsMagnitude;\n      const coefficentsSign = this.coefficentsSign;\n      let contribution, sign0, sign1, significance1;\n      let contextLabel, decoded;\n\n      // calculate horizontal contribution\n      significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n      if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n        sign1 = coefficentsSign[index + 1];\n        if (significance1) {\n          sign0 = coefficentsSign[index - 1];\n          contribution = 1 - sign1 - sign0;\n        } else {\n          contribution = 1 - sign1 - sign1;\n        }\n      } else if (significance1) {\n        sign0 = coefficentsSign[index - 1];\n        contribution = 1 - sign0 - sign0;\n      } else {\n        contribution = 0;\n      }\n      const horizontalContribution = 3 * contribution;\n\n      // calculate vertical contribution and combine with the horizontal\n      significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n      if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n        sign1 = coefficentsSign[index + width];\n        if (significance1) {\n          sign0 = coefficentsSign[index - width];\n          contribution = 1 - sign1 - sign0 + horizontalContribution;\n        } else {\n          contribution = 1 - sign1 - sign1 + horizontalContribution;\n        }\n      } else if (significance1) {\n        sign0 = coefficentsSign[index - width];\n        contribution = 1 - sign0 - sign0 + horizontalContribution;\n      } else {\n        contribution = horizontalContribution;\n      }\n\n      if (contribution >= 0) {\n        contextLabel = 9 + contribution;\n        decoded = this.decoder.readBit(this.contexts, contextLabel);\n      } else {\n        contextLabel = 9 - contribution;\n        decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n      }\n      return decoded;\n    }\n\n    runMagnitudeRefinementPass() {\n      const decoder = this.decoder;\n      const width = this.width,\n        height = this.height;\n      const coefficentsMagnitude = this.coefficentsMagnitude;\n      const neighborsSignificance = this.neighborsSignificance;\n      const contexts = this.contexts;\n      const bitsDecoded = this.bitsDecoded;\n      const processingFlags = this.processingFlags;\n      const processedMask = 1;\n      const firstMagnitudeBitMask = 2;\n      const length = width * height;\n      const width4 = width * 4;\n\n      for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n        indexNext = Math.min(length, index0 + width4);\n        for (let j = 0; j < width; j++) {\n          for (let index = index0 + j; index < indexNext; index += width) {\n            // significant but not those that have just become\n            if (\n              !coefficentsMagnitude[index] ||\n              (processingFlags[index] & processedMask) !== 0\n            ) {\n              continue;\n            }\n\n            let contextLabel = 16;\n            if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n              processingFlags[index] ^= firstMagnitudeBitMask;\n              // first refinement\n              const significance = neighborsSignificance[index] & 127;\n              contextLabel = significance === 0 ? 15 : 14;\n            }\n\n            const bit = decoder.readBit(contexts, contextLabel);\n            coefficentsMagnitude[index] =\n              (coefficentsMagnitude[index] << 1) | bit;\n            bitsDecoded[index]++;\n            processingFlags[index] |= processedMask;\n          }\n        }\n      }\n    }\n\n    runCleanupPass() {\n      const decoder = this.decoder;\n      const width = this.width,\n        height = this.height;\n      const neighborsSignificance = this.neighborsSignificance;\n      const coefficentsMagnitude = this.coefficentsMagnitude;\n      const coefficentsSign = this.coefficentsSign;\n      const contexts = this.contexts;\n      const labels = this.contextLabelTable;\n      const bitsDecoded = this.bitsDecoded;\n      const processingFlags = this.processingFlags;\n      const processedMask = 1;\n      const firstMagnitudeBitMask = 2;\n      const oneRowDown = width;\n      const twoRowsDown = width * 2;\n      const threeRowsDown = width * 3;\n      let iNext;\n      for (let i0 = 0; i0 < height; i0 = iNext) {\n        iNext = Math.min(i0 + 4, height);\n        const indexBase = i0 * width;\n        const checkAllEmpty = i0 + 3 < height;\n        for (let j = 0; j < width; j++) {\n          const index0 = indexBase + j;\n          // using the property: labels[neighborsSignificance[index]] === 0\n          // when neighborsSignificance[index] === 0\n          const allEmpty =\n            checkAllEmpty &&\n            processingFlags[index0] === 0 &&\n            processingFlags[index0 + oneRowDown] === 0 &&\n            processingFlags[index0 + twoRowsDown] === 0 &&\n            processingFlags[index0 + threeRowsDown] === 0 &&\n            neighborsSignificance[index0] === 0 &&\n            neighborsSignificance[index0 + oneRowDown] === 0 &&\n            neighborsSignificance[index0 + twoRowsDown] === 0 &&\n            neighborsSignificance[index0 + threeRowsDown] === 0;\n          let i1 = 0,\n            index = index0;\n          let i = i0,\n            sign;\n          if (allEmpty) {\n            const hasSignificantCoefficent = decoder.readBit(\n              contexts,\n              RUNLENGTH_CONTEXT\n            );\n            if (!hasSignificantCoefficent) {\n              bitsDecoded[index0]++;\n              bitsDecoded[index0 + oneRowDown]++;\n              bitsDecoded[index0 + twoRowsDown]++;\n              bitsDecoded[index0 + threeRowsDown]++;\n              continue; // next column\n            }\n            i1 =\n              (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n              decoder.readBit(contexts, UNIFORM_CONTEXT);\n            if (i1 !== 0) {\n              i = i0 + i1;\n              index += i1 * width;\n            }\n\n            sign = this.decodeSignBit(i, j, index);\n            coefficentsSign[index] = sign;\n            coefficentsMagnitude[index] = 1;\n            this.setNeighborsSignificance(i, j, index);\n            processingFlags[index] |= firstMagnitudeBitMask;\n\n            index = index0;\n            for (let i2 = i0; i2 <= i; i2++, index += width) {\n              bitsDecoded[index]++;\n            }\n\n            i1++;\n          }\n          for (i = i0 + i1; i < iNext; i++, index += width) {\n            if (\n              coefficentsMagnitude[index] ||\n              (processingFlags[index] & processedMask) !== 0\n            ) {\n              continue;\n            }\n\n            const contextLabel = labels[neighborsSignificance[index]];\n            const decision = decoder.readBit(contexts, contextLabel);\n            if (decision === 1) {\n              sign = this.decodeSignBit(i, j, index);\n              coefficentsSign[index] = sign;\n              coefficentsMagnitude[index] = 1;\n              this.setNeighborsSignificance(i, j, index);\n              processingFlags[index] |= firstMagnitudeBitMask;\n            }\n            bitsDecoded[index]++;\n          }\n        }\n      }\n    }\n\n    checkSegmentationSymbol() {\n      const decoder = this.decoder;\n      const contexts = this.contexts;\n      const symbol =\n        (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n        (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n        (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n        decoder.readBit(contexts, UNIFORM_CONTEXT);\n      if (symbol !== 0xa) {\n        throw new JpxError(\"Invalid segmentation symbol\");\n      }\n    }\n  }\n\n  return BitModel;\n})();\n\n// Section F, Discrete wavelet transformation\nclass Transform {\n  constructor() {\n    if (this.constructor === Transform) {\n      unreachable(\"Cannot initialize Transform.\");\n    }\n  }\n\n  calculate(subbands, u0, v0) {\n    let ll = subbands[0];\n    for (let i = 1, ii = subbands.length; i < ii; i++) {\n      ll = this.iterate(ll, subbands[i], u0, v0);\n    }\n    return ll;\n  }\n\n  extend(buffer, offset, size) {\n    // Section F.3.7 extending... using max extension of 4\n    let i1 = offset - 1,\n      j1 = offset + 1;\n    let i2 = offset + size - 2,\n      j2 = offset + size;\n    buffer[i1--] = buffer[j1++];\n    buffer[j2++] = buffer[i2--];\n    buffer[i1--] = buffer[j1++];\n    buffer[j2++] = buffer[i2--];\n    buffer[i1--] = buffer[j1++];\n    buffer[j2++] = buffer[i2--];\n    buffer[i1] = buffer[j1];\n    buffer[j2] = buffer[i2];\n  }\n\n  filter(x, offset, length) {\n    unreachable(\"Abstract method `filter` called\");\n  }\n\n  iterate(ll, hl_lh_hh, u0, v0) {\n    const llWidth = ll.width,\n      llHeight = ll.height;\n    let llItems = ll.items;\n    const width = hl_lh_hh.width;\n    const height = hl_lh_hh.height;\n    const items = hl_lh_hh.items;\n    let i, j, k, l, u, v;\n\n    // Interleave LL according to Section F.3.3\n    for (k = 0, i = 0; i < llHeight; i++) {\n      l = i * 2 * width;\n      for (j = 0; j < llWidth; j++, k++, l += 2) {\n        items[l] = llItems[k];\n      }\n    }\n    // The LL band is not needed anymore.\n    llItems = ll.items = null;\n\n    const bufferPadding = 4;\n    const rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n    // Section F.3.4 HOR_SR\n    if (width === 1) {\n      // if width = 1, when u0 even keep items as is, when odd divide by 2\n      if ((u0 & 1) !== 0) {\n        for (v = 0, k = 0; v < height; v++, k += width) {\n          items[k] *= 0.5;\n        }\n      }\n    } else {\n      for (v = 0, k = 0; v < height; v++, k += width) {\n        rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n        this.extend(rowBuffer, bufferPadding, width);\n        this.filter(rowBuffer, bufferPadding, width);\n\n        items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n      }\n    }\n\n    // Accesses to the items array can take long, because it may not fit into\n    // CPU cache and has to be fetched from main memory. Since subsequent\n    // accesses to the items array are not local when reading columns, we\n    // have a cache miss every time. To reduce cache misses, get up to\n    // 'numBuffers' items at a time and store them into the individual\n    // buffers. The colBuffers should be small enough to fit into CPU cache.\n    let numBuffers = 16;\n    const colBuffers = [];\n    for (i = 0; i < numBuffers; i++) {\n      colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n    }\n    let b,\n      currentBuffer = 0;\n    ll = bufferPadding + height;\n\n    // Section F.3.5 VER_SR\n    if (height === 1) {\n      // if height = 1, when v0 even keep items as is, when odd divide by 2\n      if ((v0 & 1) !== 0) {\n        for (u = 0; u < width; u++) {\n          items[u] *= 0.5;\n        }\n      }\n    } else {\n      for (u = 0; u < width; u++) {\n        // if we ran out of buffers, copy several image columns at once\n        if (currentBuffer === 0) {\n          numBuffers = Math.min(width - u, numBuffers);\n          for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n            for (b = 0; b < numBuffers; b++) {\n              colBuffers[b][l] = items[k + b];\n            }\n          }\n          currentBuffer = numBuffers;\n        }\n\n        currentBuffer--;\n        const buffer = colBuffers[currentBuffer];\n        this.extend(buffer, bufferPadding, height);\n        this.filter(buffer, bufferPadding, height);\n\n        // If this is last buffer in this group of buffers, flush all buffers.\n        if (currentBuffer === 0) {\n          k = u - numBuffers + 1;\n          for (l = bufferPadding; l < ll; k += width, l++) {\n            for (b = 0; b < numBuffers; b++) {\n              items[k + b] = colBuffers[b][l];\n            }\n          }\n        }\n      }\n    }\n\n    return { width, height, items };\n  }\n}\n\n// Section 3.8.2 Irreversible 9-7 filter\nclass IrreversibleTransform extends Transform {\n  filter(x, offset, length) {\n    const len = length >> 1;\n    offset |= 0;\n    let j, n, current, next;\n\n    const alpha = -1.586134342059924;\n    const beta = -0.052980118572961;\n    const gamma = 0.882911075530934;\n    const delta = 0.443506852043971;\n    const K = 1.230174104914001;\n    const K_ = 1 / K;\n\n    // step 1 is combined with step 3\n\n    // step 2\n    j = offset - 3;\n    for (n = len + 4; n--; j += 2) {\n      x[j] *= K_;\n    }\n\n    // step 1 & 3\n    j = offset - 2;\n    current = delta * x[j - 1];\n    for (n = len + 3; n--; j += 2) {\n      next = delta * x[j + 1];\n      x[j] = K * x[j] - current - next;\n      if (n--) {\n        j += 2;\n        current = delta * x[j + 1];\n        x[j] = K * x[j] - current - next;\n      } else {\n        break;\n      }\n    }\n\n    // step 4\n    j = offset - 1;\n    current = gamma * x[j - 1];\n    for (n = len + 2; n--; j += 2) {\n      next = gamma * x[j + 1];\n      x[j] -= current + next;\n      if (n--) {\n        j += 2;\n        current = gamma * x[j + 1];\n        x[j] -= current + next;\n      } else {\n        break;\n      }\n    }\n\n    // step 5\n    j = offset;\n    current = beta * x[j - 1];\n    for (n = len + 1; n--; j += 2) {\n      next = beta * x[j + 1];\n      x[j] -= current + next;\n      if (n--) {\n        j += 2;\n        current = beta * x[j + 1];\n        x[j] -= current + next;\n      } else {\n        break;\n      }\n    }\n\n    // step 6\n    if (len !== 0) {\n      j = offset + 1;\n      current = alpha * x[j - 1];\n      for (n = len; n--; j += 2) {\n        next = alpha * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = alpha * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n    }\n  }\n}\n\n// Section 3.8.1 Reversible 5-3 filter\nclass ReversibleTransform extends Transform {\n  filter(x, offset, length) {\n    const len = length >> 1;\n    offset |= 0;\n    let j, n;\n\n    for (j = offset, n = len + 1; n--; j += 2) {\n      x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n    }\n\n    for (j = offset + 1, n = len; n--; j += 2) {\n      x[j] += (x[j - 1] + x[j + 1]) >> 1;\n    }\n  }\n}\n\nexport { JpxImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass LZWStream extends DecodeStream {\n  constructor(str, maybeLength, earlyChange) {\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n    this.cachedData = 0;\n    this.bitsCached = 0;\n\n    const maxLzwDictionarySize = 4096;\n    const lzwState = {\n      earlyChange,\n      codeLength: 9,\n      nextCode: 258,\n      dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n      currentSequence: new Uint8Array(maxLzwDictionarySize),\n      currentSequenceLength: 0,\n    };\n    for (let i = 0; i < 256; ++i) {\n      lzwState.dictionaryValues[i] = i;\n      lzwState.dictionaryLengths[i] = 1;\n    }\n    this.lzwState = lzwState;\n  }\n\n  readBits(n) {\n    let bitsCached = this.bitsCached;\n    let cachedData = this.cachedData;\n    while (bitsCached < n) {\n      const c = this.str.getByte();\n      if (c === -1) {\n        this.eof = true;\n        return null;\n      }\n      cachedData = (cachedData << 8) | c;\n      bitsCached += 8;\n    }\n    this.bitsCached = bitsCached -= n;\n    this.cachedData = cachedData;\n    this.lastCode = null;\n    return (cachedData >>> bitsCached) & ((1 << n) - 1);\n  }\n\n  readBlock() {\n    const blockSize = 512,\n      decodedSizeDelta = blockSize;\n    let estimatedDecodedSize = blockSize * 2;\n    let i, j, q;\n\n    const lzwState = this.lzwState;\n    if (!lzwState) {\n      return; // eof was found\n    }\n\n    const earlyChange = lzwState.earlyChange;\n    let nextCode = lzwState.nextCode;\n    const dictionaryValues = lzwState.dictionaryValues;\n    const dictionaryLengths = lzwState.dictionaryLengths;\n    const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n    let codeLength = lzwState.codeLength;\n    let prevCode = lzwState.prevCode;\n    const currentSequence = lzwState.currentSequence;\n    let currentSequenceLength = lzwState.currentSequenceLength;\n\n    let decodedLength = 0;\n    let currentBufferLength = this.bufferLength;\n    let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n    for (i = 0; i < blockSize; i++) {\n      const code = this.readBits(codeLength);\n      const hasPrev = currentSequenceLength > 0;\n      if (code < 256) {\n        currentSequence[0] = code;\n        currentSequenceLength = 1;\n      } else if (code >= 258) {\n        if (code < nextCode) {\n          currentSequenceLength = dictionaryLengths[code];\n          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n            currentSequence[j] = dictionaryValues[q];\n            q = dictionaryPrevCodes[q];\n          }\n        } else {\n          currentSequence[currentSequenceLength++] = currentSequence[0];\n        }\n      } else if (code === 256) {\n        codeLength = 9;\n        nextCode = 258;\n        currentSequenceLength = 0;\n        continue;\n      } else {\n        this.eof = true;\n        delete this.lzwState;\n        break;\n      }\n\n      if (hasPrev) {\n        dictionaryPrevCodes[nextCode] = prevCode;\n        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n        dictionaryValues[nextCode] = currentSequence[0];\n        nextCode++;\n        codeLength =\n          (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n            ? codeLength\n            : Math.min(\n                Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1,\n                12\n              ) | 0;\n      }\n      prevCode = code;\n\n      decodedLength += currentSequenceLength;\n      if (estimatedDecodedSize < decodedLength) {\n        do {\n          estimatedDecodedSize += decodedSizeDelta;\n        } while (estimatedDecodedSize < decodedLength);\n        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n      }\n      for (j = 0; j < currentSequenceLength; j++) {\n        buffer[currentBufferLength++] = currentSequence[j];\n      }\n    }\n    lzwState.nextCode = nextCode;\n    lzwState.codeLength = codeLength;\n    lzwState.prevCode = prevCode;\n    lzwState.currentSequenceLength = currentSequenceLength;\n\n    this.bufferLength = currentBufferLength;\n  }\n}\n\nexport { LZWStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nclass PredictorStream extends DecodeStream {\n  constructor(str, maybeLength, params) {\n    super(maybeLength);\n\n    if (!(params instanceof Dict)) {\n      return str; // no prediction\n    }\n    const predictor = (this.predictor = params.get(\"Predictor\") || 1);\n\n    if (predictor <= 1) {\n      return str; // no prediction\n    }\n    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n      throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n\n    if (predictor === 2) {\n      this.readBlock = this.readBlockTiff;\n    } else {\n      this.readBlock = this.readBlockPng;\n    }\n\n    this.str = str;\n    this.dict = str.dict;\n\n    const colors = (this.colors = params.get(\"Colors\") || 1);\n    const bits = (this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8);\n    const columns = (this.columns = params.get(\"Columns\") || 1);\n\n    this.pixBytes = (colors * bits + 7) >> 3;\n    this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n    return this;\n  }\n\n  readBlockTiff() {\n    const rowBytes = this.rowBytes;\n\n    const bufferLength = this.bufferLength;\n    const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    const bits = this.bits;\n    const colors = this.colors;\n\n    const rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    let inbuf = 0,\n      outbuf = 0;\n    let inbits = 0,\n      outbits = 0;\n    let pos = bufferLength;\n    let i;\n\n    if (bits === 1 && colors === 1) {\n      // Optimized version of the loop in the \"else\"-branch\n      // for 1 bit-per-component and 1 color TIFF images.\n      for (i = 0; i < rowBytes; ++i) {\n        let c = rawBytes[i] ^ inbuf;\n        c ^= c >> 1;\n        c ^= c >> 2;\n        c ^= c >> 4;\n        inbuf = (c & 1) << 7;\n        buffer[pos++] = c;\n      }\n    } else if (bits === 8) {\n      for (i = 0; i < colors; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; ++i) {\n        buffer[pos] = buffer[pos - colors] + rawBytes[i];\n        pos++;\n      }\n    } else if (bits === 16) {\n      const bytesPerPixel = colors * 2;\n      for (i = 0; i < bytesPerPixel; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; i += 2) {\n        const sum =\n          ((rawBytes[i] & 0xff) << 8) +\n          (rawBytes[i + 1] & 0xff) +\n          ((buffer[pos - bytesPerPixel] & 0xff) << 8) +\n          (buffer[pos - bytesPerPixel + 1] & 0xff);\n        buffer[pos++] = (sum >> 8) & 0xff;\n        buffer[pos++] = sum & 0xff;\n      }\n    } else {\n      const compArray = new Uint8Array(colors + 1);\n      const bitMask = (1 << bits) - 1;\n      let j = 0,\n        k = bufferLength;\n      const columns = this.columns;\n      for (i = 0; i < columns; ++i) {\n        for (let kk = 0; kk < colors; ++kk) {\n          if (inbits < bits) {\n            inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n            inbits += 8;\n          }\n          compArray[kk] =\n            (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\n          inbits -= bits;\n          outbuf = (outbuf << bits) | compArray[kk];\n          outbits += bits;\n          if (outbits >= 8) {\n            buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n            outbits -= 8;\n          }\n        }\n      }\n      if (outbits > 0) {\n        buffer[k++] =\n          (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n      }\n    }\n    this.bufferLength += rowBytes;\n  }\n\n  readBlockPng() {\n    const rowBytes = this.rowBytes;\n    const pixBytes = this.pixBytes;\n\n    const predictor = this.str.getByte();\n    const rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    const bufferLength = this.bufferLength;\n    const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n    if (prevRow.length === 0) {\n      prevRow = new Uint8Array(rowBytes);\n    }\n\n    let i,\n      j = bufferLength,\n      up,\n      c;\n    switch (predictor) {\n      case 0:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        break;\n      case 1:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\n          j++;\n        }\n        break;\n      case 2:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\n        }\n        break;\n      case 3:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] =\n            (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\n          j++;\n        }\n        break;\n      case 4:\n        // we need to save the up left pixels values. the simplest way\n        // is to create a new buffer\n        for (i = 0; i < pixBytes; ++i) {\n          up = prevRow[i];\n          c = rawBytes[i];\n          buffer[j++] = up + c;\n        }\n        for (; i < rowBytes; ++i) {\n          up = prevRow[i];\n          const upLeft = prevRow[i - pixBytes];\n          const left = buffer[j - pixBytes];\n          const p = left + up - upLeft;\n\n          let pa = p - left;\n          if (pa < 0) {\n            pa = -pa;\n          }\n          let pb = p - up;\n          if (pb < 0) {\n            pb = -pb;\n          }\n          let pc = p - upLeft;\n          if (pc < 0) {\n            pc = -pc;\n          }\n\n          c = rawBytes[i];\n          if (pa <= pb && pa <= pc) {\n            buffer[j++] = left + c;\n          } else if (pb <= pc) {\n            buffer[j++] = up + c;\n          } else {\n            buffer[j++] = upLeft + c;\n          }\n        }\n        break;\n      default:\n        throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n    this.bufferLength += rowBytes;\n  }\n}\n\nexport { PredictorStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass RunLengthStream extends DecodeStream {\n  constructor(str, maybeLength) {\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n  }\n\n  readBlock() {\n    // The repeatHeader has following format. The first byte defines type of run\n    // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n    // (in addition to the second byte from the header), n = 129 through 255 -\n    // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n    const repeatHeader = this.str.getBytes(2);\n    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n      this.eof = true;\n      return;\n    }\n\n    let buffer;\n    let bufferLength = this.bufferLength;\n    let n = repeatHeader[0];\n    if (n < 128) {\n      // copy n bytes\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      buffer[bufferLength++] = repeatHeader[1];\n      if (n > 0) {\n        const source = this.str.getBytes(n);\n        buffer.set(source, bufferLength);\n        bufferLength += n;\n      }\n    } else {\n      n = 257 - n;\n      const b = repeatHeader[1];\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      for (let i = 0; i < n; i++) {\n        buffer[bufferLength++] = b;\n      }\n    }\n    this.bufferLength = bufferLength;\n  }\n}\n\nexport { RunLengthStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  FONT_IDENTITY_MATRIX,\n  FontType,\n  FormatError,\n  info,\n  shadow,\n  string32,\n  warn,\n} from \"../shared/util.js\";\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport {\n  FontFlags,\n  getFontType,\n  MacStandardGlyphOrdering,\n  normalizeFontName,\n  recoverGlyphName,\n  SEAC_ANALYSIS_ENABLED,\n} from \"./fonts_utils.js\";\nimport {\n  getCharUnicodeCategory,\n  getUnicodeForGlyph,\n  getUnicodeRangeFor,\n  mapSpecialUnicodeValues,\n} from \"./unicode.js\";\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \"./glyphlist.js\";\nimport {\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n  getGlyphMapForStandardFonts,\n  getNonStdFontMap,\n  getSerifFonts,\n  getStdFontMap,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { CFFFont } from \"./cff_font.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { getFontBasicMetrics } from \"./metrics.js\";\nimport { GlyfTable } from \"./glyf.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { OpenTypeFileBuilder } from \"./opentype_file_builder.js\";\nimport { readUint32 } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Font } from \"./type1_font.js\";\n\n// Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n  [0xe000, 0xf8ff], // BMP (0)\n  [0x100000, 0x10fffd], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nconst PDF_GLYPH_SPACE_UNITS = 1000;\n\nconst EXPORT_DATA_PROPERTIES = [\n  \"ascent\",\n  \"bbox\",\n  \"black\",\n  \"bold\",\n  \"charProcOperatorList\",\n  \"composite\",\n  \"cssFontInfo\",\n  \"data\",\n  \"defaultVMetrics\",\n  \"defaultWidth\",\n  \"descent\",\n  \"fallbackName\",\n  \"fontMatrix\",\n  \"fontType\",\n  \"isType3Font\",\n  \"italic\",\n  \"loadedName\",\n  \"mimetype\",\n  \"missingFile\",\n  \"name\",\n  \"remeasure\",\n  \"subtype\",\n  \"type\",\n  \"vertical\",\n];\n\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\n  \"cMap\",\n  \"defaultEncoding\",\n  \"differences\",\n  \"isMonospace\",\n  \"isSerifFont\",\n  \"isSymbolicFont\",\n  \"seacMap\",\n  \"toFontChar\",\n  \"toUnicode\",\n  \"vmetrics\",\n  \"widths\",\n];\n\nfunction adjustWidths(properties) {\n  if (!properties.fontMatrix) {\n    return;\n  }\n  if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n    return;\n  }\n  // adjusting width to fontMatrix scale\n  const scale = 0.001 / properties.fontMatrix[0];\n  const glyphsWidths = properties.widths;\n  for (const glyph in glyphsWidths) {\n    glyphsWidths[glyph] *= scale;\n  }\n  properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n  if (properties.isInternalFont) {\n    return;\n  }\n  if (builtInEncoding === properties.defaultEncoding) {\n    return; // No point in trying to adjust `toUnicode` if the encodings match.\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  const toUnicode = [],\n    glyphsUnicodeMap = getGlyphsUnicode();\n  for (const charCode in builtInEncoding) {\n    if (properties.hasIncludedToUnicodeMap) {\n      if (properties.toUnicode.has(charCode)) {\n        continue; // The font dictionary has a `ToUnicode` entry.\n      }\n    } else if (properties.hasEncoding) {\n      if (\n        properties.differences.length === 0 ||\n        properties.differences[charCode] !== undefined\n      ) {\n        continue; // The font dictionary has an `Encoding`/`Differences` entry.\n      }\n    }\n    const glyphName = builtInEncoding[charCode];\n    const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toUnicode[charCode] = String.fromCharCode(unicode);\n    }\n  }\n  if (toUnicode.length > 0) {\n    properties.toUnicode.amend(toUnicode);\n  }\n}\n\n/**\n * NOTE: This function should only be called at the *end* of font-parsing,\n *       after e.g. `adjustToUnicode` has run, to prevent any issues.\n */\nfunction amendFallbackToUnicode(properties) {\n  if (!properties.fallbackToUnicode) {\n    return;\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  const toUnicode = [];\n  for (const charCode in properties.fallbackToUnicode) {\n    if (properties.toUnicode.has(charCode)) {\n      continue; // The font dictionary has a `ToUnicode` entry.\n    }\n    toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n  }\n  if (toUnicode.length > 0) {\n    properties.toUnicode.amend(toUnicode);\n  }\n}\n\nclass Glyph {\n  constructor(\n    originalCharCode,\n    fontChar,\n    unicode,\n    accent,\n    width,\n    vmetric,\n    operatorListId,\n    isSpace,\n    isInFont\n  ) {\n    this.originalCharCode = originalCharCode;\n    this.fontChar = fontChar;\n    this.unicode = unicode;\n    this.accent = accent;\n    this.width = width;\n    this.vmetric = vmetric;\n    this.operatorListId = operatorListId;\n    this.isSpace = isSpace;\n    this.isInFont = isInFont;\n\n    const category = getCharUnicodeCategory(unicode);\n    this.isWhitespace = category.isWhitespace;\n    this.isZeroWidthDiacritic = category.isZeroWidthDiacritic;\n    this.isInvisibleFormatMark = category.isInvisibleFormatMark;\n  }\n\n  matchesForCache(\n    originalCharCode,\n    fontChar,\n    unicode,\n    accent,\n    width,\n    vmetric,\n    operatorListId,\n    isSpace,\n    isInFont\n  ) {\n    return (\n      this.originalCharCode === originalCharCode &&\n      this.fontChar === fontChar &&\n      this.unicode === unicode &&\n      this.accent === accent &&\n      this.width === width &&\n      this.vmetric === vmetric &&\n      this.operatorListId === operatorListId &&\n      this.isSpace === isSpace &&\n      this.isInFont === isInFont\n    );\n  }\n}\n\nfunction int16(b0, b1) {\n  return (b0 << 8) + b1;\n}\n\nfunction writeSignedInt16(bytes, index, value) {\n  bytes[index + 1] = value;\n  bytes[index] = value >>> 8;\n}\n\nfunction signedInt16(b0, b1) {\n  const value = (b0 << 8) + b1;\n  return value & (1 << 15) ? value - 0x10000 : value;\n}\n\nfunction int32(b0, b1, b2, b3) {\n  return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n}\n\nfunction string16(value) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      typeof value === \"number\" && Math.abs(value) < 2 ** 16,\n      `string16: Unexpected input \"${value}\".`\n    );\n  }\n  return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction safeString16(value) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      typeof value === \"number\" && !Number.isNaN(value),\n      `safeString16: Unexpected input \"${value}\".`\n    );\n  }\n  // clamp value to the 16-bit int range\n  if (value > 0x7fff) {\n    value = 0x7fff;\n  } else if (value < -0x8000) {\n    value = -0x8000;\n  }\n  return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction isTrueTypeFile(file) {\n  const header = file.peekBytes(4);\n  return (\n    readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n  );\n}\n\nfunction isTrueTypeCollectionFile(file) {\n  const header = file.peekBytes(4);\n  return bytesToString(header) === \"ttcf\";\n}\n\nfunction isOpenTypeFile(file) {\n  const header = file.peekBytes(4);\n  return bytesToString(header) === \"OTTO\";\n}\n\nfunction isType1File(file) {\n  const header = file.peekBytes(2);\n  // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n  if (header[0] === 0x25 && header[1] === 0x21) {\n    return true;\n  }\n  // ... obviously some fonts violate that part of the specification,\n  // please refer to the comment in |Type1Font| below (pfb file header).\n  if (header[0] === 0x80 && header[1] === 0x01) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * Compared to other font formats, the header in CFF files is not constant\n * but contains version numbers. To reduce the possibility of misclassifying\n * font files as CFF, it's recommended to check for other font formats first.\n */\nfunction isCFFFile(file) {\n  const header = file.peekBytes(4);\n  if (\n    /* major version, [1, 255] */ header[0] >= 1 &&\n    /* minor version, [0, 255]; header[1] */\n    /* header size, [0, 255]; header[2] */\n    /* offset(0) size, [1, 4] */ header[3] >= 1 &&\n    header[3] <= 4\n  ) {\n    return true;\n  }\n  return false;\n}\n\nfunction getFontFileType(file, { type, subtype, composite }) {\n  let fileType, fileSubtype;\n\n  if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n    if (composite) {\n      fileType = \"CIDFontType2\";\n    } else {\n      fileType = \"TrueType\";\n    }\n  } else if (isOpenTypeFile(file)) {\n    if (composite) {\n      fileType = \"CIDFontType2\";\n    } else {\n      fileType = \"OpenType\";\n    }\n  } else if (isType1File(file)) {\n    if (composite) {\n      fileType = \"CIDFontType0\";\n    } else {\n      fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n    }\n  } else if (isCFFFile(file)) {\n    if (composite) {\n      fileType = \"CIDFontType0\";\n      fileSubtype = \"CIDFontType0C\";\n    } else {\n      fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n      fileSubtype = \"Type1C\";\n    }\n  } else {\n    warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n    fileType = type;\n    fileSubtype = subtype;\n  }\n\n  return [fileType, fileSubtype];\n}\n\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n  for (const charCode in glyphMap) {\n    map[+charCode] = glyphMap[charCode];\n  }\n}\n\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n  const toFontChar = [];\n  let unicode;\n  for (let i = 0, ii = encoding.length; i < ii; i++) {\n    unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toFontChar[i] = unicode;\n    }\n  }\n  for (const charCode in differences) {\n    unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toFontChar[+charCode] = unicode;\n    }\n  }\n  return toFontChar;\n}\n\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n  switch (cid.length) {\n    case 1:\n      return cid.charCodeAt(0);\n    case 2:\n      return (cid.charCodeAt(0) << 8) | cid.charCodeAt(1);\n  }\n  const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n  if (shouldThrow) {\n    throw new FormatError(msg);\n  }\n  warn(msg);\n  return cid;\n}\n\n/**\n * Rebuilds the char code to glyph ID map by moving all char codes to the\n * private use area. This is done to avoid issues with various problematic\n * unicode areas where either a glyph won't be drawn or is deformed by a\n * shaper.\n * @returns {Object} Two properties:\n * 'toFontChar' - maps original char codes(the value that will be read\n * from commands such as show text) to the char codes that will be used in the\n * font that we build\n * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n */\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n  const newMap = Object.create(null);\n  const toFontChar = [];\n  let privateUseAreaIndex = 0;\n  let nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n  let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n  for (let originalCharCode in charCodeToGlyphId) {\n    originalCharCode |= 0;\n    let glyphId = charCodeToGlyphId[originalCharCode];\n    // For missing glyphs don't create the mappings so the glyph isn't\n    // drawn.\n    if (!hasGlyph(glyphId)) {\n      continue;\n    }\n    if (nextAvailableFontCharCode > privateUseOffetEnd) {\n      privateUseAreaIndex++;\n      if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n        warn(\"Ran out of space in font private use area.\");\n        break;\n      }\n      nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n      privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n    }\n    const fontCharCode = nextAvailableFontCharCode++;\n    if (glyphId === 0) {\n      glyphId = newGlyphZeroId;\n    }\n\n    newMap[fontCharCode] = glyphId;\n    toFontChar[originalCharCode] = fontCharCode;\n  }\n  return {\n    toFontChar,\n    charCodeToGlyphId: newMap,\n    nextAvailableFontCharCode,\n  };\n}\n\nfunction getRanges(glyphs, numGlyphs) {\n  // Array.sort() sorts by characters, not numerically, so convert to an\n  // array of characters.\n  const codes = [];\n  for (const charCode in glyphs) {\n    // Remove an invalid glyph ID mappings to make OTS happy.\n    if (glyphs[charCode] >= numGlyphs) {\n      continue;\n    }\n    codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\n  }\n  // Some fonts have zero glyphs and are used only for text selection, but\n  // there needs to be at least one to build a valid cmap table.\n  if (codes.length === 0) {\n    codes.push({ fontCharCode: 0, glyphId: 0 });\n  }\n  codes.sort(function fontGetRangesSort(a, b) {\n    return a.fontCharCode - b.fontCharCode;\n  });\n\n  // Split the sorted codes into ranges.\n  const ranges = [];\n  const length = codes.length;\n  for (let n = 0; n < length; ) {\n    const start = codes[n].fontCharCode;\n    const codeIndices = [codes[n].glyphId];\n    ++n;\n    let end = start;\n    while (n < length && end + 1 === codes[n].fontCharCode) {\n      codeIndices.push(codes[n].glyphId);\n      ++end;\n      ++n;\n      if (end === 0xffff) {\n        break;\n      }\n    }\n    ranges.push([start, end, codeIndices]);\n  }\n\n  return ranges;\n}\n\nfunction createCmapTable(glyphs, numGlyphs) {\n  const ranges = getRanges(glyphs, numGlyphs);\n  const numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n  let cmap =\n    \"\\x00\\x00\" + // version\n    string16(numTables) + // numTables\n    \"\\x00\\x03\" + // platformID\n    \"\\x00\\x01\" + // encodingID\n    string32(4 + numTables * 8); // start of the table record\n\n  let i, ii, j, jj;\n  for (i = ranges.length - 1; i >= 0; --i) {\n    if (ranges[i][0] <= 0xffff) {\n      break;\n    }\n  }\n  const bmpLength = i + 1;\n\n  if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n    ranges[i][1] = 0xfffe;\n  }\n  const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n  const segCount = bmpLength + trailingRangesCount;\n  const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n  // Fill up the 4 parallel arrays describing the segments.\n  let startCount = \"\";\n  let endCount = \"\";\n  let idDeltas = \"\";\n  let idRangeOffsets = \"\";\n  let glyphsIds = \"\";\n  let bias = 0;\n\n  let range, start, end, codes;\n  for (i = 0, ii = bmpLength; i < ii; i++) {\n    range = ranges[i];\n    start = range[0];\n    end = range[1];\n    startCount += string16(start);\n    endCount += string16(end);\n    codes = range[2];\n    let contiguous = true;\n    for (j = 1, jj = codes.length; j < jj; ++j) {\n      if (codes[j] !== codes[j - 1] + 1) {\n        contiguous = false;\n        break;\n      }\n    }\n    if (!contiguous) {\n      const offset = (segCount - i) * 2 + bias * 2;\n      bias += end - start + 1;\n\n      idDeltas += string16(0);\n      idRangeOffsets += string16(offset);\n\n      for (j = 0, jj = codes.length; j < jj; ++j) {\n        glyphsIds += string16(codes[j]);\n      }\n    } else {\n      const startCode = codes[0];\n\n      idDeltas += string16((startCode - start) & 0xffff);\n      idRangeOffsets += string16(0);\n    }\n  }\n\n  if (trailingRangesCount > 0) {\n    endCount += \"\\xFF\\xFF\";\n    startCount += \"\\xFF\\xFF\";\n    idDeltas += \"\\x00\\x01\";\n    idRangeOffsets += \"\\x00\\x00\";\n  }\n\n  const format314 =\n    \"\\x00\\x00\" + // language\n    string16(2 * segCount) +\n    string16(searchParams.range) +\n    string16(searchParams.entry) +\n    string16(searchParams.rangeShift) +\n    endCount +\n    \"\\x00\\x00\" +\n    startCount +\n    idDeltas +\n    idRangeOffsets +\n    glyphsIds;\n\n  let format31012 = \"\";\n  let header31012 = \"\";\n  if (numTables > 1) {\n    cmap +=\n      \"\\x00\\x03\" + // platformID\n      \"\\x00\\x0A\" + // encodingID\n      string32(4 + numTables * 8 + 4 + format314.length); // start of the table record\n    format31012 = \"\";\n    for (i = 0, ii = ranges.length; i < ii; i++) {\n      range = ranges[i];\n      start = range[0];\n      codes = range[2];\n      let code = codes[0];\n      for (j = 1, jj = codes.length; j < jj; ++j) {\n        if (codes[j] !== codes[j - 1] + 1) {\n          end = range[0] + j - 1;\n          format31012 +=\n            string32(start) + // startCharCode\n            string32(end) + // endCharCode\n            string32(code); // startGlyphID\n          start = end + 1;\n          code = codes[j];\n        }\n      }\n      format31012 +=\n        string32(start) + // startCharCode\n        string32(range[1]) + // endCharCode\n        string32(code); // startGlyphID\n    }\n    header31012 =\n      \"\\x00\\x0C\" + // format\n      \"\\x00\\x00\" + // reserved\n      string32(format31012.length + 16) + // length\n      \"\\x00\\x00\\x00\\x00\" + // language\n      string32(format31012.length / 12); // nGroups\n  }\n\n  return (\n    cmap +\n    \"\\x00\\x04\" + // format\n    string16(format314.length + 4) + // length\n    format314 +\n    header31012 +\n    format31012\n  );\n}\n\nfunction validateOS2Table(os2, file) {\n  file.pos = (file.start || 0) + os2.offset;\n  const version = file.getUint16();\n  // TODO verify all OS/2 tables fields, but currently we validate only those\n  // that give us issues\n  file.skip(60); // skipping type, misc sizes, panose, unicode ranges\n  const selection = file.getUint16();\n  if (version < 4 && selection & 0x0300) {\n    return false;\n  }\n  const firstChar = file.getUint16();\n  const lastChar = file.getUint16();\n  if (firstChar > lastChar) {\n    return false;\n  }\n  file.skip(6); // skipping sTypoAscender/Descender/LineGap\n  const usWinAscent = file.getUint16();\n  if (usWinAscent === 0) {\n    // makes font unreadable by windows\n    return false;\n  }\n\n  // OS/2 appears to be valid, resetting some fields\n  os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n  return true;\n}\n\nfunction createOS2Table(properties, charstrings, override) {\n  override = override || {\n    unitsPerEm: 0,\n    yMax: 0,\n    yMin: 0,\n    ascent: 0,\n    descent: 0,\n  };\n\n  let ulUnicodeRange1 = 0;\n  let ulUnicodeRange2 = 0;\n  let ulUnicodeRange3 = 0;\n  let ulUnicodeRange4 = 0;\n\n  let firstCharIndex = null;\n  let lastCharIndex = 0;\n\n  if (charstrings) {\n    for (let code in charstrings) {\n      code |= 0;\n      if (firstCharIndex > code || !firstCharIndex) {\n        firstCharIndex = code;\n      }\n      if (lastCharIndex < code) {\n        lastCharIndex = code;\n      }\n\n      const position = getUnicodeRangeFor(code);\n      if (position < 32) {\n        ulUnicodeRange1 |= 1 << position;\n      } else if (position < 64) {\n        ulUnicodeRange2 |= 1 << (position - 32);\n      } else if (position < 96) {\n        ulUnicodeRange3 |= 1 << (position - 64);\n      } else if (position < 123) {\n        ulUnicodeRange4 |= 1 << (position - 96);\n      } else {\n        throw new FormatError(\n          \"Unicode ranges Bits > 123 are reserved for internal usage\"\n        );\n      }\n    }\n    if (lastCharIndex > 0xffff) {\n      // OS2 only supports a 16 bit int. The spec says if supplementary\n      // characters are used the field should just be set to 0xFFFF.\n      lastCharIndex = 0xffff;\n    }\n  } else {\n    // TODO\n    firstCharIndex = 0;\n    lastCharIndex = 255;\n  }\n\n  const bbox = properties.bbox || [0, 0, 0, 0];\n  const unitsPerEm =\n    override.unitsPerEm ||\n    1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n  // if the font units differ to the PDF glyph space units\n  // then scale up the values\n  const scale = properties.ascentScaled\n    ? 1.0\n    : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n  const typoAscent =\n    override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n  let typoDescent =\n    override.descent || Math.round(scale * (properties.descent || bbox[1]));\n  if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n    typoDescent = -typoDescent; // fixing incorrect descent\n  }\n  const winAscent = override.yMax || typoAscent;\n  const winDescent = -override.yMin || -typoDescent;\n\n  return (\n    \"\\x00\\x03\" + // version\n    \"\\x02\\x24\" + // xAvgCharWidth\n    \"\\x01\\xF4\" + // usWeightClass\n    \"\\x00\\x05\" + // usWidthClass\n    \"\\x00\\x00\" + // fstype (0 to let the font loads via font-face on IE)\n    \"\\x02\\x8A\" + // ySubscriptXSize\n    \"\\x02\\xBB\" + // ySubscriptYSize\n    \"\\x00\\x00\" + // ySubscriptXOffset\n    \"\\x00\\x8C\" + // ySubscriptYOffset\n    \"\\x02\\x8A\" + // ySuperScriptXSize\n    \"\\x02\\xBB\" + // ySuperScriptYSize\n    \"\\x00\\x00\" + // ySuperScriptXOffset\n    \"\\x01\\xDF\" + // ySuperScriptYOffset\n    \"\\x00\\x31\" + // yStrikeOutSize\n    \"\\x01\\x02\" + // yStrikeOutPosition\n    \"\\x00\\x00\" + // sFamilyClass\n    \"\\x00\\x00\\x06\" +\n    String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n    \"\\x00\\x00\\x00\\x00\\x00\\x00\" + // Panose\n    string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n    string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n    string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n    string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n    \"\\x2A\\x32\\x31\\x2A\" + // achVendID\n    string16(properties.italicAngle ? 1 : 0) + // fsSelection\n    string16(firstCharIndex || properties.firstChar) + // usFirstCharIndex\n    string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n    string16(typoAscent) + // sTypoAscender\n    string16(typoDescent) + // sTypoDescender\n    \"\\x00\\x64\" + // sTypoLineGap (7%-10% of the unitsPerEM value)\n    string16(winAscent) + // usWinAscent\n    string16(winDescent) + // usWinDescent\n    \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange1 (Bits 0-31)\n    \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange2 (Bits 32-63)\n    string16(properties.xHeight) + // sxHeight\n    string16(properties.capHeight) + // sCapHeight\n    string16(0) + // usDefaultChar\n    string16(firstCharIndex || properties.firstChar) + // usBreakChar\n    \"\\x00\\x03\"\n  ); // usMaxContext\n}\n\nfunction createPostTable(properties) {\n  const angle = Math.floor(properties.italicAngle * 2 ** 16);\n  return (\n    \"\\x00\\x03\\x00\\x00\" + // Version number\n    string32(angle) + // italicAngle\n    \"\\x00\\x00\" + // underlinePosition\n    \"\\x00\\x00\" + // underlineThickness\n    string32(properties.fixedPitch ? 1 : 0) + // isFixedPitch\n    \"\\x00\\x00\\x00\\x00\" + // minMemType42\n    \"\\x00\\x00\\x00\\x00\" + // maxMemType42\n    \"\\x00\\x00\\x00\\x00\" + // minMemType1\n    \"\\x00\\x00\\x00\\x00\"\n  ); // maxMemType1\n}\n\nfunction createPostscriptName(name) {\n  // See https://docs.microsoft.com/en-us/typography/opentype/spec/recom#name.\n  return name.replace(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\n\nfunction createNameTable(name, proto) {\n  if (!proto) {\n    proto = [[], []]; // no strings and unicode strings\n  }\n\n  const strings = [\n    proto[0][0] || \"Original licence\", // 0.Copyright\n    proto[0][1] || name, // 1.Font family\n    proto[0][2] || \"Unknown\", // 2.Font subfamily (font weight)\n    proto[0][3] || \"uniqueID\", // 3.Unique ID\n    proto[0][4] || name, // 4.Full font name\n    proto[0][5] || \"Version 0.11\", // 5.Version\n    proto[0][6] || createPostscriptName(name), // 6.Postscript name\n    proto[0][7] || \"Unknown\", // 7.Trademark\n    proto[0][8] || \"Unknown\", // 8.Manufacturer\n    proto[0][9] || \"Unknown\", // 9.Designer\n  ];\n\n  // Mac want 1-byte per character strings while Windows want\n  // 2-bytes per character, so duplicate the names table\n  const stringsUnicode = [];\n  let i, ii, j, jj, str;\n  for (i = 0, ii = strings.length; i < ii; i++) {\n    str = proto[1][i] || strings[i];\n\n    const strBufUnicode = [];\n    for (j = 0, jj = str.length; j < jj; j++) {\n      strBufUnicode.push(string16(str.charCodeAt(j)));\n    }\n    stringsUnicode.push(strBufUnicode.join(\"\"));\n  }\n\n  const names = [strings, stringsUnicode];\n  const platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n  const encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n  const languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n  const namesRecordCount = strings.length * platforms.length;\n  let nameTable =\n    \"\\x00\\x00\" + // format\n    string16(namesRecordCount) + // Number of names Record\n    string16(namesRecordCount * 12 + 6); // Storage\n\n  // Build the name records field\n  let strOffset = 0;\n  for (i = 0, ii = platforms.length; i < ii; i++) {\n    const strs = names[i];\n    for (j = 0, jj = strs.length; j < jj; j++) {\n      str = strs[j];\n      const nameRecord =\n        platforms[i] + // platform ID\n        encodings[i] + // encoding ID\n        languages[i] + // language ID\n        string16(j) + // name ID\n        string16(str.length) +\n        string16(strOffset);\n      nameTable += nameRecord;\n      strOffset += str.length;\n    }\n  }\n\n  nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n  return nameTable;\n}\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n */\nclass Font {\n  constructor(name, file, properties) {\n    this.name = name;\n    this.psName = null;\n    this.mimetype = null;\n    this.disableFontFace = false;\n\n    this.loadedName = properties.loadedName;\n    this.isType3Font = properties.isType3Font;\n    this.missingFile = false;\n    this.cssFontInfo = properties.cssFontInfo;\n\n    this._charsCache = Object.create(null);\n    this._glyphCache = Object.create(null);\n\n    let isSerifFont = !!(properties.flags & FontFlags.Serif);\n    // Fallback to checking the font name, in order to improve text-selection,\n    // since the /Flags-entry is often wrong (fixes issue13845.pdf).\n    if (!isSerifFont && !properties.isSimulatedFlags) {\n      const baseName = name.replace(/[,_]/g, \"-\").split(\"-\")[0],\n        serifFonts = getSerifFonts();\n      for (const namePart of baseName.split(\"+\")) {\n        if (serifFonts[namePart]) {\n          isSerifFont = true;\n          break;\n        }\n      }\n    }\n    this.isSerifFont = isSerifFont;\n\n    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n    let type = properties.type;\n    let subtype = properties.subtype;\n    this.type = type;\n    this.subtype = subtype;\n\n    let fallbackName = \"sans-serif\";\n    if (this.isMonospace) {\n      fallbackName = \"monospace\";\n    } else if (this.isSerifFont) {\n      fallbackName = \"serif\";\n    }\n    this.fallbackName = fallbackName;\n\n    this.differences = properties.differences;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.composite = properties.composite;\n    this.cMap = properties.cMap;\n    this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n    this.lineHeight = this.ascent - this.descent;\n    this.fontMatrix = properties.fontMatrix;\n    this.bbox = properties.bbox;\n    this.defaultEncoding = properties.defaultEncoding;\n\n    this.toUnicode = properties.toUnicode;\n    this.toFontChar = [];\n\n    if (properties.type === \"Type3\") {\n      for (let charCode = 0; charCode < 256; charCode++) {\n        this.toFontChar[charCode] =\n          this.differences[charCode] || properties.defaultEncoding[charCode];\n      }\n      this.fontType = FontType.TYPE3;\n      return;\n    }\n\n    this.cidEncoding = properties.cidEncoding || \"\";\n    this.vertical = !!properties.vertical;\n    if (this.vertical) {\n      this.vmetrics = properties.vmetrics;\n      this.defaultVMetrics = properties.defaultVMetrics;\n    }\n\n    if (!file || file.isEmpty) {\n      if (file) {\n        // Some bad PDF generators will include empty font files,\n        // attempting to recover by assuming that no file exists.\n        warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n      }\n      this.fallbackToSystemFont(properties);\n      return;\n    }\n\n    // Parse the font file to determine the correct type/subtype, rather than\n    // relying on the (often incorrect) data in the font dictionary; (see e.g.\n    //  issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n    [type, subtype] = getFontFileType(file, properties);\n\n    if (type !== this.type || subtype !== this.subtype) {\n      info(\n        \"Inconsistent font file Type/SubType, expected: \" +\n          `${this.type}/${this.subtype} but found: ${type}/${subtype}.`\n      );\n    }\n\n    let data;\n    try {\n      switch (type) {\n        case \"MMType1\":\n          info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n        /* falls through */\n        case \"Type1\":\n        case \"CIDFontType0\":\n          this.mimetype = \"font/opentype\";\n\n          const cff =\n            subtype === \"Type1C\" || subtype === \"CIDFontType0C\"\n              ? new CFFFont(file, properties)\n              : new Type1Font(name, file, properties);\n\n          adjustWidths(properties);\n\n          // Wrap the CFF data inside an OTF font file\n          data = this.convert(name, cff, properties);\n          break;\n\n        case \"OpenType\":\n        case \"TrueType\":\n        case \"CIDFontType2\":\n          this.mimetype = \"font/opentype\";\n\n          // Repair the TrueType file. It is can be damaged in the point of\n          // view of the sanitizer\n          data = this.checkAndRepair(name, file, properties);\n          if (this.isOpenType) {\n            adjustWidths(properties);\n\n            type = \"OpenType\";\n          }\n          break;\n\n        default:\n          throw new FormatError(`Font ${type} is not supported`);\n      }\n    } catch (e) {\n      warn(e);\n      this.fallbackToSystemFont(properties);\n      return;\n    }\n\n    amendFallbackToUnicode(properties);\n    this.data = data;\n    this.fontType = getFontType(type, subtype, properties.isStandardFont);\n\n    // Transfer some properties again that could change during font conversion\n    this.fontMatrix = properties.fontMatrix;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.toUnicode = properties.toUnicode;\n    this.seacMap = properties.seacMap;\n  }\n\n  get renderer() {\n    const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n    return shadow(this, \"renderer\", renderer);\n  }\n\n  exportData(extraProperties = false) {\n    const exportDataProperties = extraProperties\n      ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\n      : EXPORT_DATA_PROPERTIES;\n\n    const data = Object.create(null);\n    let property, value;\n    for (property of exportDataProperties) {\n      value = this[property];\n      // Ignore properties that haven't been explicitly set.\n      if (value !== undefined) {\n        data[property] = value;\n      }\n    }\n    return data;\n  }\n\n  fallbackToSystemFont(properties) {\n    this.missingFile = true;\n    // The file data is not specified. Trying to fix the font name\n    // to be used with the canvas.font.\n    const name = this.name;\n    const type = this.type;\n    const subtype = this.subtype;\n    let fontName = normalizeFontName(name);\n    const stdFontMap = getStdFontMap(),\n      nonStdFontMap = getNonStdFontMap();\n    const isStandardFont = !!stdFontMap[fontName];\n    const isMappedToStandardFont = !!(\n      nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]\n    );\n\n    fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n\n    const fontBasicMetricsMap = getFontBasicMetrics();\n    const metrics = fontBasicMetricsMap[fontName];\n    if (metrics) {\n      if (isNaN(this.ascent)) {\n        this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS;\n      }\n      if (isNaN(this.descent)) {\n        this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS;\n      }\n      if (isNaN(this.capHeight)) {\n        this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS;\n      }\n    }\n\n    this.bold = fontName.search(/bold/gi) !== -1;\n    this.italic =\n      fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;\n\n    // Use 'name' instead of 'fontName' here because the original\n    // name ArialBlack for example will be replaced by Helvetica.\n    this.black = name.search(/Black/g) !== -1;\n\n    // Use 'name' instead of 'fontName' here because the original\n    // name ArialNarrow for example will be replaced by Helvetica.\n    const isNarrow = name.search(/Narrow/g) !== -1;\n\n    // if at least one width is present, remeasure all chars when exists\n    this.remeasure =\n      (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n    if (\n      (isStandardFont || isMappedToStandardFont) &&\n      type === \"CIDFontType2\" &&\n      this.cidEncoding.startsWith(\"Identity-\")\n    ) {\n      const cidToGidMap = properties.cidToGidMap;\n      // Standard fonts might be embedded as CID font without glyph mapping.\n      // Building one based on GlyphMapForStandardFonts.\n      const map = [];\n      applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n\n      if (/Arial-?Black/i.test(name)) {\n        applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n      } else if (/Calibri/i.test(name)) {\n        applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n      }\n\n      // Always update the glyph mapping with the `cidToGidMap` when it exists\n      // (fixes issue12418_reduced.pdf).\n      if (cidToGidMap) {\n        for (const charCode in map) {\n          const cid = map[charCode];\n          if (cidToGidMap[cid] !== undefined) {\n            map[+charCode] = cidToGidMap[cid];\n          }\n        }\n        // When the /CIDToGIDMap is \"incomplete\", fallback to the included\n        // /ToUnicode-map regardless of its encoding (fixes issue11915.pdf).\n        if (\n          cidToGidMap.length !== this.toUnicode.length &&\n          properties.hasIncludedToUnicodeMap &&\n          this.toUnicode instanceof IdentityToUnicodeMap\n        ) {\n          this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n            const cid = map[charCode];\n            if (cidToGidMap[cid] === undefined) {\n              map[+charCode] = unicodeCharCode;\n            }\n          });\n        }\n      }\n\n      if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n          map[+charCode] = unicodeCharCode;\n        });\n      }\n      this.toFontChar = map;\n      this.toUnicode = new ToUnicodeMap(map);\n    } else if (/Symbol/i.test(fontName)) {\n      this.toFontChar = buildToFontChar(\n        SymbolSetEncoding,\n        getGlyphsUnicode(),\n        this.differences\n      );\n    } else if (/Dingbats/i.test(fontName)) {\n      if (/Wingdings/i.test(name)) {\n        warn(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n      }\n      this.toFontChar = buildToFontChar(\n        ZapfDingbatsEncoding,\n        getDingbatsGlyphsUnicode(),\n        this.differences\n      );\n    } else if (isStandardFont) {\n      const map = buildToFontChar(\n        this.defaultEncoding,\n        getGlyphsUnicode(),\n        this.differences\n      );\n\n      if (\n        type === \"CIDFontType2\" &&\n        !this.cidEncoding.startsWith(\"Identity-\") &&\n        !(this.toUnicode instanceof IdentityToUnicodeMap)\n      ) {\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n          map[+charCode] = unicodeCharCode;\n        });\n      }\n      this.toFontChar = map;\n    } else {\n      const glyphsUnicodeMap = getGlyphsUnicode();\n      const map = [];\n      this.toUnicode.forEach((charCode, unicodeCharCode) => {\n        if (!this.composite) {\n          const glyphName =\n            this.differences[charCode] || this.defaultEncoding[charCode];\n          const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n          if (unicode !== -1) {\n            unicodeCharCode = unicode;\n          }\n        }\n        map[+charCode] = unicodeCharCode;\n      });\n\n      // Attempt to improve the glyph mapping for (some) composite fonts that\n      // appear to lack meaningful ToUnicode data.\n      if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n        if (/Verdana/i.test(name)) {\n          // Fixes issue11242_reduced.pdf\n          applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n        }\n      }\n      this.toFontChar = map;\n    }\n\n    amendFallbackToUnicode(properties);\n    this.loadedName = fontName.split(\"-\")[0];\n    this.fontType = getFontType(type, subtype, properties.isStandardFont);\n  }\n\n  checkAndRepair(name, font, properties) {\n    const VALID_TABLES = [\n      \"OS/2\",\n      \"cmap\",\n      \"head\",\n      \"hhea\",\n      \"hmtx\",\n      \"maxp\",\n      \"name\",\n      \"post\",\n      \"loca\",\n      \"glyf\",\n      \"fpgm\",\n      \"prep\",\n      \"cvt \",\n      \"CFF \",\n    ];\n\n    function readTables(file, numTables) {\n      const tables = Object.create(null);\n      tables[\"OS/2\"] = null;\n      tables.cmap = null;\n      tables.head = null;\n      tables.hhea = null;\n      tables.hmtx = null;\n      tables.maxp = null;\n      tables.name = null;\n      tables.post = null;\n\n      for (let i = 0; i < numTables; i++) {\n        const table = readTableEntry(file);\n        if (!VALID_TABLES.includes(table.tag)) {\n          continue; // skipping table if it's not a required or optional table\n        }\n        if (table.length === 0) {\n          continue; // skipping empty tables\n        }\n        tables[table.tag] = table;\n      }\n      return tables;\n    }\n\n    function readTableEntry(file) {\n      const tag = file.getString(4);\n\n      const checksum = file.getInt32() >>> 0;\n      const offset = file.getInt32() >>> 0;\n      const length = file.getInt32() >>> 0;\n\n      // Read the table associated data\n      const previousPosition = file.pos;\n      file.pos = file.start ? file.start : 0;\n      file.skip(offset);\n      const data = file.getBytes(length);\n      file.pos = previousPosition;\n\n      if (tag === \"head\") {\n        // clearing checksum adjustment\n        data[8] = data[9] = data[10] = data[11] = 0;\n        data[17] |= 0x20; // Set font optimized for cleartype flag.\n      }\n\n      return {\n        tag,\n        checksum,\n        length,\n        offset,\n        data,\n      };\n    }\n\n    function readOpenTypeHeader(ttf) {\n      return {\n        version: ttf.getString(4),\n        numTables: ttf.getUint16(),\n        searchRange: ttf.getUint16(),\n        entrySelector: ttf.getUint16(),\n        rangeShift: ttf.getUint16(),\n      };\n    }\n\n    function readTrueTypeCollectionHeader(ttc) {\n      const ttcTag = ttc.getString(4);\n      assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n\n      const majorVersion = ttc.getUint16();\n      const minorVersion = ttc.getUint16();\n      const numFonts = ttc.getInt32() >>> 0;\n      const offsetTable = [];\n      for (let i = 0; i < numFonts; i++) {\n        offsetTable.push(ttc.getInt32() >>> 0);\n      }\n\n      const header = {\n        ttcTag,\n        majorVersion,\n        minorVersion,\n        numFonts,\n        offsetTable,\n      };\n      switch (majorVersion) {\n        case 1:\n          return header;\n        case 2:\n          header.dsigTag = ttc.getInt32() >>> 0;\n          header.dsigLength = ttc.getInt32() >>> 0;\n          header.dsigOffset = ttc.getInt32() >>> 0;\n          return header;\n      }\n      throw new FormatError(\n        `Invalid TrueType Collection majorVersion: ${majorVersion}.`\n      );\n    }\n\n    function readTrueTypeCollectionData(ttc, fontName) {\n      const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\n      const fontNameParts = fontName.split(\"+\");\n      let fallbackData;\n\n      for (let i = 0; i < numFonts; i++) {\n        ttc.pos = (ttc.start || 0) + offsetTable[i];\n        const potentialHeader = readOpenTypeHeader(ttc);\n        const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n        if (!potentialTables.name) {\n          throw new FormatError(\n            'TrueType Collection font must contain a \"name\" table.'\n          );\n        }\n        const nameTable = readNameTable(potentialTables.name);\n\n        for (let j = 0, jj = nameTable.length; j < jj; j++) {\n          for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n            const nameEntry =\n              nameTable[j][k] && nameTable[j][k].replace(/\\s/g, \"\");\n            if (!nameEntry) {\n              continue;\n            }\n            if (nameEntry === fontName) {\n              return {\n                header: potentialHeader,\n                tables: potentialTables,\n              };\n            }\n            if (fontNameParts.length < 2) {\n              continue;\n            }\n            for (const part of fontNameParts) {\n              if (nameEntry === part) {\n                fallbackData = {\n                  name: part,\n                  header: potentialHeader,\n                  tables: potentialTables,\n                };\n              }\n            }\n          }\n        }\n      }\n      if (fallbackData) {\n        warn(\n          `TrueType Collection does not contain \"${fontName}\" font, ` +\n            `falling back to \"${fallbackData.name}\" font instead.`\n        );\n        return {\n          header: fallbackData.header,\n          tables: fallbackData.tables,\n        };\n      }\n      throw new FormatError(\n        `TrueType Collection does not contain \"${fontName}\" font.`\n      );\n    }\n\n    /**\n     * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n     * PDF spec\n     */\n    function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n      if (!cmap) {\n        warn(\"No cmap table available.\");\n        return {\n          platformId: -1,\n          encodingId: -1,\n          mappings: [],\n          hasShortCmap: false,\n        };\n      }\n      let segment;\n      let start = (file.start ? file.start : 0) + cmap.offset;\n      file.pos = start;\n\n      file.skip(2); // version\n      const numTables = file.getUint16();\n\n      let potentialTable;\n      let canBreak = false;\n      // There's an order of preference in terms of which cmap subtable to\n      // use:\n      // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n      // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n      // The following takes advantage of the fact that the tables are sorted\n      // to work.\n      for (let i = 0; i < numTables; i++) {\n        const platformId = file.getUint16();\n        const encodingId = file.getUint16();\n        const offset = file.getInt32() >>> 0;\n        let useTable = false;\n\n        // Sometimes there are multiple of the same type of table. Default\n        // to choosing the first table and skip the rest.\n        if (\n          potentialTable &&\n          potentialTable.platformId === platformId &&\n          potentialTable.encodingId === encodingId\n        ) {\n          continue;\n        }\n\n        if (\n          platformId === 0 &&\n          (encodingId === /* Unicode Default */ 0 ||\n            encodingId === /* Unicode 1.1 */ 1 ||\n            encodingId === /* Unicode BMP */ 3)\n        ) {\n          useTable = true;\n          // Continue the loop since there still may be a higher priority\n          // table.\n        } else if (platformId === 1 && encodingId === 0) {\n          useTable = true;\n          // Continue the loop since there still may be a higher priority\n          // table.\n        } else if (\n          platformId === 3 &&\n          encodingId === 1 &&\n          (hasEncoding || !potentialTable)\n        ) {\n          useTable = true;\n          if (!isSymbolicFont) {\n            canBreak = true;\n          }\n        } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n          useTable = true;\n\n          let correctlySorted = true;\n          if (i < numTables - 1) {\n            const nextBytes = file.peekBytes(2),\n              nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n            if (nextPlatformId < platformId) {\n              correctlySorted = false;\n            }\n          }\n          if (correctlySorted) {\n            canBreak = true;\n          }\n        }\n\n        if (useTable) {\n          potentialTable = {\n            platformId,\n            encodingId,\n            offset,\n          };\n        }\n        if (canBreak) {\n          break;\n        }\n      }\n\n      if (potentialTable) {\n        file.pos = start + potentialTable.offset;\n      }\n      if (!potentialTable || file.peekByte() === -1) {\n        warn(\"Could not find a preferred cmap table.\");\n        return {\n          platformId: -1,\n          encodingId: -1,\n          mappings: [],\n          hasShortCmap: false,\n        };\n      }\n\n      const format = file.getUint16();\n      file.skip(2 + 2); // length + language\n\n      let hasShortCmap = false;\n      const mappings = [];\n      let j, glyphId;\n\n      // TODO(mack): refactor this cmap subtable reading logic out\n      if (format === 0) {\n        for (j = 0; j < 256; j++) {\n          const index = file.getByte();\n          if (!index) {\n            continue;\n          }\n          mappings.push({\n            charCode: j,\n            glyphId: index,\n          });\n        }\n        hasShortCmap = true;\n      } else if (format === 2) {\n        const subHeaderKeys = [];\n        let maxSubHeaderKey = 0;\n        // Read subHeaderKeys. If subHeaderKeys[i] === 0, then i is a\n        // single-byte character. Otherwise, i is the first byte of a\n        // multi-byte character, and the value is 8*index into\n        // subHeaders.\n        for (let i = 0; i < 256; i++) {\n          const subHeaderKey = file.getUint16() >> 3;\n          subHeaderKeys.push(subHeaderKey);\n          maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n        }\n        // Read subHeaders. The number of entries is determined\n        // dynamically based on the subHeaderKeys found above.\n        const subHeaders = [];\n        for (let i = 0; i <= maxSubHeaderKey; i++) {\n          subHeaders.push({\n            firstCode: file.getUint16(),\n            entryCount: file.getUint16(),\n            idDelta: signedInt16(file.getByte(), file.getByte()),\n            idRangePos: file.pos + file.getUint16(),\n          });\n        }\n        for (let i = 0; i < 256; i++) {\n          if (subHeaderKeys[i] === 0) {\n            // i is a single-byte code.\n            file.pos = subHeaders[0].idRangePos + 2 * i;\n            glyphId = file.getUint16();\n            mappings.push({\n              charCode: i,\n              glyphId,\n            });\n          } else {\n            // i is the first byte of a two-byte code.\n            const s = subHeaders[subHeaderKeys[i]];\n            for (j = 0; j < s.entryCount; j++) {\n              const charCode = (i << 8) + j + s.firstCode;\n              file.pos = s.idRangePos + 2 * j;\n              glyphId = file.getUint16();\n              if (glyphId !== 0) {\n                glyphId = (glyphId + s.idDelta) % 65536;\n              }\n              mappings.push({\n                charCode,\n                glyphId,\n              });\n            }\n          }\n        }\n      } else if (format === 4) {\n        // re-creating the table in format 4 since the encoding\n        // might be changed\n        const segCount = file.getUint16() >> 1;\n        file.skip(6); // skipping range fields\n        const segments = [];\n        let segIndex;\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segments.push({ end: file.getUint16() });\n        }\n        file.skip(2);\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segments[segIndex].start = file.getUint16();\n        }\n\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segments[segIndex].delta = file.getUint16();\n        }\n\n        let offsetsCount = 0,\n          offsetIndex;\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segment = segments[segIndex];\n          const rangeOffset = file.getUint16();\n          if (!rangeOffset) {\n            segment.offsetIndex = -1;\n            continue;\n          }\n\n          offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n          segment.offsetIndex = offsetIndex;\n          offsetsCount = Math.max(\n            offsetsCount,\n            offsetIndex + segment.end - segment.start + 1\n          );\n        }\n\n        const offsets = [];\n        for (j = 0; j < offsetsCount; j++) {\n          offsets.push(file.getUint16());\n        }\n\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segment = segments[segIndex];\n          start = segment.start;\n          const end = segment.end;\n          const delta = segment.delta;\n          offsetIndex = segment.offsetIndex;\n\n          for (j = start; j <= end; j++) {\n            if (j === 0xffff) {\n              continue;\n            }\n\n            glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n            glyphId = (glyphId + delta) & 0xffff;\n            mappings.push({\n              charCode: j,\n              glyphId,\n            });\n          }\n        }\n      } else if (format === 6) {\n        // Format 6 is a 2-bytes dense mapping, which means the font data\n        // lives glue together even if they are pretty far in the unicode\n        // table. (This looks weird, so I can have missed something), this\n        // works on Linux but seems to fails on Mac so let's rewrite the\n        // cmap table to a 3-1-4 style\n        const firstCode = file.getUint16();\n        const entryCount = file.getUint16();\n\n        for (j = 0; j < entryCount; j++) {\n          glyphId = file.getUint16();\n          const charCode = firstCode + j;\n\n          mappings.push({\n            charCode,\n            glyphId,\n          });\n        }\n      } else {\n        warn(\"cmap table has unsupported format: \" + format);\n        return {\n          platformId: -1,\n          encodingId: -1,\n          mappings: [],\n          hasShortCmap: false,\n        };\n      }\n\n      // removing duplicate entries\n      mappings.sort(function (a, b) {\n        return a.charCode - b.charCode;\n      });\n      for (let i = 1; i < mappings.length; i++) {\n        if (mappings[i - 1].charCode === mappings[i].charCode) {\n          mappings.splice(i, 1);\n          i--;\n        }\n      }\n\n      return {\n        platformId: potentialTable.platformId,\n        encodingId: potentialTable.encodingId,\n        mappings,\n        hasShortCmap,\n      };\n    }\n\n    function sanitizeMetrics(\n      file,\n      header,\n      metrics,\n      headTable,\n      numGlyphs,\n      dupFirstEntry\n    ) {\n      if (!header) {\n        if (metrics) {\n          metrics.data = null;\n        }\n        return;\n      }\n\n      file.pos = (file.start ? file.start : 0) + header.offset;\n      file.pos += 4; // version\n      file.pos += 2; // ascent\n      file.pos += 2; // descent\n      file.pos += 2; // linegap\n      file.pos += 2; // adv_width_max\n      file.pos += 2; // min_sb1\n      file.pos += 2; // min_sb2\n      file.pos += 2; // max_extent\n      file.pos += 2; // caret_slope_rise\n      file.pos += 2; // caret_slope_run\n      const caretOffset = file.getUint16();\n      file.pos += 8; // reserved\n      file.pos += 2; // format\n      let numOfMetrics = file.getUint16();\n\n      if (caretOffset !== 0) {\n        const macStyle = int16(headTable.data[44], headTable.data[45]);\n        if (!(macStyle & 2)) {\n          // Suppress OTS warnings about the `caretOffset` in the hhea-table.\n          header.data[22] = 0;\n          header.data[23] = 0;\n        }\n      }\n\n      if (numOfMetrics > numGlyphs) {\n        info(\n          `The numOfMetrics (${numOfMetrics}) should not be ` +\n            `greater than the numGlyphs (${numGlyphs}).`\n        );\n        // Reduce numOfMetrics if it is greater than numGlyphs\n        numOfMetrics = numGlyphs;\n        header.data[34] = (numOfMetrics & 0xff00) >> 8;\n        header.data[35] = numOfMetrics & 0x00ff;\n      }\n\n      const numOfSidebearings = numGlyphs - numOfMetrics;\n      const numMissing =\n        numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\n\n      if (numMissing > 0) {\n        // For each missing glyph, we set both the width and lsb to 0 (zero).\n        // Since we need to add two properties for each glyph, this explains\n        // the use of |numMissing * 2| when initializing the typed array.\n        const entries = new Uint8Array(metrics.length + numMissing * 2);\n        entries.set(metrics.data);\n        if (dupFirstEntry) {\n          // Set the sidebearing value of the duplicated glyph.\n          entries[metrics.length] = metrics.data[2];\n          entries[metrics.length + 1] = metrics.data[3];\n        }\n        metrics.data = entries;\n      }\n    }\n\n    function sanitizeGlyph(\n      source,\n      sourceStart,\n      sourceEnd,\n      dest,\n      destStart,\n      hintsValid\n    ) {\n      const glyphProfile = {\n        length: 0,\n        sizeOfInstructions: 0,\n      };\n      if (sourceEnd - sourceStart <= 12) {\n        // glyph with data less than 12 is invalid one\n        return glyphProfile;\n      }\n      const glyf = source.subarray(sourceStart, sourceEnd);\n      let contoursCount = signedInt16(glyf[0], glyf[1]);\n      if (contoursCount < 0) {\n        // OTS doesn't like contour count to be less than -1.\n        contoursCount = -1;\n        writeSignedInt16(glyf, 0, contoursCount);\n        // complex glyph, writing as is\n        dest.set(glyf, destStart);\n        glyphProfile.length = glyf.length;\n        return glyphProfile;\n      }\n\n      let i,\n        j = 10,\n        flagsCount = 0;\n      for (i = 0; i < contoursCount; i++) {\n        const endPoint = (glyf[j] << 8) | glyf[j + 1];\n        flagsCount = endPoint + 1;\n        j += 2;\n      }\n      // skipping instructions\n      const instructionsStart = j;\n      const instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n      glyphProfile.sizeOfInstructions = instructionsLength;\n      j += 2 + instructionsLength;\n      const instructionsEnd = j;\n      // validating flags\n      let coordinatesLength = 0;\n      for (i = 0; i < flagsCount; i++) {\n        const flag = glyf[j++];\n        if (flag & 0xc0) {\n          // reserved flags must be zero, cleaning up\n          glyf[j - 1] = flag & 0x3f;\n        }\n        let xLength = 2;\n        if (flag & 2) {\n          xLength = 1;\n        } else if (flag & 16) {\n          xLength = 0;\n        }\n        let yLength = 2;\n        if (flag & 4) {\n          yLength = 1;\n        } else if (flag & 32) {\n          yLength = 0;\n        }\n        const xyLength = xLength + yLength;\n        coordinatesLength += xyLength;\n        if (flag & 8) {\n          const repeat = glyf[j++];\n          i += repeat;\n          coordinatesLength += repeat * xyLength;\n        }\n      }\n      // glyph without coordinates will be rejected\n      if (coordinatesLength === 0) {\n        return glyphProfile;\n      }\n      let glyphDataLength = j + coordinatesLength;\n      if (glyphDataLength > glyf.length) {\n        // not enough data for coordinates\n        return glyphProfile;\n      }\n      if (!hintsValid && instructionsLength > 0) {\n        dest.set(glyf.subarray(0, instructionsStart), destStart);\n        dest.set([0, 0], destStart + instructionsStart);\n        dest.set(\n          glyf.subarray(instructionsEnd, glyphDataLength),\n          destStart + instructionsStart + 2\n        );\n        glyphDataLength -= instructionsLength;\n        if (glyf.length - glyphDataLength > 3) {\n          glyphDataLength = (glyphDataLength + 3) & ~3;\n        }\n        glyphProfile.length = glyphDataLength;\n        return glyphProfile;\n      }\n      if (glyf.length - glyphDataLength > 3) {\n        // truncating and aligning to 4 bytes the long glyph data\n        glyphDataLength = (glyphDataLength + 3) & ~3;\n        dest.set(glyf.subarray(0, glyphDataLength), destStart);\n        glyphProfile.length = glyphDataLength;\n        return glyphProfile;\n      }\n      // glyph data is fine\n      dest.set(glyf, destStart);\n      glyphProfile.length = glyf.length;\n      return glyphProfile;\n    }\n\n    function sanitizeHead(head, numGlyphs, locaLength) {\n      const data = head.data;\n\n      // Validate version:\n      // Should always be 0x00010000\n      const version = int32(data[0], data[1], data[2], data[3]);\n      if (version >> 16 !== 1) {\n        info(\"Attempting to fix invalid version in head table: \" + version);\n        data[0] = 0;\n        data[1] = 1;\n        data[2] = 0;\n        data[3] = 0;\n      }\n\n      const indexToLocFormat = int16(data[50], data[51]);\n      if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n        info(\n          \"Attempting to fix invalid indexToLocFormat in head table: \" +\n            indexToLocFormat\n        );\n\n        // The value of indexToLocFormat should be 0 if the loca table\n        // consists of short offsets, and should be 1 if the loca table\n        // consists of long offsets.\n        //\n        // The number of entries in the loca table should be numGlyphs + 1.\n        //\n        // Using this information, we can work backwards to deduce if the\n        // size of each offset in the loca table, and thus figure out the\n        // appropriate value for indexToLocFormat.\n\n        const numGlyphsPlusOne = numGlyphs + 1;\n        if (locaLength === numGlyphsPlusOne << 1) {\n          // 0x0000 indicates the loca table consists of short offsets\n          data[50] = 0;\n          data[51] = 0;\n        } else if (locaLength === numGlyphsPlusOne << 2) {\n          // 0x0001 indicates the loca table consists of long offsets\n          data[50] = 0;\n          data[51] = 1;\n        } else {\n          throw new FormatError(\n            \"Could not fix indexToLocFormat: \" + indexToLocFormat\n          );\n        }\n      }\n    }\n\n    function sanitizeGlyphLocations(\n      loca,\n      glyf,\n      numGlyphs,\n      isGlyphLocationsLong,\n      hintsValid,\n      dupFirstEntry,\n      maxSizeOfInstructions\n    ) {\n      let itemSize, itemDecode, itemEncode;\n      if (isGlyphLocationsLong) {\n        itemSize = 4;\n        itemDecode = function fontItemDecodeLong(data, offset) {\n          return (\n            (data[offset] << 24) |\n            (data[offset + 1] << 16) |\n            (data[offset + 2] << 8) |\n            data[offset + 3]\n          );\n        };\n        itemEncode = function fontItemEncodeLong(data, offset, value) {\n          data[offset] = (value >>> 24) & 0xff;\n          data[offset + 1] = (value >> 16) & 0xff;\n          data[offset + 2] = (value >> 8) & 0xff;\n          data[offset + 3] = value & 0xff;\n        };\n      } else {\n        itemSize = 2;\n        itemDecode = function fontItemDecode(data, offset) {\n          return (data[offset] << 9) | (data[offset + 1] << 1);\n        };\n        itemEncode = function fontItemEncode(data, offset, value) {\n          data[offset] = (value >> 9) & 0xff;\n          data[offset + 1] = (value >> 1) & 0xff;\n        };\n      }\n      // The first glyph is duplicated.\n      const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n      const locaDataSize = itemSize * (1 + numGlyphsOut);\n      // Resize loca table to account for duplicated glyph.\n      const locaData = new Uint8Array(locaDataSize);\n      locaData.set(loca.data.subarray(0, locaDataSize));\n      loca.data = locaData;\n      // removing the invalid glyphs\n      const oldGlyfData = glyf.data;\n      const oldGlyfDataLength = oldGlyfData.length;\n      const newGlyfData = new Uint8Array(oldGlyfDataLength);\n\n      // The spec says the offsets should be in ascending order, however\n      // this is not true for some fonts or they use the offset of 0 to mark a\n      // glyph as missing. OTS requires the offsets to be in order and not to\n      // be zero, so we must sort and rebuild the loca table and potentially\n      // re-arrange the glyf data.\n      let i, j;\n      const locaEntries = [];\n      // There are numGlyphs + 1 loca table entries.\n      for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n        let offset = itemDecode(locaData, j);\n        if (offset > oldGlyfDataLength) {\n          offset = oldGlyfDataLength;\n        }\n        locaEntries.push({\n          index: i,\n          offset,\n          endOffset: 0,\n        });\n      }\n      locaEntries.sort((a, b) => {\n        return a.offset - b.offset;\n      });\n      // Now the offsets are sorted, calculate the end offset of each glyph.\n      // The last loca entry's endOffset is not calculated since it's the end\n      // of the data and will be stored on the previous entry's endOffset.\n      for (i = 0; i < numGlyphs; i++) {\n        locaEntries[i].endOffset = locaEntries[i + 1].offset;\n      }\n      // Re-sort so glyphs aren't out of order.\n      locaEntries.sort((a, b) => {\n        return a.index - b.index;\n      });\n\n      const missingGlyphs = Object.create(null);\n      let writeOffset = 0;\n      itemEncode(locaData, 0, writeOffset);\n      for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n        const glyphProfile = sanitizeGlyph(\n          oldGlyfData,\n          locaEntries[i].offset,\n          locaEntries[i].endOffset,\n          newGlyfData,\n          writeOffset,\n          hintsValid\n        );\n        const newLength = glyphProfile.length;\n        if (newLength === 0) {\n          missingGlyphs[i] = true;\n        }\n        if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n          maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n        }\n        writeOffset += newLength;\n        itemEncode(locaData, j, writeOffset);\n      }\n\n      if (writeOffset === 0) {\n        // glyf table cannot be empty -- redoing the glyf and loca tables\n        // to have single glyph with one point\n        const simpleGlyph = new Uint8Array([\n          0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0,\n        ]);\n        for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n          itemEncode(locaData, j, simpleGlyph.length);\n        }\n        glyf.data = simpleGlyph;\n      } else if (dupFirstEntry) {\n        // Browsers will not display a glyph at position 0. Typically glyph 0\n        // is notdef, but a number of fonts put a valid glyph there so it must\n        // be duplicated and appended.\n        const firstEntryLength = itemDecode(locaData, itemSize);\n        if (newGlyfData.length > firstEntryLength + writeOffset) {\n          glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n        } else {\n          glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n          glyf.data.set(newGlyfData.subarray(0, writeOffset));\n        }\n        glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n        itemEncode(\n          loca.data,\n          locaData.length - itemSize,\n          writeOffset + firstEntryLength\n        );\n      } else {\n        glyf.data = newGlyfData.subarray(0, writeOffset);\n      }\n      return {\n        missingGlyphs,\n        maxSizeOfInstructions,\n      };\n    }\n\n    function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n      const start = (font.start ? font.start : 0) + post.offset;\n      font.pos = start;\n\n      const length = post.length,\n        end = start + length;\n      const version = font.getInt32();\n      // skip rest to the tables\n      font.skip(28);\n\n      let glyphNames;\n      let valid = true;\n      let i;\n\n      switch (version) {\n        case 0x00010000:\n          glyphNames = MacStandardGlyphOrdering;\n          break;\n        case 0x00020000:\n          const numGlyphs = font.getUint16();\n          if (numGlyphs !== maxpNumGlyphs) {\n            valid = false;\n            break;\n          }\n          const glyphNameIndexes = [];\n          for (i = 0; i < numGlyphs; ++i) {\n            const index = font.getUint16();\n            if (index >= 32768) {\n              valid = false;\n              break;\n            }\n            glyphNameIndexes.push(index);\n          }\n          if (!valid) {\n            break;\n          }\n          const customNames = [],\n            strBuf = [];\n          while (font.pos < end) {\n            const stringLength = font.getByte();\n            strBuf.length = stringLength;\n            for (i = 0; i < stringLength; ++i) {\n              strBuf[i] = String.fromCharCode(font.getByte());\n            }\n            customNames.push(strBuf.join(\"\"));\n          }\n          glyphNames = [];\n          for (i = 0; i < numGlyphs; ++i) {\n            const j = glyphNameIndexes[i];\n            if (j < 258) {\n              glyphNames.push(MacStandardGlyphOrdering[j]);\n              continue;\n            }\n            glyphNames.push(customNames[j - 258]);\n          }\n          break;\n        case 0x00030000:\n          break;\n        default:\n          warn(\"Unknown/unsupported post table version \" + version);\n          valid = false;\n          if (propertiesObj.defaultEncoding) {\n            glyphNames = propertiesObj.defaultEncoding;\n          }\n          break;\n      }\n      propertiesObj.glyphNames = glyphNames;\n      return valid;\n    }\n\n    function readNameTable(nameTable) {\n      const start = (font.start ? font.start : 0) + nameTable.offset;\n      font.pos = start;\n\n      const names = [[], []];\n      const length = nameTable.length,\n        end = start + length;\n      const format = font.getUint16();\n      const FORMAT_0_HEADER_LENGTH = 6;\n      if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n        // unsupported name table format or table \"too\" small\n        return names;\n      }\n      const numRecords = font.getUint16();\n      const stringsStart = font.getUint16();\n      const records = [];\n      const NAME_RECORD_LENGTH = 12;\n      let i, ii;\n\n      for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n        const r = {\n          platform: font.getUint16(),\n          encoding: font.getUint16(),\n          language: font.getUint16(),\n          name: font.getUint16(),\n          length: font.getUint16(),\n          offset: font.getUint16(),\n        };\n        // using only Macintosh and Windows platform/encoding names\n        if (\n          (r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n          (r.platform === 3 && r.encoding === 1 && r.language === 0x409)\n        ) {\n          records.push(r);\n        }\n      }\n      for (i = 0, ii = records.length; i < ii; i++) {\n        const record = records[i];\n        if (record.length <= 0) {\n          continue; // Nothing to process, ignoring.\n        }\n        const pos = start + stringsStart + record.offset;\n        if (pos + record.length > end) {\n          continue; // outside of name table, ignoring\n        }\n        font.pos = pos;\n        const nameIndex = record.name;\n        if (record.encoding) {\n          // unicode\n          let str = \"\";\n          for (let j = 0, jj = record.length; j < jj; j += 2) {\n            str += String.fromCharCode(font.getUint16());\n          }\n          names[1][nameIndex] = str;\n        } else {\n          names[0][nameIndex] = font.getString(record.length);\n        }\n      }\n      return names;\n    }\n\n    // prettier-ignore\n    const TTOpsStackDeltas = [\n      0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n      -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n      1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n      0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n      0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n      -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n      -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n      -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n      -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n    // 0xC0-DF == -1 and 0xE0-FF == -2\n\n    function sanitizeTTProgram(table, ttContext) {\n      let data = table.data;\n      let i = 0,\n        j,\n        n,\n        b,\n        funcId,\n        pc,\n        lastEndf = 0,\n        lastDeff = 0;\n      const stack = [];\n      const callstack = [];\n      const functionsCalled = [];\n      let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n      let inFDEF = false,\n        ifLevel = 0,\n        inELSE = 0;\n      for (let ii = data.length; i < ii; ) {\n        const op = data[i++];\n        // The TrueType instruction set docs can be found at\n        // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n        if (op === 0x40) {\n          // NPUSHB - pushes n bytes\n          n = data[i++];\n          if (inFDEF || inELSE) {\n            i += n;\n          } else {\n            for (j = 0; j < n; j++) {\n              stack.push(data[i++]);\n            }\n          }\n        } else if (op === 0x41) {\n          // NPUSHW - pushes n words\n          n = data[i++];\n          if (inFDEF || inELSE) {\n            i += n * 2;\n          } else {\n            for (j = 0; j < n; j++) {\n              b = data[i++];\n              stack.push((b << 8) | data[i++]);\n            }\n          }\n        } else if ((op & 0xf8) === 0xb0) {\n          // PUSHB - pushes bytes\n          n = op - 0xb0 + 1;\n          if (inFDEF || inELSE) {\n            i += n;\n          } else {\n            for (j = 0; j < n; j++) {\n              stack.push(data[i++]);\n            }\n          }\n        } else if ((op & 0xf8) === 0xb8) {\n          // PUSHW - pushes words\n          n = op - 0xb8 + 1;\n          if (inFDEF || inELSE) {\n            i += n * 2;\n          } else {\n            for (j = 0; j < n; j++) {\n              b = data[i++];\n              stack.push((b << 8) | data[i++]);\n            }\n          }\n        } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n          // CALL\n          if (!inFDEF && !inELSE) {\n            // collecting information about which functions are used\n            funcId = stack[stack.length - 1];\n            if (isNaN(funcId)) {\n              info(\"TT: CALL empty stack (or invalid entry).\");\n            } else {\n              ttContext.functionsUsed[funcId] = true;\n              if (funcId in ttContext.functionsStackDeltas) {\n                const newStackLength =\n                  stack.length + ttContext.functionsStackDeltas[funcId];\n                if (newStackLength < 0) {\n                  warn(\"TT: CALL invalid functions stack delta.\");\n                  ttContext.hintsValid = false;\n                  return;\n                }\n                stack.length = newStackLength;\n              } else if (\n                funcId in ttContext.functionsDefined &&\n                !functionsCalled.includes(funcId)\n              ) {\n                callstack.push({ data, i, stackTop: stack.length - 1 });\n                functionsCalled.push(funcId);\n                pc = ttContext.functionsDefined[funcId];\n                if (!pc) {\n                  warn(\"TT: CALL non-existent function\");\n                  ttContext.hintsValid = false;\n                  return;\n                }\n                data = pc.data;\n                i = pc.i;\n              }\n            }\n          }\n        } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n          // FDEF\n          if (inFDEF || inELSE) {\n            warn(\"TT: nested FDEFs not allowed\");\n            tooComplexToFollowFunctions = true;\n          }\n          inFDEF = true;\n          // collecting information about which functions are defined\n          lastDeff = i;\n          funcId = stack.pop();\n          ttContext.functionsDefined[funcId] = { data, i };\n        } else if (op === 0x2d) {\n          // ENDF - end of function\n          if (inFDEF) {\n            inFDEF = false;\n            lastEndf = i;\n          } else {\n            pc = callstack.pop();\n            if (!pc) {\n              warn(\"TT: ENDF bad stack\");\n              ttContext.hintsValid = false;\n              return;\n            }\n            funcId = functionsCalled.pop();\n            data = pc.data;\n            i = pc.i;\n            ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n          }\n        } else if (op === 0x89) {\n          // IDEF - instruction definition\n          if (inFDEF || inELSE) {\n            warn(\"TT: nested IDEFs not allowed\");\n            tooComplexToFollowFunctions = true;\n          }\n          inFDEF = true;\n          // recording it as a function to track ENDF\n          lastDeff = i;\n        } else if (op === 0x58) {\n          // IF\n          ++ifLevel;\n        } else if (op === 0x1b) {\n          // ELSE\n          inELSE = ifLevel;\n        } else if (op === 0x59) {\n          // EIF\n          if (inELSE === ifLevel) {\n            inELSE = 0;\n          }\n          --ifLevel;\n        } else if (op === 0x1c) {\n          // JMPR\n          if (!inFDEF && !inELSE) {\n            const offset = stack[stack.length - 1];\n            // only jumping forward to prevent infinite loop\n            if (offset > 0) {\n              i += offset - 1;\n            }\n          }\n        }\n        // Adjusting stack not extactly, but just enough to get function id\n        if (!inFDEF && !inELSE) {\n          let stackDelta = 0;\n          if (op <= 0x8e) {\n            stackDelta = TTOpsStackDeltas[op];\n          } else if (op >= 0xc0 && op <= 0xdf) {\n            stackDelta = -1;\n          } else if (op >= 0xe0) {\n            stackDelta = -2;\n          }\n          if (op >= 0x71 && op <= 0x75) {\n            n = stack.pop();\n            if (!isNaN(n)) {\n              stackDelta = -n * 2;\n            }\n          }\n          while (stackDelta < 0 && stack.length > 0) {\n            stack.pop();\n            stackDelta++;\n          }\n          while (stackDelta > 0) {\n            stack.push(NaN); // pushing any number into stack\n            stackDelta--;\n          }\n        }\n      }\n      ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n      const content = [data];\n      if (i > data.length) {\n        content.push(new Uint8Array(i - data.length));\n      }\n      if (lastDeff > lastEndf) {\n        warn(\"TT: complementing a missing function tail\");\n        // new function definition started, but not finished\n        // complete function by [CLEAR, ENDF]\n        content.push(new Uint8Array([0x22, 0x2d]));\n      }\n      foldTTTable(table, content);\n    }\n\n    function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n      if (ttContext.tooComplexToFollowFunctions) {\n        return;\n      }\n      if (ttContext.functionsDefined.length > maxFunctionDefs) {\n        warn(\"TT: more functions defined than expected\");\n        ttContext.hintsValid = false;\n        return;\n      }\n      for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n        if (j > maxFunctionDefs) {\n          warn(\"TT: invalid function id: \" + j);\n          ttContext.hintsValid = false;\n          return;\n        }\n        if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n          warn(\"TT: undefined function: \" + j);\n          ttContext.hintsValid = false;\n          return;\n        }\n      }\n    }\n\n    function foldTTTable(table, content) {\n      if (content.length > 1) {\n        // concatenating the content items\n        let newLength = 0;\n        let j, jj;\n        for (j = 0, jj = content.length; j < jj; j++) {\n          newLength += content[j].length;\n        }\n        newLength = (newLength + 3) & ~3;\n        const result = new Uint8Array(newLength);\n        let pos = 0;\n        for (j = 0, jj = content.length; j < jj; j++) {\n          result.set(content[j], pos);\n          pos += content[j].length;\n        }\n        table.data = result;\n        table.length = newLength;\n      }\n    }\n\n    function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n      const ttContext = {\n        functionsDefined: [],\n        functionsUsed: [],\n        functionsStackDeltas: [],\n        tooComplexToFollowFunctions: false,\n        hintsValid: true,\n      };\n      if (fpgm) {\n        sanitizeTTProgram(fpgm, ttContext);\n      }\n      if (prep) {\n        sanitizeTTProgram(prep, ttContext);\n      }\n      if (fpgm) {\n        checkInvalidFunctions(ttContext, maxFunctionDefs);\n      }\n      if (cvt && cvt.length & 1) {\n        const cvtData = new Uint8Array(cvt.length + 1);\n        cvtData.set(cvt.data);\n        cvt.data = cvtData;\n      }\n      return ttContext.hintsValid;\n    }\n\n    // The following steps modify the original font data, making copy\n    font = new Stream(new Uint8Array(font.getBytes()));\n\n    let header, tables;\n    if (isTrueTypeCollectionFile(font)) {\n      const ttcData = readTrueTypeCollectionData(font, this.name);\n      header = ttcData.header;\n      tables = ttcData.tables;\n    } else {\n      header = readOpenTypeHeader(font);\n      tables = readTables(font, header.numTables);\n    }\n    let cff, cffFile;\n\n    const isTrueType = !tables[\"CFF \"];\n    if (!isTrueType) {\n      const isComposite =\n        properties.composite &&\n        ((properties.cidToGidMap || []).length > 0 ||\n          !(properties.cMap instanceof IdentityCMap));\n      // OpenType font (skip composite fonts with non-default glyph mapping).\n      if (\n        (header.version === \"OTTO\" && !isComposite) ||\n        !tables.head ||\n        !tables.hhea ||\n        !tables.maxp ||\n        !tables.post\n      ) {\n        // No major tables: throwing everything at `CFFFont`.\n        cffFile = new Stream(tables[\"CFF \"].data);\n        cff = new CFFFont(cffFile, properties);\n\n        adjustWidths(properties);\n\n        return this.convert(name, cff, properties);\n      }\n\n      delete tables.glyf;\n      delete tables.loca;\n      delete tables.fpgm;\n      delete tables.prep;\n      delete tables[\"cvt \"];\n      this.isOpenType = true;\n    } else {\n      if (!tables.loca) {\n        throw new FormatError('Required \"loca\" table is not found');\n      }\n      if (!tables.glyf) {\n        warn('Required \"glyf\" table is not found -- trying to recover.');\n        // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n        tables.glyf = {\n          tag: \"glyf\",\n          data: new Uint8Array(0),\n        };\n      }\n      this.isOpenType = false;\n    }\n\n    if (!tables.maxp) {\n      throw new FormatError('Required \"maxp\" table is not found');\n    }\n\n    font.pos = (font.start || 0) + tables.maxp.offset;\n    const version = font.getInt32();\n    const numGlyphs = font.getUint16();\n\n    if (\n      properties.scaleFactors &&\n      properties.scaleFactors.length === numGlyphs &&\n      isTrueType\n    ) {\n      const { scaleFactors } = properties;\n      const isGlyphLocationsLong = int16(\n        tables.head.data[50],\n        tables.head.data[51]\n      );\n\n      const glyphs = new GlyfTable({\n        glyfTable: tables.glyf.data,\n        isGlyphLocationsLong,\n        locaTable: tables.loca.data,\n        numGlyphs,\n      });\n      glyphs.scale(scaleFactors);\n\n      const { glyf, loca, isLocationLong } = glyphs.write();\n      tables.glyf.data = glyf;\n      tables.loca.data = loca;\n\n      if (isLocationLong !== !!isGlyphLocationsLong) {\n        tables.head.data[50] = 0;\n        tables.head.data[51] = isLocationLong ? 1 : 0;\n      }\n\n      const metrics = tables.hmtx.data;\n\n      for (let i = 0; i < numGlyphs; i++) {\n        const j = 4 * i;\n        const advanceWidth = Math.round(\n          scaleFactors[i] * int16(metrics[j], metrics[j + 1])\n        );\n        metrics[j] = (advanceWidth >> 8) & 0xff;\n        metrics[j + 1] = advanceWidth & 0xff;\n        const lsb = Math.round(\n          scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])\n        );\n        writeSignedInt16(metrics, j + 2, lsb);\n      }\n    }\n\n    // Glyph 0 is duplicated and appended.\n    let numGlyphsOut = numGlyphs + 1;\n    let dupFirstEntry = true;\n    if (numGlyphsOut > 0xffff) {\n      dupFirstEntry = false;\n      numGlyphsOut = numGlyphs;\n      warn(\"Not enough space in glyfs to duplicate first glyph.\");\n    }\n    let maxFunctionDefs = 0;\n    let maxSizeOfInstructions = 0;\n    if (version >= 0x00010000 && tables.maxp.length >= 22) {\n      // maxZones can be invalid\n      font.pos += 8;\n      const maxZones = font.getUint16();\n      if (maxZones > 2) {\n        // reset to 2 if font has invalid maxZones\n        tables.maxp.data[14] = 0;\n        tables.maxp.data[15] = 2;\n      }\n      font.pos += 4;\n      maxFunctionDefs = font.getUint16();\n      font.pos += 4;\n      maxSizeOfInstructions = font.getUint16();\n    }\n\n    tables.maxp.data[4] = numGlyphsOut >> 8;\n    tables.maxp.data[5] = numGlyphsOut & 255;\n\n    const hintsValid = sanitizeTTPrograms(\n      tables.fpgm,\n      tables.prep,\n      tables[\"cvt \"],\n      maxFunctionDefs\n    );\n    if (!hintsValid) {\n      delete tables.fpgm;\n      delete tables.prep;\n      delete tables[\"cvt \"];\n    }\n\n    // Ensure the hmtx table contains the advance width and\n    // sidebearings information for numGlyphs in the maxp table\n    sanitizeMetrics(\n      font,\n      tables.hhea,\n      tables.hmtx,\n      tables.head,\n      numGlyphsOut,\n      dupFirstEntry\n    );\n\n    if (!tables.head) {\n      throw new FormatError('Required \"head\" table is not found');\n    }\n\n    sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n\n    let missingGlyphs = Object.create(null);\n    if (isTrueType) {\n      const isGlyphLocationsLong = int16(\n        tables.head.data[50],\n        tables.head.data[51]\n      );\n      const glyphsInfo = sanitizeGlyphLocations(\n        tables.loca,\n        tables.glyf,\n        numGlyphs,\n        isGlyphLocationsLong,\n        hintsValid,\n        dupFirstEntry,\n        maxSizeOfInstructions\n      );\n      missingGlyphs = glyphsInfo.missingGlyphs;\n\n      // Some fonts have incorrect maxSizeOfInstructions values, so we use\n      // the computed value instead.\n      if (version >= 0x00010000 && tables.maxp.length >= 22) {\n        tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n        tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n      }\n    }\n    if (!tables.hhea) {\n      throw new FormatError('Required \"hhea\" table is not found');\n    }\n\n    // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n    // Sometimes it's 0. That needs to be fixed\n    if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n      tables.hhea.data[10] = 0xff;\n      tables.hhea.data[11] = 0xff;\n    }\n\n    // Extract some more font properties from the OpenType head and\n    // hhea tables; yMin and descent value are always negative.\n    const metricsOverride = {\n      unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n      yMax: int16(tables.head.data[42], tables.head.data[43]),\n      yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n      ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n      descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n      lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]),\n    };\n\n    // PDF FontDescriptor metrics lie -- using data from actual font.\n    this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n    this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n    this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n\n    if (this.cssFontInfo && this.cssFontInfo.lineHeight) {\n      this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n      this.lineGap = this.cssFontInfo.metrics.lineGap;\n    } else {\n      this.lineHeight = this.ascent - this.descent + this.lineGap;\n    }\n\n    // The 'post' table has glyphs names.\n    if (tables.post) {\n      readPostScriptTable(tables.post, properties, numGlyphs);\n    }\n\n    // The original 'post' table is not needed, replace it.\n    tables.post = {\n      tag: \"post\",\n      data: createPostTable(properties),\n    };\n\n    const charCodeToGlyphId = [];\n\n    // Helper function to try to skip mapping of empty glyphs.\n    function hasGlyph(glyphId) {\n      return !missingGlyphs[glyphId];\n    }\n\n    if (properties.composite) {\n      const cidToGidMap = properties.cidToGidMap || [];\n      const isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n      properties.cMap.forEach(function (charCode, cid) {\n        if (typeof cid === \"string\") {\n          cid = convertCidString(charCode, cid, /* shouldThrow = */ true);\n        }\n        if (cid > 0xffff) {\n          throw new FormatError(\"Max size of CID is 65,535\");\n        }\n        let glyphId = -1;\n        if (isCidToGidMapEmpty) {\n          glyphId = cid;\n        } else if (cidToGidMap[cid] !== undefined) {\n          glyphId = cidToGidMap[cid];\n        }\n\n        if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n          charCodeToGlyphId[charCode] = glyphId;\n        }\n      });\n    } else {\n      // Most of the following logic in this code branch is based on the\n      // 9.6.6.4 of the PDF spec.\n      const cmapTable = readCmapTable(\n        tables.cmap,\n        font,\n        this.isSymbolicFont,\n        properties.hasEncoding\n      );\n      const cmapPlatformId = cmapTable.platformId;\n      const cmapEncodingId = cmapTable.encodingId;\n      const cmapMappings = cmapTable.mappings;\n      const cmapMappingsLength = cmapMappings.length;\n      let baseEncoding = [],\n        forcePostTable = false;\n      if (\n        properties.hasEncoding &&\n        (properties.baseEncodingName === \"MacRomanEncoding\" ||\n          properties.baseEncodingName === \"WinAnsiEncoding\")\n      ) {\n        baseEncoding = getEncoding(properties.baseEncodingName);\n      }\n\n      // If the font has an encoding and is not symbolic then follow the rules\n      // in section 9.6.6.4 of the spec on how to map 3,1 and 1,0 cmaps.\n      if (\n        properties.hasEncoding &&\n        !this.isSymbolicFont &&\n        ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n          (cmapPlatformId === 1 && cmapEncodingId === 0))\n      ) {\n        const glyphsUnicodeMap = getGlyphsUnicode();\n        for (let charCode = 0; charCode < 256; charCode++) {\n          let glyphName;\n          if (this.differences[charCode] !== undefined) {\n            glyphName = this.differences[charCode];\n          } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\n            glyphName = baseEncoding[charCode];\n          } else {\n            glyphName = StandardEncoding[charCode];\n          }\n          if (!glyphName) {\n            continue;\n          }\n          // Ensure that non-standard glyph names are resolved to valid ones.\n          const standardGlyphName = recoverGlyphName(\n            glyphName,\n            glyphsUnicodeMap\n          );\n\n          let unicodeOrCharCode;\n          if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n            unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n          } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n            // TODO: the encoding needs to be updated with mac os table.\n            unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n          }\n\n          if (unicodeOrCharCode === undefined) {\n            // Not a valid glyph name, fallback to using the /ToUnicode map\n            // when no post-table exists (fixes issue13316_reduced.pdf).\n            if (\n              !properties.glyphNames &&\n              properties.hasIncludedToUnicodeMap &&\n              !(this.toUnicode instanceof IdentityToUnicodeMap)\n            ) {\n              const unicode = this.toUnicode.get(charCode);\n              if (unicode) {\n                unicodeOrCharCode = unicode.codePointAt(0);\n              }\n            }\n\n            if (unicodeOrCharCode === undefined) {\n              continue; // No valid glyph mapping found.\n            }\n          }\n\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n              continue;\n            }\n            charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n            break;\n          }\n        }\n      } else if (cmapPlatformId === 0) {\n        // Default Unicode semantics, use the charcodes as is.\n        for (let i = 0; i < cmapMappingsLength; ++i) {\n          charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId;\n        }\n        // Always prefer the BaseEncoding/Differences arrays, when they exist\n        // (fixes issue13433.pdf).\n        forcePostTable = true;\n      } else {\n        // When there is only a (1, 0) cmap table, the char code is a single\n        // byte and it is used directly as the char code.\n\n        // When a (3, 0) cmap table is present, it is used instead but the\n        // spec has special rules for char codes in the range of 0xF000 to\n        // 0xF0FF and it says the (3, 0) table should map the values from\n        // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n        // this, the upper bits of the char code are cleared, but only for the\n        // special range since some PDFs have char codes outside of this range\n        // (e.g. 0x2013) which when masked would overwrite other values in the\n        // cmap.\n        for (let i = 0; i < cmapMappingsLength; ++i) {\n          let charCode = cmapMappings[i].charCode;\n          if (\n            cmapPlatformId === 3 &&\n            charCode >= 0xf000 &&\n            charCode <= 0xf0ff\n          ) {\n            charCode &= 0xff;\n          }\n          charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n        }\n      }\n\n      // Last, try to map any missing charcodes using the post table.\n      if (\n        properties.glyphNames &&\n        (baseEncoding.length || this.differences.length)\n      ) {\n        for (let i = 0; i < 256; ++i) {\n          if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n            continue;\n          }\n          const glyphName = this.differences[i] || baseEncoding[i];\n          if (!glyphName) {\n            continue;\n          }\n          const glyphId = properties.glyphNames.indexOf(glyphName);\n          if (glyphId > 0 && hasGlyph(glyphId)) {\n            charCodeToGlyphId[i] = glyphId;\n          }\n        }\n      }\n    }\n\n    if (charCodeToGlyphId.length === 0) {\n      // defines at least one glyph\n      charCodeToGlyphId[0] = 0;\n    }\n\n    // Typically glyph 0 is duplicated and the mapping must be updated, but if\n    // there isn't enough room to duplicate, the glyph id is left the same. In\n    // this case, glyph 0 may not work correctly, but that is better than\n    // having the whole font fail.\n    let glyphZeroId = numGlyphsOut - 1;\n    if (!dupFirstEntry) {\n      glyphZeroId = 0;\n    }\n\n    // When `cssFontInfo` is set, the font is used to render text in the HTML\n    // view (e.g. with Xfa) so nothing must be moved in the private use area.\n    if (!properties.cssFontInfo) {\n      // Converting glyphs and ids into font's cmap table\n      const newMapping = adjustMapping(\n        charCodeToGlyphId,\n        hasGlyph,\n        glyphZeroId\n      );\n      this.toFontChar = newMapping.toFontChar;\n      tables.cmap = {\n        tag: \"cmap\",\n        data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut),\n      };\n\n      if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n        tables[\"OS/2\"] = {\n          tag: \"OS/2\",\n          data: createOS2Table(\n            properties,\n            newMapping.charCodeToGlyphId,\n            metricsOverride\n          ),\n        };\n      }\n    }\n\n    if (!isTrueType) {\n      try {\n        // Trying to repair CFF file\n        cffFile = new Stream(tables[\"CFF \"].data);\n        const parser = new CFFParser(\n          cffFile,\n          properties,\n          SEAC_ANALYSIS_ENABLED\n        );\n        cff = parser.parse();\n        cff.duplicateFirstGlyph();\n        const compiler = new CFFCompiler(cff);\n        tables[\"CFF \"].data = compiler.compile();\n      } catch (e) {\n        warn(\"Failed to compile font \" + properties.loadedName);\n      }\n    }\n\n    // Re-creating 'name' table\n    if (!tables.name) {\n      tables.name = {\n        tag: \"name\",\n        data: createNameTable(this.name),\n      };\n    } else {\n      // ... using existing 'name' table as prototype\n      const namePrototype = readNameTable(tables.name);\n      tables.name.data = createNameTable(name, namePrototype);\n      this.psName = namePrototype[0][6] || null;\n    }\n\n    const builder = new OpenTypeFileBuilder(header.version);\n    for (const tableTag in tables) {\n      builder.addTable(tableTag, tables[tableTag].data);\n    }\n    return builder.toArray();\n  }\n\n  convert(fontName, font, properties) {\n    // TODO: Check the charstring widths to determine this.\n    properties.fixedPitch = false;\n\n    if (properties.builtInEncoding) {\n      // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n      // data, attempt to use the `builtInEncoding` to improve text selection.\n      adjustToUnicode(properties, properties.builtInEncoding);\n    }\n\n    // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n    // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n    // char strings.\n    let glyphZeroId = 1;\n    if (font instanceof CFFFont) {\n      glyphZeroId = font.numGlyphs - 1;\n    }\n    const mapping = font.getGlyphMapping(properties);\n    let newMapping = null;\n    let newCharCodeToGlyphId = mapping;\n\n    // When `cssFontInfo` is set, the font is used to render text in the HTML\n    // view (e.g. with Xfa) so nothing must be moved in the private use area.\n    if (!properties.cssFontInfo) {\n      newMapping = adjustMapping(\n        mapping,\n        font.hasGlyphId.bind(font),\n        glyphZeroId\n      );\n      this.toFontChar = newMapping.toFontChar;\n      newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n    }\n    const numGlyphs = font.numGlyphs;\n\n    function getCharCodes(charCodeToGlyphId, glyphId) {\n      let charCodes = null;\n      for (const charCode in charCodeToGlyphId) {\n        if (glyphId === charCodeToGlyphId[charCode]) {\n          if (!charCodes) {\n            charCodes = [];\n          }\n          charCodes.push(charCode | 0);\n        }\n      }\n      return charCodes;\n    }\n\n    function createCharCode(charCodeToGlyphId, glyphId) {\n      for (const charCode in charCodeToGlyphId) {\n        if (glyphId === charCodeToGlyphId[charCode]) {\n          return charCode | 0;\n        }\n      }\n      newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\n        glyphId;\n      return newMapping.nextAvailableFontCharCode++;\n    }\n\n    const seacs = font.seacs;\n    if (newMapping && SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n      const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n      const charset = font.getCharset();\n      const seacMap = Object.create(null);\n      for (let glyphId in seacs) {\n        glyphId |= 0;\n        const seac = seacs[glyphId];\n        const baseGlyphName = StandardEncoding[seac[2]];\n        const accentGlyphName = StandardEncoding[seac[3]];\n        const baseGlyphId = charset.indexOf(baseGlyphName);\n        const accentGlyphId = charset.indexOf(accentGlyphName);\n        if (baseGlyphId < 0 || accentGlyphId < 0) {\n          continue;\n        }\n        const accentOffset = {\n          x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n          y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n        };\n\n        const charCodes = getCharCodes(mapping, glyphId);\n        if (!charCodes) {\n          // There's no point in mapping it if the char code was never mapped\n          // to begin with.\n          continue;\n        }\n        for (let i = 0, ii = charCodes.length; i < ii; i++) {\n          const charCode = charCodes[i];\n          // Find a fontCharCode that maps to the base and accent glyphs.\n          // If one doesn't exists, create it.\n          const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n          const baseFontCharCode = createCharCode(\n            charCodeToGlyphId,\n            baseGlyphId\n          );\n          const accentFontCharCode = createCharCode(\n            charCodeToGlyphId,\n            accentGlyphId\n          );\n          seacMap[charCode] = {\n            baseFontCharCode,\n            accentFontCharCode,\n            accentOffset,\n          };\n        }\n      }\n      properties.seacMap = seacMap;\n    }\n\n    const unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n    const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n    // PostScript Font Program\n    builder.addTable(\"CFF \", font.data);\n    // OS/2 and Windows Specific metrics\n    builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n    // Character to glyphs mapping\n    builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, numGlyphs));\n    // Font header\n    builder.addTable(\n      \"head\",\n      \"\\x00\\x01\\x00\\x00\" + // Version number\n        \"\\x00\\x00\\x10\\x00\" + // fontRevision\n        \"\\x00\\x00\\x00\\x00\" + // checksumAdjustement\n        \"\\x5F\\x0F\\x3C\\xF5\" + // magicNumber\n        \"\\x00\\x00\" + // Flags\n        safeString16(unitsPerEm) + // unitsPerEM\n        \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // creation date\n        \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // modifification date\n        \"\\x00\\x00\" + // xMin\n        safeString16(properties.descent) + // yMin\n        \"\\x0F\\xFF\" + // xMax\n        safeString16(properties.ascent) + // yMax\n        string16(properties.italicAngle ? 2 : 0) + // macStyle\n        \"\\x00\\x11\" + // lowestRecPPEM\n        \"\\x00\\x00\" + // fontDirectionHint\n        \"\\x00\\x00\" + // indexToLocFormat\n        \"\\x00\\x00\"\n    ); // glyphDataFormat\n\n    // Horizontal header\n    builder.addTable(\n      \"hhea\",\n      \"\\x00\\x01\\x00\\x00\" + // Version number\n        safeString16(properties.ascent) + // Typographic Ascent\n        safeString16(properties.descent) + // Typographic Descent\n        \"\\x00\\x00\" + // Line Gap\n        \"\\xFF\\xFF\" + // advanceWidthMax\n        \"\\x00\\x00\" + // minLeftSidebearing\n        \"\\x00\\x00\" + // minRightSidebearing\n        \"\\x00\\x00\" + // xMaxExtent\n        safeString16(properties.capHeight) + // caretSlopeRise\n        safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + // caretSlopeRun\n        \"\\x00\\x00\" + // caretOffset\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // metricDataFormat\n        string16(numGlyphs)\n    ); // Number of HMetrics\n\n    // Horizontal metrics\n    builder.addTable(\n      \"hmtx\",\n      (function fontFieldsHmtx() {\n        const charstrings = font.charstrings;\n        const cffWidths = font.cff ? font.cff.widths : null;\n        let hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n        for (let i = 1, ii = numGlyphs; i < ii; i++) {\n          let width = 0;\n          if (charstrings) {\n            const charstring = charstrings[i - 1];\n            width = \"width\" in charstring ? charstring.width : 0;\n          } else if (cffWidths) {\n            width = Math.ceil(cffWidths[i] || 0);\n          }\n          hmtx += string16(width) + string16(0);\n        }\n        return hmtx;\n      })()\n    );\n\n    // Maximum profile\n    builder.addTable(\n      \"maxp\",\n      \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs) // Version number\n    ); // Num of glyphs\n\n    // Naming tables\n    builder.addTable(\"name\", createNameTable(fontName));\n\n    // PostScript information\n    builder.addTable(\"post\", createPostTable(properties));\n\n    return builder.toArray();\n  }\n\n  get spaceWidth() {\n    // trying to estimate space character width\n    const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n    let width;\n    for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n      const glyphName = possibleSpaceReplacements[i];\n      // if possible, getting width by glyph name\n      if (glyphName in this.widths) {\n        width = this.widths[glyphName];\n        break;\n      }\n      const glyphsUnicodeMap = getGlyphsUnicode();\n      const glyphUnicode = glyphsUnicodeMap[glyphName];\n      // finding the charcode via unicodeToCID map\n      let charcode = 0;\n      if (this.composite && this.cMap.contains(glyphUnicode)) {\n        charcode = this.cMap.lookup(glyphUnicode);\n\n        if (typeof charcode === \"string\") {\n          charcode = convertCidString(glyphUnicode, charcode);\n        }\n      }\n      // ... via toUnicode map\n      if (!charcode && this.toUnicode) {\n        charcode = this.toUnicode.charCodeOf(glyphUnicode);\n      }\n      // setting it to unicode if negative or undefined\n      if (charcode <= 0) {\n        charcode = glyphUnicode;\n      }\n      // trying to get width via charcode\n      width = this.widths[charcode];\n      if (width) {\n        break; // the non-zero width found\n      }\n    }\n    width = width || this.defaultWidth;\n    return shadow(this, \"spaceWidth\", width);\n  }\n\n  /**\n   * @private\n   */\n  _charToGlyph(charcode, isSpace = false) {\n    let fontCharCode, width, operatorListId;\n\n    let widthCode = charcode;\n    if (this.cMap && this.cMap.contains(charcode)) {\n      widthCode = this.cMap.lookup(charcode);\n\n      if (typeof widthCode === \"string\") {\n        widthCode = convertCidString(charcode, widthCode);\n      }\n    }\n    width = this.widths[widthCode];\n    if (typeof width !== \"number\") {\n      width = this.defaultWidth;\n    }\n    const vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n    let unicode = this.toUnicode.get(charcode) || charcode;\n    if (typeof unicode === \"number\") {\n      unicode = String.fromCharCode(unicode);\n    }\n\n    let isInFont = this.toFontChar[charcode] !== undefined;\n    // First try the toFontChar map, if it's not there then try falling\n    // back to the char code.\n    fontCharCode = this.toFontChar[charcode] || charcode;\n    if (this.missingFile) {\n      const glyphName =\n        this.differences[charcode] || this.defaultEncoding[charcode];\n      if (\n        (glyphName === \".notdef\" || glyphName === \"\") &&\n        this.type === \"Type1\"\n      ) {\n        // .notdef glyphs should be invisible in non-embedded Type1 fonts, so\n        // replace them with spaces.\n        fontCharCode = 0x20;\n      }\n      fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n    }\n\n    if (this.isType3Font) {\n      // Font char code in this case is actually a glyph name.\n      operatorListId = fontCharCode;\n    }\n\n    let accent = null;\n    if (this.seacMap && this.seacMap[charcode]) {\n      isInFont = true;\n      const seac = this.seacMap[charcode];\n      fontCharCode = seac.baseFontCharCode;\n      accent = {\n        fontChar: String.fromCodePoint(seac.accentFontCharCode),\n        offset: seac.accentOffset,\n      };\n    }\n\n    let fontChar = \"\";\n    if (typeof fontCharCode === \"number\") {\n      if (fontCharCode <= 0x10ffff) {\n        fontChar = String.fromCodePoint(fontCharCode);\n      } else {\n        warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n      }\n    }\n\n    let glyph = this._glyphCache[charcode];\n    if (\n      !glyph ||\n      !glyph.matchesForCache(\n        charcode,\n        fontChar,\n        unicode,\n        accent,\n        width,\n        vmetric,\n        operatorListId,\n        isSpace,\n        isInFont\n      )\n    ) {\n      glyph = new Glyph(\n        charcode,\n        fontChar,\n        unicode,\n        accent,\n        width,\n        vmetric,\n        operatorListId,\n        isSpace,\n        isInFont\n      );\n      this._glyphCache[charcode] = glyph;\n    }\n    return glyph;\n  }\n\n  charsToGlyphs(chars) {\n    // If we translated this string before, just grab it from the cache.\n    let glyphs = this._charsCache[chars];\n    if (glyphs) {\n      return glyphs;\n    }\n    glyphs = [];\n\n    if (this.cMap) {\n      // Composite fonts have multi-byte strings, convert the string from\n      // single-byte to multi-byte.\n      const c = Object.create(null),\n        ii = chars.length;\n      let i = 0;\n      while (i < ii) {\n        this.cMap.readCharCode(chars, i, c);\n        const { charcode, length } = c;\n        i += length;\n        // Space is char with code 0x20 and length 1 in multiple-byte codes.\n        const glyph = this._charToGlyph(\n          charcode,\n          length === 1 && chars.charCodeAt(i - 1) === 0x20\n        );\n        glyphs.push(glyph);\n      }\n    } else {\n      for (let i = 0, ii = chars.length; i < ii; ++i) {\n        const charcode = chars.charCodeAt(i);\n        const glyph = this._charToGlyph(charcode, charcode === 0x20);\n        glyphs.push(glyph);\n      }\n    }\n\n    // Enter the translated string into the cache.\n    return (this._charsCache[chars] = glyphs);\n  }\n\n  /**\n   * Chars can have different sizes (depends on the encoding).\n   * @param {String} a string encoded with font encoding.\n   * @returns {Array<Array<number>>} the positions of each char in the string.\n   */\n  getCharPositions(chars) {\n    // This function doesn't use a cache because\n    // it's called only when saving or printing.\n    const positions = [];\n\n    if (this.cMap) {\n      const c = Object.create(null);\n      let i = 0;\n      while (i < chars.length) {\n        this.cMap.readCharCode(chars, i, c);\n        const length = c.length;\n        positions.push([i, i + length]);\n        i += length;\n      }\n    } else {\n      for (let i = 0, ii = chars.length; i < ii; ++i) {\n        positions.push([i, i + 1]);\n      }\n    }\n\n    return positions;\n  }\n\n  get glyphCacheValues() {\n    return Object.values(this._glyphCache);\n  }\n\n  /**\n   * Encode a js string using font encoding.\n   * The resulting array contains an encoded string at even positions\n   * (can be empty) and a non-encoded one at odd positions.\n   * @param {String} a js string.\n   * @returns {Array<String>} an array of encoded strings or non-encoded ones.\n   */\n  encodeString(str) {\n    const buffers = [];\n    const currentBuf = [];\n\n    // buffers will contain: encoded, non-encoded, encoded, ...\n    // currentBuf is pushed in buffers each time there is a change.\n    // So when buffers.length is odd then the last string is an encoded one\n    // and currentBuf contains non-encoded chars.\n    const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n\n    const getCharCode =\n      this.toUnicode instanceof IdentityToUnicodeMap\n        ? unicode => this.toUnicode.charCodeOf(unicode)\n        : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n\n    for (let i = 0, ii = str.length; i < ii; i++) {\n      const unicode = str.codePointAt(i);\n      if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {\n        // unicode is represented by two uint16\n        i++;\n      }\n      if (this.toUnicode) {\n        const charCode = getCharCode(unicode);\n        if (charCode !== -1) {\n          if (hasCurrentBufErrors()) {\n            buffers.push(currentBuf.join(\"\"));\n            currentBuf.length = 0;\n          }\n          const charCodeLength = this.cMap\n            ? this.cMap.getCharCodeLength(charCode)\n            : 1;\n          for (let j = charCodeLength - 1; j >= 0; j--) {\n            currentBuf.push(String.fromCharCode((charCode >> (8 * j)) & 0xff));\n          }\n          continue;\n        }\n      }\n\n      // unicode can't be encoded\n      if (!hasCurrentBufErrors()) {\n        buffers.push(currentBuf.join(\"\"));\n        currentBuf.length = 0;\n      }\n      currentBuf.push(String.fromCodePoint(unicode));\n    }\n\n    buffers.push(currentBuf.join(\"\"));\n\n    return buffers;\n  }\n}\n\nclass ErrorFont {\n  constructor(error) {\n    this.error = error;\n    this.loadedName = \"g_font_error\";\n    this.missingFile = true;\n  }\n\n  charsToGlyphs() {\n    return [];\n  }\n\n  encodeString(chars) {\n    return [chars];\n  }\n\n  exportData(extraProperties = false) {\n    return { error: this.error };\n  }\n}\n\nexport { ErrorFont, Font };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FormatError,\n  info,\n  shadow,\n  stringToBytes,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  ExpertCharset,\n  ExpertSubsetCharset,\n  ISOAdobeCharset,\n} from \"./charsets.js\";\nimport { ExpertEncoding, StandardEncoding } from \"./encodings.js\";\n\n// Maximum subroutine call depth of type 2 chartrings. Matches OTS.\nconst MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\n// prettier-ignore\nconst CFFStandardStrings = [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n  \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n  \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n  \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\",\n  \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\",\n  \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\",\n  \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\",\n  \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n  \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\",\n  \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\",\n  \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\",\n  \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\",\n  \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\",\n  \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\",\n  \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\",\n  \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\",\n  \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\",\n  \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\",\n  \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\",\n  \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\",\n  \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\",\n  \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\",\n  \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\",\n  \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\",\n  \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\",\n  \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\",\n  \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\",\n  \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\",\n  \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n  \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n  \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n  \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n  \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\",\n  \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n  \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n  \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n  \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n  \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n  \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n  \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\",\n  \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\",\n  \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\",\n  \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\",\n  \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n  \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\",\n  \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\",\n  \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\",\n  \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\",\n  \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\",\n  \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\",\n  \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\",\n  \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\",\n  \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\",\n  \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\",\n  \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\",\n  \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\",\n  \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nconst CFFParser = (function CFFParserClosure() {\n  const CharstringValidationData = [\n    null,\n    { id: \"hstem\", min: 2, stackClearing: true, stem: true },\n    null,\n    { id: \"vstem\", min: 2, stackClearing: true, stem: true },\n    { id: \"vmoveto\", min: 1, stackClearing: true },\n    { id: \"rlineto\", min: 2, resetStack: true },\n    { id: \"hlineto\", min: 1, resetStack: true },\n    { id: \"vlineto\", min: 1, resetStack: true },\n    { id: \"rrcurveto\", min: 6, resetStack: true },\n    null,\n    { id: \"callsubr\", min: 1, undefStack: true },\n    { id: \"return\", min: 0, undefStack: true },\n    null, // 12\n    null,\n    { id: \"endchar\", min: 0, stackClearing: true },\n    null,\n    null,\n    null,\n    { id: \"hstemhm\", min: 2, stackClearing: true, stem: true },\n    { id: \"hintmask\", min: 0, stackClearing: true },\n    { id: \"cntrmask\", min: 0, stackClearing: true },\n    { id: \"rmoveto\", min: 2, stackClearing: true },\n    { id: \"hmoveto\", min: 1, stackClearing: true },\n    { id: \"vstemhm\", min: 2, stackClearing: true, stem: true },\n    { id: \"rcurveline\", min: 8, resetStack: true },\n    { id: \"rlinecurve\", min: 8, resetStack: true },\n    { id: \"vvcurveto\", min: 4, resetStack: true },\n    { id: \"hhcurveto\", min: 4, resetStack: true },\n    null, // shortint\n    { id: \"callgsubr\", min: 1, undefStack: true },\n    { id: \"vhcurveto\", min: 4, resetStack: true },\n    { id: \"hvcurveto\", min: 4, resetStack: true },\n  ];\n  const CharstringValidationData12 = [\n    null,\n    null,\n    null,\n    { id: \"and\", min: 2, stackDelta: -1 },\n    { id: \"or\", min: 2, stackDelta: -1 },\n    { id: \"not\", min: 1, stackDelta: 0 },\n    null,\n    null,\n    null,\n    { id: \"abs\", min: 1, stackDelta: 0 },\n    {\n      id: \"add\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] + stack[index - 1];\n      },\n    },\n    {\n      id: \"sub\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] - stack[index - 1];\n      },\n    },\n    {\n      id: \"div\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] / stack[index - 1];\n      },\n    },\n    null,\n    {\n      id: \"neg\",\n      min: 1,\n      stackDelta: 0,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 1] = -stack[index - 1];\n      },\n    },\n    { id: \"eq\", min: 2, stackDelta: -1 },\n    null,\n    null,\n    { id: \"drop\", min: 1, stackDelta: -1 },\n    null,\n    { id: \"put\", min: 2, stackDelta: -2 },\n    { id: \"get\", min: 1, stackDelta: 0 },\n    { id: \"ifelse\", min: 4, stackDelta: -3 },\n    { id: \"random\", min: 0, stackDelta: 1 },\n    {\n      id: \"mul\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] * stack[index - 1];\n      },\n    },\n    null,\n    { id: \"sqrt\", min: 1, stackDelta: 0 },\n    { id: \"dup\", min: 1, stackDelta: 1 },\n    { id: \"exch\", min: 2, stackDelta: 0 },\n    { id: \"index\", min: 2, stackDelta: 0 },\n    { id: \"roll\", min: 3, stackDelta: -2 },\n    null,\n    null,\n    null,\n    { id: \"hflex\", min: 7, resetStack: true },\n    { id: \"flex\", min: 13, resetStack: true },\n    { id: \"hflex1\", min: 9, resetStack: true },\n    { id: \"flex1\", min: 11, resetStack: true },\n  ];\n\n  // eslint-disable-next-line no-shadow\n  class CFFParser {\n    constructor(file, properties, seacAnalysisEnabled) {\n      this.bytes = file.getBytes();\n      this.properties = properties;\n      this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n    }\n\n    parse() {\n      const properties = this.properties;\n      const cff = new CFF();\n      this.cff = cff;\n\n      // The first five sections must be in order, all the others are reached\n      // via offsets contained in one of the below.\n      const header = this.parseHeader();\n      const nameIndex = this.parseIndex(header.endPos);\n      const topDictIndex = this.parseIndex(nameIndex.endPos);\n      const stringIndex = this.parseIndex(topDictIndex.endPos);\n      const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n      const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n      const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n      cff.header = header.obj;\n      cff.names = this.parseNameIndex(nameIndex.obj);\n      cff.strings = this.parseStringIndex(stringIndex.obj);\n      cff.topDict = topDict;\n      cff.globalSubrIndex = globalSubrIndex.obj;\n\n      this.parsePrivateDict(cff.topDict);\n\n      cff.isCIDFont = topDict.hasName(\"ROS\");\n\n      const charStringOffset = topDict.getByName(\"CharStrings\");\n      const charStringIndex = this.parseIndex(charStringOffset).obj;\n\n      const fontMatrix = topDict.getByName(\"FontMatrix\");\n      if (fontMatrix) {\n        properties.fontMatrix = fontMatrix;\n      }\n\n      const fontBBox = topDict.getByName(\"FontBBox\");\n      if (fontBBox) {\n        // adjusting ascent/descent\n        properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n        properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n        properties.ascentScaled = true;\n      }\n\n      let charset, encoding;\n      if (cff.isCIDFont) {\n        const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n        for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n          const dictRaw = fdArrayIndex.get(i);\n          const fontDict = this.createDict(\n            CFFTopDict,\n            this.parseDict(dictRaw),\n            cff.strings\n          );\n          this.parsePrivateDict(fontDict);\n          cff.fdArray.push(fontDict);\n        }\n        // cid fonts don't have an encoding\n        encoding = null;\n        charset = this.parseCharsets(\n          topDict.getByName(\"charset\"),\n          charStringIndex.count,\n          cff.strings,\n          true\n        );\n        cff.fdSelect = this.parseFDSelect(\n          topDict.getByName(\"FDSelect\"),\n          charStringIndex.count\n        );\n      } else {\n        charset = this.parseCharsets(\n          topDict.getByName(\"charset\"),\n          charStringIndex.count,\n          cff.strings,\n          false\n        );\n        encoding = this.parseEncoding(\n          topDict.getByName(\"Encoding\"),\n          properties,\n          cff.strings,\n          charset.charset\n        );\n      }\n\n      cff.charset = charset;\n      cff.encoding = encoding;\n\n      const charStringsAndSeacs = this.parseCharStrings({\n        charStrings: charStringIndex,\n        localSubrIndex: topDict.privateDict.subrsIndex,\n        globalSubrIndex: globalSubrIndex.obj,\n        fdSelect: cff.fdSelect,\n        fdArray: cff.fdArray,\n        privateDict: topDict.privateDict,\n      });\n      cff.charStrings = charStringsAndSeacs.charStrings;\n      cff.seacs = charStringsAndSeacs.seacs;\n      cff.widths = charStringsAndSeacs.widths;\n\n      return cff;\n    }\n\n    parseHeader() {\n      let bytes = this.bytes;\n      const bytesLength = bytes.length;\n      let offset = 0;\n\n      // Prevent an infinite loop, by checking that the offset is within the\n      // bounds of the bytes array. Necessary in empty, or invalid, font files.\n      while (offset < bytesLength && bytes[offset] !== 1) {\n        ++offset;\n      }\n      if (offset >= bytesLength) {\n        throw new FormatError(\"Invalid CFF header\");\n      }\n      if (offset !== 0) {\n        info(\"cff data is shifted\");\n        bytes = bytes.subarray(offset);\n        this.bytes = bytes;\n      }\n      const major = bytes[0];\n      const minor = bytes[1];\n      const hdrSize = bytes[2];\n      const offSize = bytes[3];\n      const header = new CFFHeader(major, minor, hdrSize, offSize);\n      return { obj: header, endPos: hdrSize };\n    }\n\n    parseDict(dict) {\n      let pos = 0;\n\n      function parseOperand() {\n        let value = dict[pos++];\n        if (value === 30) {\n          return parseFloatOperand();\n        } else if (value === 28) {\n          value = dict[pos++];\n          value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n          return value;\n        } else if (value === 29) {\n          value = dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          return value;\n        } else if (value >= 32 && value <= 246) {\n          return value - 139;\n        } else if (value >= 247 && value <= 250) {\n          return (value - 247) * 256 + dict[pos++] + 108;\n        } else if (value >= 251 && value <= 254) {\n          return -((value - 251) * 256) - dict[pos++] - 108;\n        }\n        warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n        return NaN;\n      }\n\n      function parseFloatOperand() {\n        let str = \"\";\n        const eof = 15;\n        // prettier-ignore\n        const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n                        \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n        const length = dict.length;\n        while (pos < length) {\n          const b = dict[pos++];\n          const b1 = b >> 4;\n          const b2 = b & 15;\n\n          if (b1 === eof) {\n            break;\n          }\n          str += lookup[b1];\n\n          if (b2 === eof) {\n            break;\n          }\n          str += lookup[b2];\n        }\n        return parseFloat(str);\n      }\n\n      let operands = [];\n      const entries = [];\n\n      pos = 0;\n      const end = dict.length;\n      while (pos < end) {\n        let b = dict[pos];\n        if (b <= 21) {\n          if (b === 12) {\n            b = (b << 8) | dict[++pos];\n          }\n          entries.push([b, operands]);\n          operands = [];\n          ++pos;\n        } else {\n          operands.push(parseOperand());\n        }\n      }\n      return entries;\n    }\n\n    parseIndex(pos) {\n      const cffIndex = new CFFIndex();\n      const bytes = this.bytes;\n      const count = (bytes[pos++] << 8) | bytes[pos++];\n      const offsets = [];\n      let end = pos;\n      let i, ii;\n\n      if (count !== 0) {\n        const offsetSize = bytes[pos++];\n        // add 1 for offset to determine size of last object\n        const startPos = pos + (count + 1) * offsetSize - 1;\n\n        for (i = 0, ii = count + 1; i < ii; ++i) {\n          let offset = 0;\n          for (let j = 0; j < offsetSize; ++j) {\n            offset <<= 8;\n            offset += bytes[pos++];\n          }\n          offsets.push(startPos + offset);\n        }\n        end = offsets[count];\n      }\n      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n        const offsetStart = offsets[i];\n        const offsetEnd = offsets[i + 1];\n        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n      }\n      return { obj: cffIndex, endPos: end };\n    }\n\n    parseNameIndex(index) {\n      const names = [];\n      for (let i = 0, ii = index.count; i < ii; ++i) {\n        const name = index.get(i);\n        names.push(bytesToString(name));\n      }\n      return names;\n    }\n\n    parseStringIndex(index) {\n      const strings = new CFFStrings();\n      for (let i = 0, ii = index.count; i < ii; ++i) {\n        const data = index.get(i);\n        strings.add(bytesToString(data));\n      }\n      return strings;\n    }\n\n    createDict(Type, dict, strings) {\n      const cffDict = new Type(strings);\n      for (let i = 0, ii = dict.length; i < ii; ++i) {\n        const pair = dict[i];\n        const key = pair[0];\n        const value = pair[1];\n        cffDict.setByKey(key, value);\n      }\n      return cffDict;\n    }\n\n    parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n      if (!data || state.callDepth > MAX_SUBR_NESTING) {\n        return false;\n      }\n      let stackSize = state.stackSize;\n      const stack = state.stack;\n\n      const length = data.length;\n\n      for (let j = 0; j < length; ) {\n        const value = data[j++];\n        let validationCommand = null;\n        if (value === 12) {\n          const q = data[j++];\n          if (q === 0) {\n            // The CFF specification state that the 'dotsection' command\n            // (12, 0) is deprecated and treated as a no-op, but all Type2\n            // charstrings processors should support them. Unfortunately\n            // the font sanitizer don't. As a workaround the sequence (12, 0)\n            // is replaced by a useless (0, hmoveto).\n            data[j - 2] = 139;\n            data[j - 1] = 22;\n            stackSize = 0;\n          } else {\n            validationCommand = CharstringValidationData12[q];\n          }\n        } else if (value === 28) {\n          // number (16 bit)\n          stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n          j += 2;\n          stackSize++;\n        } else if (value === 14) {\n          if (stackSize >= 4) {\n            stackSize -= 4;\n            if (this.seacAnalysisEnabled) {\n              state.seac = stack.slice(stackSize, stackSize + 4);\n              return false;\n            }\n          }\n          validationCommand = CharstringValidationData[value];\n        } else if (value >= 32 && value <= 246) {\n          // number\n          stack[stackSize] = value - 139;\n          stackSize++;\n        } else if (value >= 247 && value <= 254) {\n          // number (+1 bytes)\n          stack[stackSize] =\n            value < 251\n              ? ((value - 247) << 8) + data[j] + 108\n              : -((value - 251) << 8) - data[j] - 108;\n          j++;\n          stackSize++;\n        } else if (value === 255) {\n          // number (32 bit)\n          stack[stackSize] =\n            ((data[j] << 24) |\n              (data[j + 1] << 16) |\n              (data[j + 2] << 8) |\n              data[j + 3]) /\n            65536;\n          j += 4;\n          stackSize++;\n        } else if (value === 19 || value === 20) {\n          state.hints += stackSize >> 1;\n          // skipping right amount of hints flag data\n          j += (state.hints + 7) >> 3;\n          stackSize %= 2;\n          validationCommand = CharstringValidationData[value];\n        } else if (value === 10 || value === 29) {\n          let subrsIndex;\n          if (value === 10) {\n            subrsIndex = localSubrIndex;\n          } else {\n            subrsIndex = globalSubrIndex;\n          }\n          if (!subrsIndex) {\n            validationCommand = CharstringValidationData[value];\n            warn(\"Missing subrsIndex for \" + validationCommand.id);\n            return false;\n          }\n          let bias = 32768;\n          if (subrsIndex.count < 1240) {\n            bias = 107;\n          } else if (subrsIndex.count < 33900) {\n            bias = 1131;\n          }\n          const subrNumber = stack[--stackSize] + bias;\n          if (\n            subrNumber < 0 ||\n            subrNumber >= subrsIndex.count ||\n            isNaN(subrNumber)\n          ) {\n            validationCommand = CharstringValidationData[value];\n            warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n            return false;\n          }\n          state.stackSize = stackSize;\n          state.callDepth++;\n          const valid = this.parseCharString(\n            state,\n            subrsIndex.get(subrNumber),\n            localSubrIndex,\n            globalSubrIndex\n          );\n          if (!valid) {\n            return false;\n          }\n          state.callDepth--;\n          stackSize = state.stackSize;\n          continue;\n        } else if (value === 11) {\n          state.stackSize = stackSize;\n          return true;\n        } else if (value === 0 && j === data.length) {\n          // Operator 0 is not used according to the current spec and\n          // it's the last char and consequently it's likely a terminator.\n          // So just replace it by endchar command to make OTS happy.\n          data[j - 1] = 14;\n          validationCommand = CharstringValidationData[14];\n        } else {\n          validationCommand = CharstringValidationData[value];\n        }\n        if (validationCommand) {\n          if (validationCommand.stem) {\n            state.hints += stackSize >> 1;\n            if (value === 3 || value === 23) {\n              // vstem or vstemhm.\n              state.hasVStems = true;\n            } else if (state.hasVStems && (value === 1 || value === 18)) {\n              // Some browsers don't draw glyphs that specify vstems before\n              // hstems. As a workaround, replace hstem (1) and hstemhm (18)\n              // with a pointless vstem (3) or vstemhm (23).\n              warn(\"CFF stem hints are in wrong order\");\n              data[j - 1] = value === 1 ? 3 : 23;\n            }\n          }\n          if (\"min\" in validationCommand) {\n            if (!state.undefStack && stackSize < validationCommand.min) {\n              warn(\n                \"Not enough parameters for \" +\n                  validationCommand.id +\n                  \"; actual: \" +\n                  stackSize +\n                  \", expected: \" +\n                  validationCommand.min\n              );\n\n              if (stackSize === 0) {\n                // Just \"fix\" the outline in replacing command by a endchar:\n                // it could lead to wrong rendering of some glyphs or not.\n                // For example, the pdf in #6132 is well-rendered.\n                data[j - 1] = 14;\n                return true;\n              }\n              return false;\n            }\n          }\n          if (state.firstStackClearing && validationCommand.stackClearing) {\n            state.firstStackClearing = false;\n            // the optional character width can be found before the first\n            // stack-clearing command arguments\n            stackSize -= validationCommand.min;\n            if (stackSize >= 2 && validationCommand.stem) {\n              // there are even amount of arguments for stem commands\n              stackSize %= 2;\n            } else if (stackSize > 1) {\n              warn(\"Found too many parameters for stack-clearing command\");\n            }\n            if (stackSize > 0) {\n              // Width can be any number since its the difference\n              // from nominalWidthX.\n              state.width = stack[stackSize - 1];\n            }\n          }\n          if (\"stackDelta\" in validationCommand) {\n            if (\"stackFn\" in validationCommand) {\n              validationCommand.stackFn(stack, stackSize);\n            }\n            stackSize += validationCommand.stackDelta;\n          } else if (validationCommand.stackClearing) {\n            stackSize = 0;\n          } else if (validationCommand.resetStack) {\n            stackSize = 0;\n            state.undefStack = false;\n          } else if (validationCommand.undefStack) {\n            stackSize = 0;\n            state.undefStack = true;\n            state.firstStackClearing = false;\n          }\n        }\n      }\n      state.stackSize = stackSize;\n      return true;\n    }\n\n    parseCharStrings({\n      charStrings,\n      localSubrIndex,\n      globalSubrIndex,\n      fdSelect,\n      fdArray,\n      privateDict,\n    }) {\n      const seacs = [];\n      const widths = [];\n      const count = charStrings.count;\n      for (let i = 0; i < count; i++) {\n        const charstring = charStrings.get(i);\n        const state = {\n          callDepth: 0,\n          stackSize: 0,\n          stack: [],\n          undefStack: true,\n          hints: 0,\n          firstStackClearing: true,\n          seac: null,\n          width: null,\n          hasVStems: false,\n        };\n        let valid = true;\n        let localSubrToUse = null;\n        let privateDictToUse = privateDict;\n        if (fdSelect && fdArray.length) {\n          const fdIndex = fdSelect.getFDIndex(i);\n          if (fdIndex === -1) {\n            warn(\"Glyph index is not in fd select.\");\n            valid = false;\n          }\n          if (fdIndex >= fdArray.length) {\n            warn(\"Invalid fd index for glyph index.\");\n            valid = false;\n          }\n          if (valid) {\n            privateDictToUse = fdArray[fdIndex].privateDict;\n            localSubrToUse = privateDictToUse.subrsIndex;\n          }\n        } else if (localSubrIndex) {\n          localSubrToUse = localSubrIndex;\n        }\n        if (valid) {\n          valid = this.parseCharString(\n            state,\n            charstring,\n            localSubrToUse,\n            globalSubrIndex\n          );\n        }\n        if (state.width !== null) {\n          const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n          widths[i] = nominalWidth + state.width;\n        } else {\n          const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n          widths[i] = defaultWidth;\n        }\n        if (state.seac !== null) {\n          seacs[i] = state.seac;\n        }\n        if (!valid) {\n          // resetting invalid charstring to single 'endchar'\n          charStrings.set(i, new Uint8Array([14]));\n        }\n      }\n      return { charStrings, seacs, widths };\n    }\n\n    emptyPrivateDictionary(parentDict) {\n      const privateDict = this.createDict(\n        CFFPrivateDict,\n        [],\n        parentDict.strings\n      );\n      parentDict.setByKey(18, [0, 0]);\n      parentDict.privateDict = privateDict;\n    }\n\n    parsePrivateDict(parentDict) {\n      // no private dict, do nothing\n      if (!parentDict.hasName(\"Private\")) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      const privateOffset = parentDict.getByName(\"Private\");\n      // make sure the params are formatted correctly\n      if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n        parentDict.removeByName(\"Private\");\n        return;\n      }\n      const size = privateOffset[0];\n      const offset = privateOffset[1];\n      // remove empty dicts or ones that refer to invalid location\n      if (size === 0 || offset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n\n      const privateDictEnd = offset + size;\n      const dictData = this.bytes.subarray(offset, privateDictEnd);\n      const dict = this.parseDict(dictData);\n      const privateDict = this.createDict(\n        CFFPrivateDict,\n        dict,\n        parentDict.strings\n      );\n      parentDict.privateDict = privateDict;\n\n      // Parse the Subrs index also since it's relative to the private dict.\n      if (!privateDict.getByName(\"Subrs\")) {\n        return;\n      }\n      const subrsOffset = privateDict.getByName(\"Subrs\");\n      const relativeOffset = offset + subrsOffset;\n      // Validate the offset.\n      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      const subrsIndex = this.parseIndex(relativeOffset);\n      privateDict.subrsIndex = subrsIndex.obj;\n    }\n\n    parseCharsets(pos, length, strings, cid) {\n      if (pos === 0) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.ISO_ADOBE,\n          ISOAdobeCharset\n        );\n      } else if (pos === 1) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.EXPERT,\n          ExpertCharset\n        );\n      } else if (pos === 2) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n          ExpertSubsetCharset\n        );\n      }\n\n      const bytes = this.bytes;\n      const start = pos;\n      const format = bytes[pos++];\n      const charset = [cid ? 0 : \".notdef\"];\n      let id, count, i;\n\n      // subtract 1 for the .notdef glyph\n      length -= 1;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; i++) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            charset.push(cid ? id : strings.get(id));\n          }\n          break;\n        case 1:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        case 2:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = (bytes[pos++] << 8) | bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        default:\n          throw new FormatError(\"Unknown charset format\");\n      }\n      // Raw won't be needed if we actually compile the charset.\n      const end = pos;\n      const raw = bytes.subarray(start, end);\n\n      return new CFFCharset(false, format, charset, raw);\n    }\n\n    parseEncoding(pos, properties, strings, charset) {\n      const encoding = Object.create(null);\n      const bytes = this.bytes;\n      let predefined = false;\n      let format, i, ii;\n      let raw = null;\n\n      function readSupplement() {\n        const supplementsCount = bytes[pos++];\n        for (i = 0; i < supplementsCount; i++) {\n          const code = bytes[pos++];\n          const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n          encoding[code] = charset.indexOf(strings.get(sid));\n        }\n      }\n\n      if (pos === 0 || pos === 1) {\n        predefined = true;\n        format = pos;\n        const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n        for (i = 0, ii = charset.length; i < ii; i++) {\n          const index = baseEncoding.indexOf(charset[i]);\n          if (index !== -1) {\n            encoding[index] = i;\n          }\n        }\n      } else {\n        const dataStart = pos;\n        format = bytes[pos++];\n        switch (format & 0x7f) {\n          case 0:\n            const glyphsCount = bytes[pos++];\n            for (i = 1; i <= glyphsCount; i++) {\n              encoding[bytes[pos++]] = i;\n            }\n            break;\n\n          case 1:\n            const rangesCount = bytes[pos++];\n            let gid = 1;\n            for (i = 0; i < rangesCount; i++) {\n              const start = bytes[pos++];\n              const left = bytes[pos++];\n              for (let j = start; j <= start + left; j++) {\n                encoding[j] = gid++;\n              }\n            }\n            break;\n\n          default:\n            throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n        }\n        const dataEnd = pos;\n        if (format & 0x80) {\n          // hasSupplement\n          // The font sanitizer does not support CFF encoding with a\n          // supplement, since the encoding is not really used to map\n          // between gid to glyph, let's overwrite what is declared in\n          // the top dictionary to let the sanitizer think the font use\n          // StandardEncoding, that's a lie but that's ok.\n          bytes[dataStart] &= 0x7f;\n          readSupplement();\n        }\n        raw = bytes.subarray(dataStart, dataEnd);\n      }\n      format &= 0x7f;\n      return new CFFEncoding(predefined, format, encoding, raw);\n    }\n\n    parseFDSelect(pos, length) {\n      const bytes = this.bytes;\n      const format = bytes[pos++];\n      const fdSelect = [];\n      let i;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; ++i) {\n            const id = bytes[pos++];\n            fdSelect.push(id);\n          }\n          break;\n        case 3:\n          const rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n          for (i = 0; i < rangesCount; ++i) {\n            let first = (bytes[pos++] << 8) | bytes[pos++];\n            if (i === 0 && first !== 0) {\n              warn(\n                \"parseFDSelect: The first range must have a first GID of 0\" +\n                  \" -- trying to recover.\"\n              );\n              first = 0;\n            }\n            const fdIndex = bytes[pos++];\n            const next = (bytes[pos] << 8) | bytes[pos + 1];\n            for (let j = first; j < next; ++j) {\n              fdSelect.push(fdIndex);\n            }\n          }\n          // Advance past the sentinel(next).\n          pos += 2;\n          break;\n        default:\n          throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n      }\n      if (fdSelect.length !== length) {\n        throw new FormatError(\"parseFDSelect: Invalid font data.\");\n      }\n\n      return new CFFFDSelect(format, fdSelect);\n    }\n  }\n  return CFFParser;\n})();\n\n// Compact Font Format\nclass CFF {\n  constructor() {\n    this.header = null;\n    this.names = [];\n    this.topDict = null;\n    this.strings = new CFFStrings();\n    this.globalSubrIndex = null;\n\n    // The following could really be per font, but since we only have one font\n    // store them here.\n    this.encoding = null;\n    this.charset = null;\n    this.charStrings = null;\n    this.fdArray = [];\n    this.fdSelect = null;\n\n    this.isCIDFont = false;\n  }\n\n  duplicateFirstGlyph() {\n    // Browsers will not display a glyph at position 0. Typically glyph 0 is\n    // notdef, but a number of fonts put a valid glyph there so it must be\n    // duplicated and appended.\n    if (this.charStrings.count >= 65535) {\n      warn(\"Not enough space in charstrings to duplicate first glyph.\");\n      return;\n    }\n    const glyphZero = this.charStrings.get(0);\n    this.charStrings.add(glyphZero);\n    if (this.isCIDFont) {\n      this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n    }\n  }\n\n  hasGlyphId(id) {\n    if (id < 0 || id >= this.charStrings.count) {\n      return false;\n    }\n    const glyph = this.charStrings.get(id);\n    return glyph.length > 0;\n  }\n}\n\nclass CFFHeader {\n  constructor(major, minor, hdrSize, offSize) {\n    this.major = major;\n    this.minor = minor;\n    this.hdrSize = hdrSize;\n    this.offSize = offSize;\n  }\n}\n\nclass CFFStrings {\n  constructor() {\n    this.strings = [];\n  }\n\n  get(index) {\n    if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n      return CFFStandardStrings[index];\n    }\n    if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n      return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n    }\n    return CFFStandardStrings[0];\n  }\n\n  getSID(str) {\n    let index = CFFStandardStrings.indexOf(str);\n    if (index !== -1) {\n      return index;\n    }\n    index = this.strings.indexOf(str);\n    if (index !== -1) {\n      return index + NUM_STANDARD_CFF_STRINGS;\n    }\n    return -1;\n  }\n\n  add(value) {\n    this.strings.push(value);\n  }\n\n  get count() {\n    return this.strings.length;\n  }\n}\n\nclass CFFIndex {\n  constructor() {\n    this.objects = [];\n    this.length = 0;\n  }\n\n  add(data) {\n    this.length += data.length;\n    this.objects.push(data);\n  }\n\n  set(index, data) {\n    this.length += data.length - this.objects[index].length;\n    this.objects[index] = data;\n  }\n\n  get(index) {\n    return this.objects[index];\n  }\n\n  get count() {\n    return this.objects.length;\n  }\n}\n\nclass CFFDict {\n  constructor(tables, strings) {\n    this.keyToNameMap = tables.keyToNameMap;\n    this.nameToKeyMap = tables.nameToKeyMap;\n    this.defaults = tables.defaults;\n    this.types = tables.types;\n    this.opcodes = tables.opcodes;\n    this.order = tables.order;\n    this.strings = strings;\n    this.values = Object.create(null);\n  }\n\n  // value should always be an array\n  setByKey(key, value) {\n    if (!(key in this.keyToNameMap)) {\n      return false;\n    }\n    const valueLength = value.length;\n    // ignore empty values\n    if (valueLength === 0) {\n      return true;\n    }\n    // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n    for (let i = 0; i < valueLength; i++) {\n      if (isNaN(value[i])) {\n        warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n        return true;\n      }\n    }\n    const type = this.types[key];\n    // remove the array wrapping these types of values\n    if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n      value = value[0];\n    }\n    this.values[key] = value;\n    return true;\n  }\n\n  setByName(name, value) {\n    if (!(name in this.nameToKeyMap)) {\n      throw new FormatError(`Invalid dictionary name \"${name}\"`);\n    }\n    this.values[this.nameToKeyMap[name]] = value;\n  }\n\n  hasName(name) {\n    return this.nameToKeyMap[name] in this.values;\n  }\n\n  getByName(name) {\n    if (!(name in this.nameToKeyMap)) {\n      throw new FormatError(`Invalid dictionary name ${name}\"`);\n    }\n    const key = this.nameToKeyMap[name];\n    if (!(key in this.values)) {\n      return this.defaults[key];\n    }\n    return this.values[key];\n  }\n\n  removeByName(name) {\n    delete this.values[this.nameToKeyMap[name]];\n  }\n\n  static createTables(layout) {\n    const tables = {\n      keyToNameMap: {},\n      nameToKeyMap: {},\n      defaults: {},\n      types: {},\n      opcodes: {},\n      order: [],\n    };\n    for (let i = 0, ii = layout.length; i < ii; ++i) {\n      const entry = layout[i];\n      const key = Array.isArray(entry[0])\n        ? (entry[0][0] << 8) + entry[0][1]\n        : entry[0];\n      tables.keyToNameMap[key] = entry[1];\n      tables.nameToKeyMap[entry[1]] = key;\n      tables.types[key] = entry[2];\n      tables.defaults[key] = entry[3];\n      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n      tables.order.push(key);\n    }\n    return tables;\n  }\n}\n\nconst CFFTopDict = (function CFFTopDictClosure() {\n  const layout = [\n    [[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null],\n    [[12, 20], \"SyntheticBase\", \"num\", null],\n    [0, \"version\", \"sid\", null],\n    [1, \"Notice\", \"sid\", null],\n    [[12, 0], \"Copyright\", \"sid\", null],\n    [2, \"FullName\", \"sid\", null],\n    [3, \"FamilyName\", \"sid\", null],\n    [4, \"Weight\", \"sid\", null],\n    [[12, 1], \"isFixedPitch\", \"num\", 0],\n    [[12, 2], \"ItalicAngle\", \"num\", 0],\n    [[12, 3], \"UnderlinePosition\", \"num\", -100],\n    [[12, 4], \"UnderlineThickness\", \"num\", 50],\n    [[12, 5], \"PaintType\", \"num\", 0],\n    [[12, 6], \"CharstringType\", \"num\", 2],\n    // prettier-ignore\n    [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"],\n                            [0.001, 0, 0, 0.001, 0, 0]],\n    [13, \"UniqueID\", \"num\", null],\n    [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]],\n    [[12, 8], \"StrokeWidth\", \"num\", 0],\n    [14, \"XUID\", \"array\", null],\n    [15, \"charset\", \"offset\", 0],\n    [16, \"Encoding\", \"offset\", 0],\n    [17, \"CharStrings\", \"offset\", 0],\n    [18, \"Private\", [\"offset\", \"offset\"], null],\n    [[12, 21], \"PostScript\", \"sid\", null],\n    [[12, 22], \"BaseFontName\", \"sid\", null],\n    [[12, 23], \"BaseFontBlend\", \"delta\", null],\n    [[12, 31], \"CIDFontVersion\", \"num\", 0],\n    [[12, 32], \"CIDFontRevision\", \"num\", 0],\n    [[12, 33], \"CIDFontType\", \"num\", 0],\n    [[12, 34], \"CIDCount\", \"num\", 8720],\n    [[12, 35], \"UIDBase\", \"num\", null],\n    // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n    // before FDArray.\n    [[12, 37], \"FDSelect\", \"offset\", null],\n    [[12, 36], \"FDArray\", \"offset\", null],\n    [[12, 38], \"FontName\", \"sid\", null],\n  ];\n  let tables = null;\n\n  // eslint-disable-next-line no-shadow\n  class CFFTopDict extends CFFDict {\n    constructor(strings) {\n      if (tables === null) {\n        tables = CFFDict.createTables(layout);\n      }\n      super(tables, strings);\n      this.privateDict = null;\n    }\n  }\n  return CFFTopDict;\n})();\n\nconst CFFPrivateDict = (function CFFPrivateDictClosure() {\n  const layout = [\n    [6, \"BlueValues\", \"delta\", null],\n    [7, \"OtherBlues\", \"delta\", null],\n    [8, \"FamilyBlues\", \"delta\", null],\n    [9, \"FamilyOtherBlues\", \"delta\", null],\n    [[12, 9], \"BlueScale\", \"num\", 0.039625],\n    [[12, 10], \"BlueShift\", \"num\", 7],\n    [[12, 11], \"BlueFuzz\", \"num\", 1],\n    [10, \"StdHW\", \"num\", null],\n    [11, \"StdVW\", \"num\", null],\n    [[12, 12], \"StemSnapH\", \"delta\", null],\n    [[12, 13], \"StemSnapV\", \"delta\", null],\n    [[12, 14], \"ForceBold\", \"num\", 0],\n    [[12, 17], \"LanguageGroup\", \"num\", 0],\n    [[12, 18], \"ExpansionFactor\", \"num\", 0.06],\n    [[12, 19], \"initialRandomSeed\", \"num\", 0],\n    [20, \"defaultWidthX\", \"num\", 0],\n    [21, \"nominalWidthX\", \"num\", 0],\n    [19, \"Subrs\", \"offset\", null],\n  ];\n  let tables = null;\n\n  // eslint-disable-next-line no-shadow\n  class CFFPrivateDict extends CFFDict {\n    constructor(strings) {\n      if (tables === null) {\n        tables = CFFDict.createTables(layout);\n      }\n      super(tables, strings);\n      this.subrsIndex = null;\n    }\n  }\n  return CFFPrivateDict;\n})();\n\nconst CFFCharsetPredefinedTypes = {\n  ISO_ADOBE: 0,\n  EXPERT: 1,\n  EXPERT_SUBSET: 2,\n};\n\nclass CFFCharset {\n  constructor(predefined, format, charset, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.charset = charset;\n    this.raw = raw;\n  }\n}\n\nclass CFFEncoding {\n  constructor(predefined, format, encoding, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.encoding = encoding;\n    this.raw = raw;\n  }\n}\n\nclass CFFFDSelect {\n  constructor(format, fdSelect) {\n    this.format = format;\n    this.fdSelect = fdSelect;\n  }\n\n  getFDIndex(glyphIndex) {\n    if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n      return -1;\n    }\n    return this.fdSelect[glyphIndex];\n  }\n}\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nclass CFFOffsetTracker {\n  constructor() {\n    this.offsets = Object.create(null);\n  }\n\n  isTracking(key) {\n    return key in this.offsets;\n  }\n\n  track(key, location) {\n    if (key in this.offsets) {\n      throw new FormatError(`Already tracking location of ${key}`);\n    }\n    this.offsets[key] = location;\n  }\n\n  offset(value) {\n    for (const key in this.offsets) {\n      this.offsets[key] += value;\n    }\n  }\n\n  setEntryLocation(key, values, output) {\n    if (!(key in this.offsets)) {\n      throw new FormatError(`Not tracking location of ${key}`);\n    }\n    const data = output.data;\n    const dataOffset = this.offsets[key];\n    const size = 5;\n    for (let i = 0, ii = values.length; i < ii; ++i) {\n      const offset0 = i * size + dataOffset;\n      const offset1 = offset0 + 1;\n      const offset2 = offset0 + 2;\n      const offset3 = offset0 + 3;\n      const offset4 = offset0 + 4;\n      // It's easy to screw up offsets so perform this sanity check.\n      if (\n        data[offset0] !== 0x1d ||\n        data[offset1] !== 0 ||\n        data[offset2] !== 0 ||\n        data[offset3] !== 0 ||\n        data[offset4] !== 0\n      ) {\n        throw new FormatError(\"writing to an offset that is not empty\");\n      }\n      const value = values[i];\n      data[offset0] = 0x1d;\n      data[offset1] = (value >> 24) & 0xff;\n      data[offset2] = (value >> 16) & 0xff;\n      data[offset3] = (value >> 8) & 0xff;\n      data[offset4] = value & 0xff;\n    }\n  }\n}\n\n// Takes a CFF and converts it to the binary representation.\nclass CFFCompiler {\n  constructor(cff) {\n    this.cff = cff;\n  }\n\n  compile() {\n    const cff = this.cff;\n    const output = {\n      data: [],\n      length: 0,\n      add: function CFFCompiler_add(data) {\n        this.data = this.data.concat(data);\n        this.length = this.data.length;\n      },\n    };\n\n    // Compile the five entries that must be in order.\n    const header = this.compileHeader(cff.header);\n    output.add(header);\n\n    const nameIndex = this.compileNameIndex(cff.names);\n    output.add(nameIndex);\n\n    if (cff.isCIDFont) {\n      // The spec is unclear on how font matrices should relate to each other\n      // when there is one in the main top dict and the sub top dicts.\n      // Windows handles this differently than linux and osx so we have to\n      // normalize to work on all.\n      // Rules based off of some mailing list discussions:\n      // - If main font has a matrix and subfont doesn't, use the main matrix.\n      // - If no main font matrix and there is a subfont matrix, use the\n      //   subfont matrix.\n      // - If both have matrices, concat together.\n      // - If neither have matrices, use default.\n      // To make this work on all platforms we move the top matrix into each\n      // sub top dict and concat if necessary.\n      if (cff.topDict.hasName(\"FontMatrix\")) {\n        const base = cff.topDict.getByName(\"FontMatrix\");\n        cff.topDict.removeByName(\"FontMatrix\");\n        for (let i = 0, ii = cff.fdArray.length; i < ii; i++) {\n          const subDict = cff.fdArray[i];\n          let matrix = base.slice(0);\n          if (subDict.hasName(\"FontMatrix\")) {\n            matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n          }\n          subDict.setByName(\"FontMatrix\", matrix);\n        }\n      }\n    }\n\n    const xuid = cff.topDict.getByName(\"XUID\");\n    if (xuid && xuid.length > 16) {\n      // Length of XUID array must not be greater than 16 (issue #12399).\n      cff.topDict.removeByName(\"XUID\");\n    }\n\n    cff.topDict.setByName(\"charset\", 0);\n    let compiled = this.compileTopDicts(\n      [cff.topDict],\n      output.length,\n      cff.isCIDFont\n    );\n    output.add(compiled.output);\n    const topDictTracker = compiled.trackers[0];\n\n    const stringIndex = this.compileStringIndex(cff.strings.strings);\n    output.add(stringIndex);\n\n    const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n    output.add(globalSubrIndex);\n\n    // Now start on the other entries that have no specific order.\n    if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n      if (cff.encoding.predefined) {\n        topDictTracker.setEntryLocation(\n          \"Encoding\",\n          [cff.encoding.format],\n          output\n        );\n      } else {\n        const encoding = this.compileEncoding(cff.encoding);\n        topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n        output.add(encoding);\n      }\n    }\n    const charset = this.compileCharset(\n      cff.charset,\n      cff.charStrings.count,\n      cff.strings,\n      cff.isCIDFont\n    );\n    topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n    output.add(charset);\n\n    const charStrings = this.compileCharStrings(cff.charStrings);\n    topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n    output.add(charStrings);\n\n    if (cff.isCIDFont) {\n      // For some reason FDSelect must be in front of FDArray on windows. OSX\n      // and linux don't seem to care.\n      topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n      const fdSelect = this.compileFDSelect(cff.fdSelect);\n      output.add(fdSelect);\n      // It is unclear if the sub font dictionary can have CID related\n      // dictionary keys, but the sanitizer doesn't like them so remove them.\n      compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n      topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n      output.add(compiled.output);\n      const fontDictTrackers = compiled.trackers;\n\n      this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n    }\n\n    this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n    // If the font data ends with INDEX whose object data is zero-length,\n    // the sanitizer will bail out. Add a dummy byte to avoid that.\n    output.add([0]);\n\n    return output.data;\n  }\n\n  encodeNumber(value) {\n    if (Number.isInteger(value)) {\n      return this.encodeInteger(value);\n    }\n    return this.encodeFloat(value);\n  }\n\n  static get EncodeFloatRegExp() {\n    return shadow(\n      this,\n      \"EncodeFloatRegExp\",\n      /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/\n    );\n  }\n\n  encodeFloat(num) {\n    let value = num.toString();\n\n    // Rounding inaccurate doubles.\n    const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n    if (m) {\n      const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n      value = (Math.round(num * epsilon) / epsilon).toString();\n    }\n\n    let nibbles = \"\";\n    let i, ii;\n    for (i = 0, ii = value.length; i < ii; ++i) {\n      const a = value[i];\n      if (a === \"e\") {\n        nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n      } else if (a === \".\") {\n        nibbles += \"a\";\n      } else if (a === \"-\") {\n        nibbles += \"e\";\n      } else {\n        nibbles += a;\n      }\n    }\n    nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n    const out = [30];\n    for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n      out.push(parseInt(nibbles.substring(i, i + 2), 16));\n    }\n    return out;\n  }\n\n  encodeInteger(value) {\n    let code;\n    if (value >= -107 && value <= 107) {\n      code = [value + 139];\n    } else if (value >= 108 && value <= 1131) {\n      value -= 108;\n      code = [(value >> 8) + 247, value & 0xff];\n    } else if (value >= -1131 && value <= -108) {\n      value = -value - 108;\n      code = [(value >> 8) + 251, value & 0xff];\n    } else if (value >= -32768 && value <= 32767) {\n      code = [0x1c, (value >> 8) & 0xff, value & 0xff];\n    } else {\n      code = [\n        0x1d,\n        (value >> 24) & 0xff,\n        (value >> 16) & 0xff,\n        (value >> 8) & 0xff,\n        value & 0xff,\n      ];\n    }\n    return code;\n  }\n\n  compileHeader(header) {\n    // `header.hdrSize` can be any value but we only write 4 values\n    // so header size is 4 (prevents OTS from rejecting the font).\n    return [header.major, header.minor, 4, header.offSize];\n  }\n\n  compileNameIndex(names) {\n    const nameIndex = new CFFIndex();\n    for (let i = 0, ii = names.length; i < ii; ++i) {\n      const name = names[i];\n      // OTS doesn't allow names to be over 127 characters.\n      const length = Math.min(name.length, 127);\n      let sanitizedName = new Array(length);\n      for (let j = 0; j < length; j++) {\n        // OTS requires chars to be between a range and not certain other\n        // chars.\n        let char = name[j];\n        if (\n          char < \"!\" ||\n          char > \"~\" ||\n          char === \"[\" ||\n          char === \"]\" ||\n          char === \"(\" ||\n          char === \")\" ||\n          char === \"{\" ||\n          char === \"}\" ||\n          char === \"<\" ||\n          char === \">\" ||\n          char === \"/\" ||\n          char === \"%\"\n        ) {\n          char = \"_\";\n        }\n        sanitizedName[j] = char;\n      }\n      sanitizedName = sanitizedName.join(\"\");\n\n      if (sanitizedName === \"\") {\n        sanitizedName = \"Bad_Font_Name\";\n      }\n      nameIndex.add(stringToBytes(sanitizedName));\n    }\n    return this.compileIndex(nameIndex);\n  }\n\n  compileTopDicts(dicts, length, removeCidKeys) {\n    const fontDictTrackers = [];\n    let fdArrayIndex = new CFFIndex();\n    for (let i = 0, ii = dicts.length; i < ii; ++i) {\n      const fontDict = dicts[i];\n      if (removeCidKeys) {\n        fontDict.removeByName(\"CIDFontVersion\");\n        fontDict.removeByName(\"CIDFontRevision\");\n        fontDict.removeByName(\"CIDFontType\");\n        fontDict.removeByName(\"CIDCount\");\n        fontDict.removeByName(\"UIDBase\");\n      }\n      const fontDictTracker = new CFFOffsetTracker();\n      const fontDictData = this.compileDict(fontDict, fontDictTracker);\n      fontDictTrackers.push(fontDictTracker);\n      fdArrayIndex.add(fontDictData);\n      fontDictTracker.offset(length);\n    }\n    fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n    return {\n      trackers: fontDictTrackers,\n      output: fdArrayIndex,\n    };\n  }\n\n  compilePrivateDicts(dicts, trackers, output) {\n    for (let i = 0, ii = dicts.length; i < ii; ++i) {\n      const fontDict = dicts[i];\n      const privateDict = fontDict.privateDict;\n      if (!privateDict || !fontDict.hasName(\"Private\")) {\n        throw new FormatError(\"There must be a private dictionary.\");\n      }\n      const privateDictTracker = new CFFOffsetTracker();\n      const privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n      let outputLength = output.length;\n      privateDictTracker.offset(outputLength);\n      if (!privateDictData.length) {\n        // The private dictionary was empty, set the output length to zero to\n        // ensure the offset length isn't out of bounds in the eyes of the\n        // sanitizer.\n        outputLength = 0;\n      }\n\n      trackers[i].setEntryLocation(\n        \"Private\",\n        [privateDictData.length, outputLength],\n        output\n      );\n      output.add(privateDictData);\n\n      if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n        const subrs = this.compileIndex(privateDict.subrsIndex);\n        privateDictTracker.setEntryLocation(\n          \"Subrs\",\n          [privateDictData.length],\n          output\n        );\n        output.add(subrs);\n      }\n    }\n  }\n\n  compileDict(dict, offsetTracker) {\n    let out = [];\n    // The dictionary keys must be in a certain order.\n    const order = dict.order;\n    for (let i = 0; i < order.length; ++i) {\n      const key = order[i];\n      if (!(key in dict.values)) {\n        continue;\n      }\n      let values = dict.values[key];\n      let types = dict.types[key];\n      if (!Array.isArray(types)) {\n        types = [types];\n      }\n      if (!Array.isArray(values)) {\n        values = [values];\n      }\n\n      // Remove any empty dict values.\n      if (values.length === 0) {\n        continue;\n      }\n\n      for (let j = 0, jj = types.length; j < jj; ++j) {\n        const type = types[j];\n        const value = values[j];\n        switch (type) {\n          case \"num\":\n          case \"sid\":\n            out = out.concat(this.encodeNumber(value));\n            break;\n          case \"offset\":\n            // For offsets we just insert a 32bit integer so we don't have to\n            // deal with figuring out the length of the offset when it gets\n            // replaced later on by the compiler.\n            const name = dict.keyToNameMap[key];\n            // Some offsets have the offset and the length, so just record the\n            // position of the first one.\n            if (!offsetTracker.isTracking(name)) {\n              offsetTracker.track(name, out.length);\n            }\n            out = out.concat([0x1d, 0, 0, 0, 0]);\n            break;\n          case \"array\":\n          case \"delta\":\n            out = out.concat(this.encodeNumber(value));\n            for (let k = 1, kk = values.length; k < kk; ++k) {\n              out = out.concat(this.encodeNumber(values[k]));\n            }\n            break;\n          default:\n            throw new FormatError(`Unknown data type of ${type}`);\n        }\n      }\n      out = out.concat(dict.opcodes[key]);\n    }\n    return out;\n  }\n\n  compileStringIndex(strings) {\n    const stringIndex = new CFFIndex();\n    for (let i = 0, ii = strings.length; i < ii; ++i) {\n      stringIndex.add(stringToBytes(strings[i]));\n    }\n    return this.compileIndex(stringIndex);\n  }\n\n  compileGlobalSubrIndex() {\n    const globalSubrIndex = this.cff.globalSubrIndex;\n    this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n  }\n\n  compileCharStrings(charStrings) {\n    const charStringsIndex = new CFFIndex();\n    for (let i = 0; i < charStrings.count; i++) {\n      const glyph = charStrings.get(i);\n      // If the CharString outline is empty, replace it with .notdef to\n      // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n      if (glyph.length === 0) {\n        charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n        continue;\n      }\n      charStringsIndex.add(glyph);\n    }\n    return this.compileIndex(charStringsIndex);\n  }\n\n  compileCharset(charset, numGlyphs, strings, isCIDFont) {\n    // Freetype requires the number of charset strings be correct and MacOS\n    // requires a valid mapping for printing.\n    let out;\n    const numGlyphsLessNotDef = numGlyphs - 1;\n    if (isCIDFont) {\n      // In a CID font, the charset is a mapping of CIDs not SIDs so just\n      // create an identity mapping.\n      out = new Uint8Array([\n        2, // format\n        0, // first CID upper byte\n        0, // first CID lower byte\n        (numGlyphsLessNotDef >> 8) & 0xff,\n        numGlyphsLessNotDef & 0xff,\n      ]);\n    } else {\n      const length = 1 + numGlyphsLessNotDef * 2;\n      out = new Uint8Array(length);\n      out[0] = 0; // format 0\n      let charsetIndex = 0;\n      const numCharsets = charset.charset.length;\n      let warned = false;\n      for (let i = 1; i < out.length; i += 2) {\n        let sid = 0;\n        if (charsetIndex < numCharsets) {\n          const name = charset.charset[charsetIndex++];\n          sid = strings.getSID(name);\n          if (sid === -1) {\n            sid = 0;\n            if (!warned) {\n              warned = true;\n              warn(`Couldn't find ${name} in CFF strings`);\n            }\n          }\n        }\n        out[i] = (sid >> 8) & 0xff;\n        out[i + 1] = sid & 0xff;\n      }\n    }\n    return this.compileTypedArray(out);\n  }\n\n  compileEncoding(encoding) {\n    return this.compileTypedArray(encoding.raw);\n  }\n\n  compileFDSelect(fdSelect) {\n    const format = fdSelect.format;\n    let out, i;\n    switch (format) {\n      case 0:\n        out = new Uint8Array(1 + fdSelect.fdSelect.length);\n        out[0] = format;\n        for (i = 0; i < fdSelect.fdSelect.length; i++) {\n          out[i + 1] = fdSelect.fdSelect[i];\n        }\n        break;\n      case 3:\n        const start = 0;\n        let lastFD = fdSelect.fdSelect[0];\n        const ranges = [\n          format,\n          0, // nRanges place holder\n          0, // nRanges place holder\n          (start >> 8) & 0xff,\n          start & 0xff,\n          lastFD,\n        ];\n        for (i = 1; i < fdSelect.fdSelect.length; i++) {\n          const currentFD = fdSelect.fdSelect[i];\n          if (currentFD !== lastFD) {\n            ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\n            lastFD = currentFD;\n          }\n        }\n        // 3 bytes are pushed for every range and there are 3 header bytes.\n        const numRanges = (ranges.length - 3) / 3;\n        ranges[1] = (numRanges >> 8) & 0xff;\n        ranges[2] = numRanges & 0xff;\n        // sentinel\n        ranges.push((i >> 8) & 0xff, i & 0xff);\n        out = new Uint8Array(ranges);\n        break;\n    }\n    return this.compileTypedArray(out);\n  }\n\n  compileTypedArray(data) {\n    const out = [];\n    for (let i = 0, ii = data.length; i < ii; ++i) {\n      out[i] = data[i];\n    }\n    return out;\n  }\n\n  compileIndex(index, trackers = []) {\n    const objects = index.objects;\n    // First 2 bytes contains the number of objects contained into this index\n    const count = objects.length;\n\n    // If there is no object, just create an index. This technically\n    // should just be [0, 0] but OTS has an issue with that.\n    if (count === 0) {\n      return [0, 0, 0];\n    }\n\n    const data = [(count >> 8) & 0xff, count & 0xff];\n\n    let lastOffset = 1,\n      i;\n    for (i = 0; i < count; ++i) {\n      lastOffset += objects[i].length;\n    }\n\n    let offsetSize;\n    if (lastOffset < 0x100) {\n      offsetSize = 1;\n    } else if (lastOffset < 0x10000) {\n      offsetSize = 2;\n    } else if (lastOffset < 0x1000000) {\n      offsetSize = 3;\n    } else {\n      offsetSize = 4;\n    }\n\n    // Next byte contains the offset size use to reference object in the file\n    data.push(offsetSize);\n\n    // Add another offset after this one because we need a new offset\n    let relativeOffset = 1;\n    for (i = 0; i < count + 1; i++) {\n      if (offsetSize === 1) {\n        data.push(relativeOffset & 0xff);\n      } else if (offsetSize === 2) {\n        data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\n      } else if (offsetSize === 3) {\n        data.push(\n          (relativeOffset >> 16) & 0xff,\n          (relativeOffset >> 8) & 0xff,\n          relativeOffset & 0xff\n        );\n      } else {\n        data.push(\n          (relativeOffset >>> 24) & 0xff,\n          (relativeOffset >> 16) & 0xff,\n          (relativeOffset >> 8) & 0xff,\n          relativeOffset & 0xff\n        );\n      }\n\n      if (objects[i]) {\n        relativeOffset += objects[i].length;\n      }\n    }\n\n    for (i = 0; i < count; i++) {\n      // Notify the tracker where the object will be offset in the data.\n      if (trackers[i]) {\n        trackers[i].offset(data.length);\n      }\n      for (let j = 0, jj = objects[i].length; j < jj; j++) {\n        data.push(objects[i][j]);\n      }\n    }\n    return data;\n  }\n}\n\nexport {\n  CFF,\n  CFFCharset,\n  CFFCompiler,\n  CFFFDSelect,\n  CFFHeader,\n  CFFIndex,\n  CFFParser,\n  CFFPrivateDict,\n  CFFStandardStrings,\n  CFFStrings,\n  CFFTopDict,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ISOAdobeCharset = [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n  \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n  \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\",\n  \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n  \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\",\n  \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\n  \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n  \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\",\n  \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\",\n  \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\n  \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n  \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n  \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n  \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\",\n  \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n  \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\",\n  \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\",\n  \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\",\n  \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\",\n  \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\",\n  \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\",\n  \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\",\n  \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\",\n  \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\",\n  \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\",\n  \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\",\n  \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\",\n  \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\",\n  \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\",\n  \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\",\n  \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"\n];\n\n// prettier-ignore\nconst ExpertCharset = [\n  \".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\",\n  \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n  \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n  \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n  \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n  \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\",\n  \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\",\n  \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\",\n  \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n  \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n  \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\",\n  \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\",\n  \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\",\n  \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n  \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n  \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n  \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n  \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n  \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n  \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\",\n  \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\",\n  \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\"\n];\n\n// prettier-ignore\nconst ExpertSubsetCharset = [\n  \".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\",\n  \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\",\n  \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\",\n  \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\",\n  \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n  \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\",\n  \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\",\n  \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n  \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n  \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n  \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n  \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n  \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n  \"periodinferior\", \"commainferior\"\n];\n\nexport { ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nconst getStdFontMap = getLookupTableFactory(function (t) {\n  // The standard 14 fonts:\n  t[\"Times-Roman\"] = \"Times-Roman\";\n  t.Helvetica = \"Helvetica\";\n  t.Courier = \"Courier\";\n  t.Symbol = \"Symbol\";\n  t[\"Times-Bold\"] = \"Times-Bold\";\n  t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n  t[\"Courier-Bold\"] = \"Courier-Bold\";\n  t.ZapfDingbats = \"ZapfDingbats\";\n  t[\"Times-Italic\"] = \"Times-Italic\";\n  t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n  t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n  t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n  t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n\n  // Extra mappings\n  t.ArialNarrow = \"Helvetica\";\n  t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n  t.ArialBlack = \"Helvetica\";\n  t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-Black\"] = \"Helvetica\";\n  t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n  t.Arial = \"Helvetica\";\n  t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n  t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n  t.ArialMT = \"Helvetica\";\n  t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"Courier-Italic\"] = \"Courier-Oblique\";\n  t.CourierNew = \"Courier\";\n  t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n  t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n  t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n  t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n  t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n  t.CourierNewPSMT = \"Courier\";\n  t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Symbol-Bold\"] = \"Symbol\";\n  t[\"Symbol-BoldItalic\"] = \"Symbol\";\n  t[\"Symbol-Italic\"] = \"Symbol\";\n  t.TimesNewRoman = \"Times-Roman\";\n  t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n  t.TimesNewRomanPS = \"Times-Roman\";\n  t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n  t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n  t.TimesNewRomanPSMT = \"Times-Roman\";\n  t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\n\n// Contains mapping for standard fonts and xfa fonts.\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\n  t.Courier = \"FoxitFixed.pfb\";\n  t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n  t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n  t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n  t.Helvetica = \"FoxitSans.pfb\";\n  t[\"Helvetica-Bold\"] = \"FoxitSansBold.pfb\";\n  t[\"Helvetica-BoldOblique\"] = \"FoxitSansBoldItalic.pfb\";\n  t[\"Helvetica-Oblique\"] = \"FoxitSansItalic.pfb\";\n  t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n  t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n  t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n  t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n  t.Symbol = \"FoxitSymbol.pfb\";\n  t.ZapfDingbats = \"FoxitDingbats.pfb\";\n  t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n  t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n  t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n  t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n  t.Calibri = \"Helvetica\";\n  t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n  t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n  t.CenturyGothic = \"Helvetica\";\n  t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n  t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n  t.ComicSansMS = \"Comic Sans MS\";\n  t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n  t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n  t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n  t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n  t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ItcSymbol-Book\"] = \"Helvetica\";\n  t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n  t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n  t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\n  t.LucidaConsole = \"Courier\";\n  t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n  t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n  t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n  t[\"MS-Gothic\"] = \"MS Gothic\";\n  t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n  t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n  t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n  t[\"MS-Mincho\"] = \"MS Mincho\";\n  t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n  t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n  t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n  t[\"MS-PGothic\"] = \"MS PGothic\";\n  t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n  t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n  t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n  t[\"MS-PMincho\"] = \"MS PMincho\";\n  t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n  t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n  t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n  t.NuptialScript = \"Times-Italic\";\n  t.SegoeUISymbol = \"Helvetica\";\n  t.Wingdings = \"ZapfDingbats\";\n  t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\n\nconst getSerifFonts = getLookupTableFactory(function (t) {\n  t[\"Adobe Jenson\"] = true;\n  t[\"Adobe Text\"] = true;\n  t.Albertus = true;\n  t.Aldus = true;\n  t.Alexandria = true;\n  t.Algerian = true;\n  t[\"American Typewriter\"] = true;\n  t.Antiqua = true;\n  t.Apex = true;\n  t.Arno = true;\n  t.Aster = true;\n  t.Aurora = true;\n  t.Baskerville = true;\n  t.Bell = true;\n  t.Bembo = true;\n  t[\"Bembo Schoolbook\"] = true;\n  t.Benguiat = true;\n  t[\"Berkeley Old Style\"] = true;\n  t[\"Bernhard Modern\"] = true;\n  t[\"Berthold City\"] = true;\n  t.Bodoni = true;\n  t[\"Bauer Bodoni\"] = true;\n  t[\"Book Antiqua\"] = true;\n  t.Bookman = true;\n  t[\"Bordeaux Roman\"] = true;\n  t[\"Californian FB\"] = true;\n  t.Calisto = true;\n  t.Calvert = true;\n  t.Capitals = true;\n  t.Cambria = true;\n  t.Cartier = true;\n  t.Caslon = true;\n  t.Catull = true;\n  t.Centaur = true;\n  t[\"Century Old Style\"] = true;\n  t[\"Century Schoolbook\"] = true;\n  t.Chaparral = true;\n  t[\"Charis SIL\"] = true;\n  t.Cheltenham = true;\n  t[\"Cholla Slab\"] = true;\n  t.Clarendon = true;\n  t.Clearface = true;\n  t.Cochin = true;\n  t.Colonna = true;\n  t[\"Computer Modern\"] = true;\n  t[\"Concrete Roman\"] = true;\n  t.Constantia = true;\n  t[\"Cooper Black\"] = true;\n  t.Corona = true;\n  t.Ecotype = true;\n  t.Egyptienne = true;\n  t.Elephant = true;\n  t.Excelsior = true;\n  t.Fairfield = true;\n  t[\"FF Scala\"] = true;\n  t.Folkard = true;\n  t.Footlight = true;\n  t.FreeSerif = true;\n  t[\"Friz Quadrata\"] = true;\n  t.Garamond = true;\n  t.Gentium = true;\n  t.Georgia = true;\n  t.Gloucester = true;\n  t[\"Goudy Old Style\"] = true;\n  t[\"Goudy Schoolbook\"] = true;\n  t[\"Goudy Pro Font\"] = true;\n  t.Granjon = true;\n  t[\"Guardian Egyptian\"] = true;\n  t.Heather = true;\n  t.Hercules = true;\n  t[\"High Tower Text\"] = true;\n  t.Hiroshige = true;\n  t[\"Hoefler Text\"] = true;\n  t[\"Humana Serif\"] = true;\n  t.Imprint = true;\n  t[\"Ionic No. 5\"] = true;\n  t.Janson = true;\n  t.Joanna = true;\n  t.Korinna = true;\n  t.Lexicon = true;\n  t.LiberationSerif = true;\n  t[\"Liberation Serif\"] = true;\n  t[\"Linux Libertine\"] = true;\n  t.Literaturnaya = true;\n  t.Lucida = true;\n  t[\"Lucida Bright\"] = true;\n  t.Melior = true;\n  t.Memphis = true;\n  t.Miller = true;\n  t.Minion = true;\n  t.Modern = true;\n  t[\"Mona Lisa\"] = true;\n  t[\"Mrs Eaves\"] = true;\n  t[\"MS Serif\"] = true;\n  t[\"Museo Slab\"] = true;\n  t[\"New York\"] = true;\n  t[\"Nimbus Roman\"] = true;\n  t[\"NPS Rawlinson Roadway\"] = true;\n  t.NuptialScript = true;\n  t.Palatino = true;\n  t.Perpetua = true;\n  t.Plantin = true;\n  t[\"Plantin Schoolbook\"] = true;\n  t.Playbill = true;\n  t[\"Poor Richard\"] = true;\n  t[\"Rawlinson Roadway\"] = true;\n  t.Renault = true;\n  t.Requiem = true;\n  t.Rockwell = true;\n  t.Roman = true;\n  t[\"Rotis Serif\"] = true;\n  t.Sabon = true;\n  t.Scala = true;\n  t.Seagull = true;\n  t.Sistina = true;\n  t.Souvenir = true;\n  t.STIX = true;\n  t[\"Stone Informal\"] = true;\n  t[\"Stone Serif\"] = true;\n  t.Sylfaen = true;\n  t.Times = true;\n  t.Trajan = true;\n  t[\"Trinité\"] = true;\n  t[\"Trump Mediaeval\"] = true;\n  t.Utopia = true;\n  t[\"Vale Type\"] = true;\n  t[\"Bitstream Vera\"] = true;\n  t[\"Vera Serif\"] = true;\n  t.Versailles = true;\n  t.Wanted = true;\n  t.Weiss = true;\n  t[\"Wide Latin\"] = true;\n  t.Windsor = true;\n  t.XITS = true;\n});\n\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n  t.Dingbats = true;\n  t.Symbol = true;\n  t.ZapfDingbats = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n  t[2] = 10;\n  t[3] = 32;\n  t[4] = 33;\n  t[5] = 34;\n  t[6] = 35;\n  t[7] = 36;\n  t[8] = 37;\n  t[9] = 38;\n  t[10] = 39;\n  t[11] = 40;\n  t[12] = 41;\n  t[13] = 42;\n  t[14] = 43;\n  t[15] = 44;\n  t[16] = 45;\n  t[17] = 46;\n  t[18] = 47;\n  t[19] = 48;\n  t[20] = 49;\n  t[21] = 50;\n  t[22] = 51;\n  t[23] = 52;\n  t[24] = 53;\n  t[25] = 54;\n  t[26] = 55;\n  t[27] = 56;\n  t[28] = 57;\n  t[29] = 58;\n  t[30] = 894;\n  t[31] = 60;\n  t[32] = 61;\n  t[33] = 62;\n  t[34] = 63;\n  t[35] = 64;\n  t[36] = 65;\n  t[37] = 66;\n  t[38] = 67;\n  t[39] = 68;\n  t[40] = 69;\n  t[41] = 70;\n  t[42] = 71;\n  t[43] = 72;\n  t[44] = 73;\n  t[45] = 74;\n  t[46] = 75;\n  t[47] = 76;\n  t[48] = 77;\n  t[49] = 78;\n  t[50] = 79;\n  t[51] = 80;\n  t[52] = 81;\n  t[53] = 82;\n  t[54] = 83;\n  t[55] = 84;\n  t[56] = 85;\n  t[57] = 86;\n  t[58] = 87;\n  t[59] = 88;\n  t[60] = 89;\n  t[61] = 90;\n  t[62] = 91;\n  t[63] = 92;\n  t[64] = 93;\n  t[65] = 94;\n  t[66] = 95;\n  t[67] = 96;\n  t[68] = 97;\n  t[69] = 98;\n  t[70] = 99;\n  t[71] = 100;\n  t[72] = 101;\n  t[73] = 102;\n  t[74] = 103;\n  t[75] = 104;\n  t[76] = 105;\n  t[77] = 106;\n  t[78] = 107;\n  t[79] = 108;\n  t[80] = 109;\n  t[81] = 110;\n  t[82] = 111;\n  t[83] = 112;\n  t[84] = 113;\n  t[85] = 114;\n  t[86] = 115;\n  t[87] = 116;\n  t[88] = 117;\n  t[89] = 118;\n  t[90] = 119;\n  t[91] = 120;\n  t[92] = 121;\n  t[93] = 122;\n  t[94] = 123;\n  t[95] = 124;\n  t[96] = 125;\n  t[97] = 126;\n  t[98] = 196;\n  t[99] = 197;\n  t[100] = 199;\n  t[101] = 201;\n  t[102] = 209;\n  t[103] = 214;\n  t[104] = 220;\n  t[105] = 225;\n  t[106] = 224;\n  t[107] = 226;\n  t[108] = 228;\n  t[109] = 227;\n  t[110] = 229;\n  t[111] = 231;\n  t[112] = 233;\n  t[113] = 232;\n  t[114] = 234;\n  t[115] = 235;\n  t[116] = 237;\n  t[117] = 236;\n  t[118] = 238;\n  t[119] = 239;\n  t[120] = 241;\n  t[121] = 243;\n  t[122] = 242;\n  t[123] = 244;\n  t[124] = 246;\n  t[125] = 245;\n  t[126] = 250;\n  t[127] = 249;\n  t[128] = 251;\n  t[129] = 252;\n  t[130] = 8224;\n  t[131] = 176;\n  t[132] = 162;\n  t[133] = 163;\n  t[134] = 167;\n  t[135] = 8226;\n  t[136] = 182;\n  t[137] = 223;\n  t[138] = 174;\n  t[139] = 169;\n  t[140] = 8482;\n  t[141] = 180;\n  t[142] = 168;\n  t[143] = 8800;\n  t[144] = 198;\n  t[145] = 216;\n  t[146] = 8734;\n  t[147] = 177;\n  t[148] = 8804;\n  t[149] = 8805;\n  t[150] = 165;\n  t[151] = 181;\n  t[152] = 8706;\n  t[153] = 8721;\n  t[154] = 8719;\n  t[156] = 8747;\n  t[157] = 170;\n  t[158] = 186;\n  t[159] = 8486;\n  t[160] = 230;\n  t[161] = 248;\n  t[162] = 191;\n  t[163] = 161;\n  t[164] = 172;\n  t[165] = 8730;\n  t[166] = 402;\n  t[167] = 8776;\n  t[168] = 8710;\n  t[169] = 171;\n  t[170] = 187;\n  t[171] = 8230;\n  t[200] = 193;\n  t[203] = 205;\n  t[210] = 218;\n  t[223] = 711;\n  t[224] = 321;\n  t[225] = 322;\n  t[226] = 352;\n  t[227] = 353;\n  t[228] = 381;\n  t[229] = 382;\n  t[233] = 221;\n  t[234] = 253;\n  t[252] = 263;\n  t[253] = 268;\n  t[254] = 269;\n  t[258] = 258;\n  t[260] = 260;\n  t[261] = 261;\n  t[265] = 280;\n  t[266] = 281;\n  t[267] = 282;\n  t[268] = 283;\n  t[269] = 313;\n  t[275] = 323;\n  t[276] = 324;\n  t[278] = 328;\n  t[283] = 344;\n  t[284] = 345;\n  t[285] = 346;\n  t[286] = 347;\n  t[292] = 367;\n  t[295] = 377;\n  t[296] = 378;\n  t[298] = 380;\n  t[305] = 963;\n  t[306] = 964;\n  t[307] = 966;\n  t[308] = 8215;\n  t[309] = 8252;\n  t[310] = 8319;\n  t[311] = 8359;\n  t[312] = 8592;\n  t[313] = 8593;\n  t[337] = 9552;\n  t[493] = 1039;\n  t[494] = 1040;\n  t[705] = 1524;\n  t[706] = 8362;\n  t[710] = 64288;\n  t[711] = 64298;\n  t[759] = 1617;\n  t[761] = 1776;\n  t[763] = 1778;\n  t[775] = 1652;\n  t[777] = 1764;\n  t[778] = 1780;\n  t[779] = 1781;\n  t[780] = 1782;\n  t[782] = 771;\n  t[783] = 64726;\n  t[786] = 8363;\n  t[788] = 8532;\n  t[790] = 768;\n  t[791] = 769;\n  t[792] = 768;\n  t[795] = 803;\n  t[797] = 64336;\n  t[798] = 64337;\n  t[799] = 64342;\n  t[800] = 64343;\n  t[801] = 64344;\n  t[802] = 64345;\n  t[803] = 64362;\n  t[804] = 64363;\n  t[805] = 64364;\n  t[2424] = 7821;\n  t[2425] = 7822;\n  t[2426] = 7823;\n  t[2427] = 7824;\n  t[2428] = 7825;\n  t[2429] = 7826;\n  t[2430] = 7827;\n  t[2433] = 7682;\n  t[2678] = 8045;\n  t[2679] = 8046;\n  t[2830] = 1552;\n  t[2838] = 686;\n  t[2840] = 751;\n  t[2842] = 753;\n  t[2843] = 754;\n  t[2844] = 755;\n  t[2846] = 757;\n  t[2856] = 767;\n  t[2857] = 848;\n  t[2858] = 849;\n  t[2862] = 853;\n  t[2863] = 854;\n  t[2864] = 855;\n  t[2865] = 861;\n  t[2866] = 862;\n  t[2906] = 7460;\n  t[2908] = 7462;\n  t[2909] = 7463;\n  t[2910] = 7464;\n  t[2912] = 7466;\n  t[2913] = 7467;\n  t[2914] = 7468;\n  t[2916] = 7470;\n  t[2917] = 7471;\n  t[2918] = 7472;\n  t[2920] = 7474;\n  t[2921] = 7475;\n  t[2922] = 7476;\n  t[2924] = 7478;\n  t[2925] = 7479;\n  t[2926] = 7480;\n  t[2928] = 7482;\n  t[2929] = 7483;\n  t[2930] = 7484;\n  t[2932] = 7486;\n  t[2933] = 7487;\n  t[2934] = 7488;\n  t[2936] = 7490;\n  t[2937] = 7491;\n  t[2938] = 7492;\n  t[2940] = 7494;\n  t[2941] = 7495;\n  t[2942] = 7496;\n  t[2944] = 7498;\n  t[2946] = 7500;\n  t[2948] = 7502;\n  t[2950] = 7504;\n  t[2951] = 7505;\n  t[2952] = 7506;\n  t[2954] = 7508;\n  t[2955] = 7509;\n  t[2956] = 7510;\n  t[2958] = 7512;\n  t[2959] = 7513;\n  t[2960] = 7514;\n  t[2962] = 7516;\n  t[2963] = 7517;\n  t[2964] = 7518;\n  t[2966] = 7520;\n  t[2967] = 7521;\n  t[2968] = 7522;\n  t[2970] = 7524;\n  t[2971] = 7525;\n  t[2972] = 7526;\n  t[2974] = 7528;\n  t[2975] = 7529;\n  t[2976] = 7530;\n  t[2978] = 1537;\n  t[2979] = 1538;\n  t[2980] = 1539;\n  t[2982] = 1549;\n  t[2983] = 1551;\n  t[2984] = 1552;\n  t[2986] = 1554;\n  t[2987] = 1555;\n  t[2988] = 1556;\n  t[2990] = 1623;\n  t[2991] = 1624;\n  t[2995] = 1775;\n  t[2999] = 1791;\n  t[3002] = 64290;\n  t[3003] = 64291;\n  t[3004] = 64292;\n  t[3006] = 64294;\n  t[3007] = 64295;\n  t[3008] = 64296;\n  t[3011] = 1900;\n  t[3014] = 8223;\n  t[3015] = 8244;\n  t[3017] = 7532;\n  t[3018] = 7533;\n  t[3019] = 7534;\n  t[3075] = 7590;\n  t[3076] = 7591;\n  t[3079] = 7594;\n  t[3080] = 7595;\n  t[3083] = 7598;\n  t[3084] = 7599;\n  t[3087] = 7602;\n  t[3088] = 7603;\n  t[3091] = 7606;\n  t[3092] = 7607;\n  t[3095] = 7610;\n  t[3096] = 7611;\n  t[3099] = 7614;\n  t[3100] = 7615;\n  t[3103] = 7618;\n  t[3104] = 7619;\n  t[3107] = 8337;\n  t[3108] = 8338;\n  t[3116] = 1884;\n  t[3119] = 1885;\n  t[3120] = 1885;\n  t[3123] = 1886;\n  t[3124] = 1886;\n  t[3127] = 1887;\n  t[3128] = 1887;\n  t[3131] = 1888;\n  t[3132] = 1888;\n  t[3135] = 1889;\n  t[3136] = 1889;\n  t[3139] = 1890;\n  t[3140] = 1890;\n  t[3143] = 1891;\n  t[3144] = 1891;\n  t[3147] = 1892;\n  t[3148] = 1892;\n  t[3153] = 580;\n  t[3154] = 581;\n  t[3157] = 584;\n  t[3158] = 585;\n  t[3161] = 588;\n  t[3162] = 589;\n  t[3165] = 891;\n  t[3166] = 892;\n  t[3169] = 1274;\n  t[3170] = 1275;\n  t[3173] = 1278;\n  t[3174] = 1279;\n  t[3181] = 7622;\n  t[3182] = 7623;\n  t[3282] = 11799;\n  t[3316] = 578;\n  t[3379] = 42785;\n  t[3393] = 1159;\n  t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (\n  t\n) {\n  t[227] = 322;\n  t[264] = 261;\n  t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n  t[1] = 32;\n  t[4] = 65;\n  t[6] = 193;\n  t[17] = 66;\n  t[18] = 67;\n  t[21] = 268;\n  t[24] = 68;\n  t[28] = 69;\n  t[30] = 201;\n  t[32] = 282;\n  t[38] = 70;\n  t[39] = 71;\n  t[44] = 72;\n  t[47] = 73;\n  t[49] = 205;\n  t[58] = 74;\n  t[60] = 75;\n  t[62] = 76;\n  t[68] = 77;\n  t[69] = 78;\n  t[75] = 79;\n  t[87] = 80;\n  t[89] = 81;\n  t[90] = 82;\n  t[92] = 344;\n  t[94] = 83;\n  t[97] = 352;\n  t[100] = 84;\n  t[104] = 85;\n  t[115] = 86;\n  t[116] = 87;\n  t[121] = 88;\n  t[122] = 89;\n  t[124] = 221;\n  t[127] = 90;\n  t[129] = 381;\n  t[258] = 97;\n  t[260] = 225;\n  t[268] = 261;\n  t[271] = 98;\n  t[272] = 99;\n  t[273] = 263;\n  t[275] = 269;\n  t[282] = 100;\n  t[286] = 101;\n  t[288] = 233;\n  t[290] = 283;\n  t[295] = 281;\n  t[296] = 102;\n  t[336] = 103;\n  t[346] = 104;\n  t[349] = 105;\n  t[351] = 237;\n  t[361] = 106;\n  t[364] = 107;\n  t[367] = 108;\n  t[371] = 322;\n  t[373] = 109;\n  t[374] = 110;\n  t[381] = 111;\n  t[383] = 243;\n  t[393] = 112;\n  t[395] = 113;\n  t[396] = 114;\n  t[398] = 345;\n  t[400] = 115;\n  t[401] = 347;\n  t[403] = 353;\n  t[410] = 116;\n  t[437] = 117;\n  t[448] = 118;\n  t[449] = 119;\n  t[454] = 120;\n  t[455] = 121;\n  t[457] = 253;\n  t[460] = 122;\n  t[462] = 382;\n  t[463] = 380;\n  t[853] = 44;\n  t[855] = 58;\n  t[856] = 46;\n  t[876] = 47;\n  t[878] = 45;\n  t[882] = 45;\n  t[894] = 40;\n  t[895] = 41;\n  t[896] = 91;\n  t[897] = 93;\n  t[923] = 64;\n  t[1004] = 48;\n  t[1005] = 49;\n  t[1006] = 50;\n  t[1007] = 51;\n  t[1008] = 52;\n  t[1009] = 53;\n  t[1010] = 54;\n  t[1011] = 55;\n  t[1012] = 56;\n  t[1013] = 57;\n  t[1081] = 37;\n  t[1085] = 43;\n  t[1086] = 45;\n});\n\nfunction getStandardFontName(name) {\n  const fontName = normalizeFontName(name);\n  const stdFontMap = getStdFontMap();\n  return stdFontMap[fontName];\n}\n\nexport {\n  getFontNameToFileMap,\n  getGlyphMapForStandardFonts,\n  getNonStdFontMap,\n  getSerifFonts,\n  getStandardFontName,\n  getStdFontMap,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n  getSymbolsFonts,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { unreachable } from \"../shared/util.js\";\n\nclass ToUnicodeMap {\n  constructor(cmap = []) {\n    // The elements of this._map can be integers or strings, depending on how\n    // `cmap` was created.\n    this._map = cmap;\n  }\n\n  get length() {\n    return this._map.length;\n  }\n\n  forEach(callback) {\n    for (const charCode in this._map) {\n      callback(charCode, this._map[charCode].charCodeAt(0));\n    }\n  }\n\n  has(i) {\n    return this._map[i] !== undefined;\n  }\n\n  get(i) {\n    return this._map[i];\n  }\n\n  charCodeOf(value) {\n    // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n    // are both very sparse and very large (see issue8372.pdf).\n    const map = this._map;\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n    for (const charCode in map) {\n      if (map[charCode] === value) {\n        return charCode | 0;\n      }\n    }\n    return -1;\n  }\n\n  amend(map) {\n    for (const charCode in map) {\n      this._map[charCode] = map[charCode];\n    }\n  }\n}\n\nclass IdentityToUnicodeMap {\n  constructor(firstChar, lastChar) {\n    this.firstChar = firstChar;\n    this.lastChar = lastChar;\n  }\n\n  get length() {\n    return this.lastChar + 1 - this.firstChar;\n  }\n\n  forEach(callback) {\n    for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n      callback(i, i);\n    }\n  }\n\n  has(i) {\n    return this.firstChar <= i && i <= this.lastChar;\n  }\n\n  get(i) {\n    if (this.firstChar <= i && i <= this.lastChar) {\n      return String.fromCharCode(i);\n    }\n    return undefined;\n  }\n\n  charCodeOf(v) {\n    return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar\n      ? v\n      : -1;\n  }\n\n  amend(map) {\n    unreachable(\"Should not call amend()\");\n  }\n}\n\nexport { IdentityToUnicodeMap, ToUnicodeMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nclass CFFFont {\n  constructor(file, properties) {\n    this.properties = properties;\n\n    const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n    this.cff = parser.parse();\n    this.cff.duplicateFirstGlyph();\n    const compiler = new CFFCompiler(this.cff);\n    this.seacs = this.cff.seacs;\n    try {\n      this.data = compiler.compile();\n    } catch (e) {\n      warn(\"Failed to compile font \" + properties.loadedName);\n      // There may have just been an issue with the compiler, set the data\n      // anyway and hope the font loaded.\n      this.data = file;\n    }\n    this._createBuiltInEncoding();\n  }\n\n  get numGlyphs() {\n    return this.cff.charStrings.count;\n  }\n\n  getCharset() {\n    return this.cff.charset.charset;\n  }\n\n  getGlyphMapping() {\n    const cff = this.cff;\n    const properties = this.properties;\n    const charsets = cff.charset.charset;\n    let charCodeToGlyphId;\n    let glyphId;\n\n    if (properties.composite) {\n      charCodeToGlyphId = Object.create(null);\n      let charCode;\n      if (cff.isCIDFont) {\n        // If the font is actually a CID font then we should use the charset\n        // to map CIDs to GIDs.\n        for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n          const cid = charsets[glyphId];\n          charCode = properties.cMap.charCodeOf(cid);\n          charCodeToGlyphId[charCode] = glyphId;\n        }\n      } else {\n        // If it is NOT actually a CID font then CIDs should be mapped\n        // directly to GIDs.\n        for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n          charCode = properties.cMap.charCodeOf(glyphId);\n          charCodeToGlyphId[charCode] = glyphId;\n        }\n      }\n      return charCodeToGlyphId;\n    }\n\n    let encoding = cff.encoding ? cff.encoding.encoding : null;\n    if (properties.isInternalFont) {\n      encoding = properties.defaultEncoding;\n    }\n    charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n    return charCodeToGlyphId;\n  }\n\n  hasGlyphId(id) {\n    return this.cff.hasGlyphId(id);\n  }\n\n  /**\n   * @private\n   */\n  _createBuiltInEncoding() {\n    const { charset, encoding } = this.cff;\n    if (!charset || !encoding) {\n      return;\n    }\n    const charsets = charset.charset,\n      encodings = encoding.encoding;\n    const map = [];\n\n    for (const charCode in encodings) {\n      const glyphId = encodings[charCode];\n      if (glyphId >= 0) {\n        const glyphName = charsets[glyphId];\n        if (glyphName) {\n          map[charCode] = glyphName;\n        }\n      }\n    }\n    if (map.length > 0) {\n      this.properties.builtInEncoding = map;\n    }\n  }\n}\n\nexport { CFFFont };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { CFFParser } from \"./cff_parser.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { StandardEncoding } from \"./encodings.js\";\nimport { Stream } from \"./stream.js\";\n\n// TODO: use DataView and its methods.\n\nfunction getUint32(data, offset) {\n  return (\n    ((data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]) >>>\n    0\n  );\n}\n\nfunction getUint16(data, offset) {\n  return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction getInt16(data, offset) {\n  return ((data[offset] << 24) | (data[offset + 1] << 16)) >> 16;\n}\n\nfunction getInt8(data, offset) {\n  return (data[offset] << 24) >> 24;\n}\n\nfunction getFloat214(data, offset) {\n  return getInt16(data, offset) / 16384;\n}\n\nfunction getSubroutineBias(subrs) {\n  const numSubrs = subrs.length;\n  let bias = 32768;\n  if (numSubrs < 1240) {\n    bias = 107;\n  } else if (numSubrs < 33900) {\n    bias = 1131;\n  }\n  return bias;\n}\n\nfunction parseCmap(data, start, end) {\n  const offset =\n    getUint16(data, start + 2) === 1\n      ? getUint32(data, start + 8)\n      : getUint32(data, start + 16);\n  const format = getUint16(data, start + offset);\n  let ranges, p, i;\n  if (format === 4) {\n    getUint16(data, start + offset + 2); // length\n    const segCount = getUint16(data, start + offset + 6) >> 1;\n    p = start + offset + 14;\n    ranges = [];\n    for (i = 0; i < segCount; i++, p += 2) {\n      ranges[i] = { end: getUint16(data, p) };\n    }\n    p += 2;\n    for (i = 0; i < segCount; i++, p += 2) {\n      ranges[i].start = getUint16(data, p);\n    }\n    for (i = 0; i < segCount; i++, p += 2) {\n      ranges[i].idDelta = getUint16(data, p);\n    }\n    for (i = 0; i < segCount; i++, p += 2) {\n      let idOffset = getUint16(data, p);\n      if (idOffset === 0) {\n        continue;\n      }\n      ranges[i].ids = [];\n      for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n        ranges[i].ids[j] = getUint16(data, p + idOffset);\n        idOffset += 2;\n      }\n    }\n    return ranges;\n  } else if (format === 12) {\n    const groups = getUint32(data, start + offset + 12);\n    p = start + offset + 16;\n    ranges = [];\n    for (i = 0; i < groups; i++) {\n      start = getUint32(data, p);\n      ranges.push({\n        start,\n        end: getUint32(data, p + 4),\n        idDelta: getUint32(data, p + 8) - start,\n      });\n      p += 12;\n    }\n    return ranges;\n  }\n  throw new FormatError(`unsupported cmap: ${format}`);\n}\n\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n  const properties = {};\n  const parser = new CFFParser(\n    new Stream(data, start, end - start),\n    properties,\n    seacAnalysisEnabled\n  );\n  const cff = parser.parse();\n  return {\n    glyphs: cff.charStrings.objects,\n    subrs:\n      cff.topDict.privateDict &&\n      cff.topDict.privateDict.subrsIndex &&\n      cff.topDict.privateDict.subrsIndex.objects,\n    gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n    isCFFCIDFont: cff.isCIDFont,\n    fdSelect: cff.fdSelect,\n    fdArray: cff.fdArray,\n  };\n}\n\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n  let itemSize, itemDecode;\n  if (isGlyphLocationsLong) {\n    itemSize = 4;\n    itemDecode = getUint32;\n  } else {\n    itemSize = 2;\n    itemDecode = (data, offset) => 2 * getUint16(data, offset);\n  }\n  const glyphs = [];\n  let startOffset = itemDecode(loca, 0);\n  for (let j = itemSize; j < loca.length; j += itemSize) {\n    const endOffset = itemDecode(loca, j);\n    glyphs.push(glyf.subarray(startOffset, endOffset));\n    startOffset = endOffset;\n  }\n  return glyphs;\n}\n\nfunction lookupCmap(ranges, unicode) {\n  const code = unicode.codePointAt(0);\n  let gid = 0,\n    l = 0,\n    r = ranges.length - 1;\n  while (l < r) {\n    const c = (l + r + 1) >> 1;\n    if (code < ranges[c].start) {\n      r = c - 1;\n    } else {\n      l = c;\n    }\n  }\n  if (ranges[l].start <= code && code <= ranges[l].end) {\n    gid =\n      (ranges[l].idDelta +\n        (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\n      0xffff;\n  }\n  return {\n    charCode: code,\n    glyphId: gid,\n  };\n}\n\nfunction compileGlyf(code, cmds, font) {\n  function moveTo(x, y) {\n    cmds.push({ cmd: \"moveTo\", args: [x, y] });\n  }\n  function lineTo(x, y) {\n    cmds.push({ cmd: \"lineTo\", args: [x, y] });\n  }\n  function quadraticCurveTo(xa, ya, x, y) {\n    cmds.push({ cmd: \"quadraticCurveTo\", args: [xa, ya, x, y] });\n  }\n\n  let i = 0;\n  const numberOfContours = getInt16(code, i);\n  let flags;\n  let x = 0,\n    y = 0;\n  i += 10;\n  if (numberOfContours < 0) {\n    // composite glyph\n    do {\n      flags = getUint16(code, i);\n      const glyphIndex = getUint16(code, i + 2);\n      i += 4;\n      let arg1, arg2;\n      if (flags & 0x01) {\n        if (flags & 0x02) {\n          arg1 = getInt16(code, i);\n          arg2 = getInt16(code, i + 2);\n        } else {\n          arg1 = getUint16(code, i);\n          arg2 = getUint16(code, i + 2);\n        }\n        i += 4;\n      } else {\n        if (flags & 0x02) {\n          arg1 = getInt8(code, i++);\n          arg2 = getInt8(code, i++);\n        } else {\n          arg1 = code[i++];\n          arg2 = code[i++];\n        }\n      }\n      if (flags & 0x02) {\n        x = arg1;\n        y = arg2;\n      } else {\n        x = 0;\n        y = 0;\n      }\n      let scaleX = 1,\n        scaleY = 1,\n        scale01 = 0,\n        scale10 = 0;\n      if (flags & 0x08) {\n        scaleX = scaleY = getFloat214(code, i);\n        i += 2;\n      } else if (flags & 0x40) {\n        scaleX = getFloat214(code, i);\n        scaleY = getFloat214(code, i + 2);\n        i += 4;\n      } else if (flags & 0x80) {\n        scaleX = getFloat214(code, i);\n        scale01 = getFloat214(code, i + 2);\n        scale10 = getFloat214(code, i + 4);\n        scaleY = getFloat214(code, i + 6);\n        i += 8;\n      }\n      const subglyph = font.glyphs[glyphIndex];\n      if (subglyph) {\n        // TODO: the transform should be applied only if there is a scale:\n        // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1205\n        cmds.push(\n          { cmd: \"save\" },\n          {\n            cmd: \"transform\",\n            args: [scaleX, scale01, scale10, scaleY, x, y],\n          }\n        );\n\n        if (!(flags & 0x02)) {\n          // TODO: we must use arg1 and arg2 to make something similar to:\n          // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1209\n        }\n        compileGlyf(subglyph, cmds, font);\n        cmds.push({ cmd: \"restore\" });\n      }\n    } while (flags & 0x20);\n  } else {\n    // simple glyph\n    const endPtsOfContours = [];\n    let j, jj;\n    for (j = 0; j < numberOfContours; j++) {\n      endPtsOfContours.push(getUint16(code, i));\n      i += 2;\n    }\n    const instructionLength = getUint16(code, i);\n    i += 2 + instructionLength; // skipping the instructions\n    const numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n    const points = [];\n    while (points.length < numberOfPoints) {\n      flags = code[i++];\n      let repeat = 1;\n      if (flags & 0x08) {\n        repeat += code[i++];\n      }\n      while (repeat-- > 0) {\n        points.push({ flags });\n      }\n    }\n    for (j = 0; j < numberOfPoints; j++) {\n      switch (points[j].flags & 0x12) {\n        case 0x00:\n          x += getInt16(code, i);\n          i += 2;\n          break;\n        case 0x02:\n          x -= code[i++];\n          break;\n        case 0x12:\n          x += code[i++];\n          break;\n      }\n      points[j].x = x;\n    }\n    for (j = 0; j < numberOfPoints; j++) {\n      switch (points[j].flags & 0x24) {\n        case 0x00:\n          y += getInt16(code, i);\n          i += 2;\n          break;\n        case 0x04:\n          y -= code[i++];\n          break;\n        case 0x24:\n          y += code[i++];\n          break;\n      }\n      points[j].y = y;\n    }\n\n    let startPoint = 0;\n    for (i = 0; i < numberOfContours; i++) {\n      const endPoint = endPtsOfContours[i];\n      // contours might have implicit points, which is located in the middle\n      // between two neighboring off-curve points\n      const contour = points.slice(startPoint, endPoint + 1);\n      if (contour[0].flags & 1) {\n        contour.push(contour[0]); // using start point at the contour end\n      } else if (contour[contour.length - 1].flags & 1) {\n        // first is off-curve point, trying to use one from the end\n        contour.unshift(contour[contour.length - 1]);\n      } else {\n        // start and end are off-curve points, creating implicit one\n        const p = {\n          flags: 1,\n          x: (contour[0].x + contour[contour.length - 1].x) / 2,\n          y: (contour[0].y + contour[contour.length - 1].y) / 2,\n        };\n        contour.unshift(p);\n        contour.push(p);\n      }\n      moveTo(contour[0].x, contour[0].y);\n      for (j = 1, jj = contour.length; j < jj; j++) {\n        if (contour[j].flags & 1) {\n          lineTo(contour[j].x, contour[j].y);\n        } else if (contour[j + 1].flags & 1) {\n          quadraticCurveTo(\n            contour[j].x,\n            contour[j].y,\n            contour[j + 1].x,\n            contour[j + 1].y\n          );\n          j++;\n        } else {\n          quadraticCurveTo(\n            contour[j].x,\n            contour[j].y,\n            (contour[j].x + contour[j + 1].x) / 2,\n            (contour[j].y + contour[j + 1].y) / 2\n          );\n        }\n      }\n      startPoint = endPoint + 1;\n    }\n  }\n}\n\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n  function moveTo(x, y) {\n    cmds.push({ cmd: \"moveTo\", args: [x, y] });\n  }\n  function lineTo(x, y) {\n    cmds.push({ cmd: \"lineTo\", args: [x, y] });\n  }\n  function bezierCurveTo(x1, y1, x2, y2, x, y) {\n    cmds.push({ cmd: \"bezierCurveTo\", args: [x1, y1, x2, y2, x, y] });\n  }\n\n  const stack = [];\n  let x = 0,\n    y = 0;\n  let stems = 0;\n\n  function parse(code) {\n    let i = 0;\n    while (i < code.length) {\n      let stackClean = false;\n      let v = code[i++];\n      let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n      switch (v) {\n        case 1: // hstem\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n        case 3: // vstem\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n        case 4: // vmoveto\n          y += stack.pop();\n          moveTo(x, y);\n          stackClean = true;\n          break;\n        case 5: // rlineto\n          while (stack.length > 0) {\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n          }\n          break;\n        case 6: // hlineto\n          while (stack.length > 0) {\n            x += stack.shift();\n            lineTo(x, y);\n            if (stack.length === 0) {\n              break;\n            }\n            y += stack.shift();\n            lineTo(x, y);\n          }\n          break;\n        case 7: // vlineto\n          while (stack.length > 0) {\n            y += stack.shift();\n            lineTo(x, y);\n            if (stack.length === 0) {\n              break;\n            }\n            x += stack.shift();\n            lineTo(x, y);\n          }\n          break;\n        case 8: // rrcurveto\n          while (stack.length > 0) {\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        case 10: // callsubr\n          n = stack.pop();\n          subrCode = null;\n          if (font.isCFFCIDFont) {\n            const fdIndex = font.fdSelect.getFDIndex(glyphId);\n            if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n              const fontDict = font.fdArray[fdIndex];\n              let subrs;\n              if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n                subrs = fontDict.privateDict.subrsIndex.objects;\n              }\n              if (subrs) {\n                // Add subroutine bias.\n                n += getSubroutineBias(subrs);\n                subrCode = subrs[n];\n              }\n            } else {\n              warn(\"Invalid fd index for glyph index.\");\n            }\n          } else {\n            subrCode = font.subrs[n + font.subrsBias];\n          }\n          if (subrCode) {\n            parse(subrCode);\n          }\n          break;\n        case 11: // return\n          return;\n        case 12:\n          v = code[i++];\n          switch (v) {\n            case 34: // flex\n              xa = x + stack.shift();\n              xb = xa + stack.shift();\n              y1 = y + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y, xb, y1, x, y1);\n              xa = x + stack.shift();\n              xb = xa + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y1, xb, y, x, y);\n              break;\n            case 35: // flex\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              stack.pop(); // fd\n              break;\n            case 36: // hflex1\n              xa = x + stack.shift();\n              y1 = y + stack.shift();\n              xb = xa + stack.shift();\n              y2 = y1 + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y1, xb, y2, x, y2);\n              xa = x + stack.shift();\n              xb = xa + stack.shift();\n              y3 = y2 + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y2, xb, y3, x, y);\n              break;\n            case 37: // flex1\n              const x0 = x,\n                y0 = y;\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb;\n              y = yb;\n              if (Math.abs(x - x0) > Math.abs(y - y0)) {\n                x += stack.shift();\n              } else {\n                y += stack.shift();\n              }\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              break;\n            default:\n              throw new FormatError(`unknown operator: 12 ${v}`);\n          }\n          break;\n        case 14: // endchar\n          if (stack.length >= 4) {\n            const achar = stack.pop();\n            const bchar = stack.pop();\n            y = stack.pop();\n            x = stack.pop();\n            cmds.push({ cmd: \"save\" }, { cmd: \"translate\", args: [x, y] });\n            let cmap = lookupCmap(\n              font.cmap,\n              String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\n            );\n            compileCharString(\n              font.glyphs[cmap.glyphId],\n              cmds,\n              font,\n              cmap.glyphId\n            );\n            cmds.push({ cmd: \"restore\" });\n\n            cmap = lookupCmap(\n              font.cmap,\n              String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\n            );\n            compileCharString(\n              font.glyphs[cmap.glyphId],\n              cmds,\n              font,\n              cmap.glyphId\n            );\n          }\n          return;\n        case 18: // hstemhm\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n        case 19: // hintmask\n          stems += stack.length >> 1;\n          i += (stems + 7) >> 3;\n          stackClean = true;\n          break;\n        case 20: // cntrmask\n          stems += stack.length >> 1;\n          i += (stems + 7) >> 3;\n          stackClean = true;\n          break;\n        case 21: // rmoveto\n          y += stack.pop();\n          x += stack.pop();\n          moveTo(x, y);\n          stackClean = true;\n          break;\n        case 22: // hmoveto\n          x += stack.pop();\n          moveTo(x, y);\n          stackClean = true;\n          break;\n        case 23: // vstemhm\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n        case 24: // rcurveline\n          while (stack.length > 2) {\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          x += stack.shift();\n          y += stack.shift();\n          lineTo(x, y);\n          break;\n        case 25: // rlinecurve\n          while (stack.length > 6) {\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n          }\n          xa = x + stack.shift();\n          ya = y + stack.shift();\n          xb = xa + stack.shift();\n          yb = ya + stack.shift();\n          x = xb + stack.shift();\n          y = yb + stack.shift();\n          bezierCurveTo(xa, ya, xb, yb, x, y);\n          break;\n        case 26: // vvcurveto\n          if (stack.length % 2) {\n            x += stack.shift();\n          }\n          while (stack.length > 0) {\n            xa = x;\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb;\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        case 27: // hhcurveto\n          if (stack.length % 2) {\n            y += stack.shift();\n          }\n          while (stack.length > 0) {\n            xa = x + stack.shift();\n            ya = y;\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb;\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        case 28:\n          stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n          i += 2;\n          break;\n        case 29: // callgsubr\n          n = stack.pop() + font.gsubrsBias;\n          subrCode = font.gsubrs[n];\n          if (subrCode) {\n            parse(subrCode);\n          }\n          break;\n        case 30: // vhcurveto\n          while (stack.length > 0) {\n            xa = x;\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n            if (stack.length === 0) {\n              break;\n            }\n\n            xa = x + stack.shift();\n            ya = y;\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            y = yb + stack.shift();\n            x = xb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        case 31: // hvcurveto\n          while (stack.length > 0) {\n            xa = x + stack.shift();\n            ya = y;\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            y = yb + stack.shift();\n            x = xb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n            if (stack.length === 0) {\n              break;\n            }\n\n            xa = x;\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        default:\n          if (v < 32) {\n            throw new FormatError(`unknown operator: ${v}`);\n          }\n          if (v < 247) {\n            stack.push(v - 139);\n          } else if (v < 251) {\n            stack.push((v - 247) * 256 + code[i++] + 108);\n          } else if (v < 255) {\n            stack.push(-(v - 251) * 256 - code[i++] - 108);\n          } else {\n            stack.push(\n              ((code[i] << 24) |\n                (code[i + 1] << 16) |\n                (code[i + 2] << 8) |\n                code[i + 3]) /\n                65536\n            );\n            i += 4;\n          }\n          break;\n      }\n      if (stackClean) {\n        stack.length = 0;\n      }\n    }\n  }\n  parse(charStringCode);\n}\n\nconst NOOP = [];\n\nclass CompiledFont {\n  constructor(fontMatrix) {\n    if (this.constructor === CompiledFont) {\n      unreachable(\"Cannot initialize CompiledFont.\");\n    }\n    this.fontMatrix = fontMatrix;\n\n    this.compiledGlyphs = Object.create(null);\n    this.compiledCharCodeToGlyphId = Object.create(null);\n  }\n\n  getPathJs(unicode) {\n    const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n    let fn = this.compiledGlyphs[glyphId];\n    if (!fn) {\n      try {\n        fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n        this.compiledGlyphs[glyphId] = fn;\n      } catch (ex) {\n        // Avoid attempting to re-compile a corrupt glyph.\n        this.compiledGlyphs[glyphId] = NOOP;\n\n        if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n          this.compiledCharCodeToGlyphId[charCode] = glyphId;\n        }\n        throw ex;\n      }\n    }\n    if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n      this.compiledCharCodeToGlyphId[charCode] = glyphId;\n    }\n    return fn;\n  }\n\n  compileGlyph(code, glyphId) {\n    if (!code || code.length === 0 || code[0] === 14) {\n      return NOOP;\n    }\n\n    let fontMatrix = this.fontMatrix;\n    if (this.isCFFCIDFont) {\n      // Top DICT's FontMatrix can be ignored because CFFCompiler always\n      // removes it and copies to FDArray DICTs.\n      const fdIndex = this.fdSelect.getFDIndex(glyphId);\n      if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n        const fontDict = this.fdArray[fdIndex];\n        fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n      } else {\n        warn(\"Invalid fd index for glyph index.\");\n      }\n    }\n\n    const cmds = [\n      { cmd: \"save\" },\n      { cmd: \"transform\", args: fontMatrix.slice() },\n      { cmd: \"scale\", args: [\"size\", \"-size\"] },\n    ];\n    this.compileGlyphImpl(code, cmds, glyphId);\n\n    cmds.push({ cmd: \"restore\" });\n\n    return cmds;\n  }\n\n  compileGlyphImpl() {\n    unreachable(\"Children classes should implement this.\");\n  }\n\n  hasBuiltPath(unicode) {\n    const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n    return (\n      this.compiledGlyphs[glyphId] !== undefined &&\n      this.compiledCharCodeToGlyphId[charCode] !== undefined\n    );\n  }\n}\n\nclass TrueTypeCompiled extends CompiledFont {\n  constructor(glyphs, cmap, fontMatrix) {\n    super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n    this.glyphs = glyphs;\n    this.cmap = cmap;\n  }\n\n  compileGlyphImpl(code, cmds) {\n    compileGlyf(code, cmds, this);\n  }\n}\n\nclass Type2Compiled extends CompiledFont {\n  constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n    super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n    this.glyphs = cffInfo.glyphs;\n    this.gsubrs = cffInfo.gsubrs || [];\n    this.subrs = cffInfo.subrs || [];\n    this.cmap = cmap;\n    this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n    this.gsubrsBias = getSubroutineBias(this.gsubrs);\n    this.subrsBias = getSubroutineBias(this.subrs);\n\n    this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n    this.fdSelect = cffInfo.fdSelect;\n    this.fdArray = cffInfo.fdArray;\n  }\n\n  compileGlyphImpl(code, cmds, glyphId) {\n    compileCharString(code, cmds, this, glyphId);\n  }\n}\n\nclass FontRendererFactory {\n  static create(font, seacAnalysisEnabled) {\n    const data = new Uint8Array(font.data);\n    let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n    const numTables = getUint16(data, 4);\n    for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n      const tag = bytesToString(data.subarray(p, p + 4));\n      const offset = getUint32(data, p + 8);\n      const length = getUint32(data, p + 12);\n      switch (tag) {\n        case \"cmap\":\n          cmap = parseCmap(data, offset, offset + length);\n          break;\n        case \"glyf\":\n          glyf = data.subarray(offset, offset + length);\n          break;\n        case \"loca\":\n          loca = data.subarray(offset, offset + length);\n          break;\n        case \"head\":\n          unitsPerEm = getUint16(data, offset + 18);\n          indexToLocFormat = getUint16(data, offset + 50);\n          break;\n        case \"CFF \":\n          cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n          break;\n      }\n    }\n\n    if (glyf) {\n      const fontMatrix = !unitsPerEm\n        ? font.fontMatrix\n        : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n      return new TrueTypeCompiled(\n        parseGlyfTable(glyf, loca, indexToLocFormat),\n        cmap,\n        fontMatrix\n      );\n    }\n    return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n  }\n}\n\nexport { FontRendererFactory };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nconst getMetrics = getLookupTableFactory(function (t) {\n  t.Courier = 600;\n  t[\"Courier-Bold\"] = 600;\n  t[\"Courier-BoldOblique\"] = 600;\n  t[\"Courier-Oblique\"] = 600;\n  // eslint-disable-next-line no-shadow\n  t.Helvetica = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t.Symbol = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.universal = 713;\n    t.numbersign = 500;\n    t.existential = 549;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.suchthat = 439;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asteriskmath = 500;\n    t.plus = 549;\n    t.comma = 250;\n    t.minus = 549;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 549;\n    t.equal = 549;\n    t.greater = 549;\n    t.question = 444;\n    t.congruent = 549;\n    t.Alpha = 722;\n    t.Beta = 667;\n    t.Chi = 722;\n    t.Delta = 612;\n    t.Epsilon = 611;\n    t.Phi = 763;\n    t.Gamma = 603;\n    t.Eta = 722;\n    t.Iota = 333;\n    t.theta1 = 631;\n    t.Kappa = 722;\n    t.Lambda = 686;\n    t.Mu = 889;\n    t.Nu = 722;\n    t.Omicron = 722;\n    t.Pi = 768;\n    t.Theta = 741;\n    t.Rho = 556;\n    t.Sigma = 592;\n    t.Tau = 611;\n    t.Upsilon = 690;\n    t.sigma1 = 439;\n    t.Omega = 768;\n    t.Xi = 645;\n    t.Psi = 795;\n    t.Zeta = 611;\n    t.bracketleft = 333;\n    t.therefore = 863;\n    t.bracketright = 333;\n    t.perpendicular = 658;\n    t.underscore = 500;\n    t.radicalex = 500;\n    t.alpha = 631;\n    t.beta = 549;\n    t.chi = 549;\n    t.delta = 494;\n    t.epsilon = 439;\n    t.phi = 521;\n    t.gamma = 411;\n    t.eta = 603;\n    t.iota = 329;\n    t.phi1 = 603;\n    t.kappa = 549;\n    t.lambda = 549;\n    t.mu = 576;\n    t.nu = 521;\n    t.omicron = 549;\n    t.pi = 549;\n    t.theta = 521;\n    t.rho = 549;\n    t.sigma = 603;\n    t.tau = 439;\n    t.upsilon = 576;\n    t.omega1 = 713;\n    t.omega = 686;\n    t.xi = 493;\n    t.psi = 686;\n    t.zeta = 494;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.similar = 549;\n    t.Euro = 750;\n    t.Upsilon1 = 620;\n    t.minute = 247;\n    t.lessequal = 549;\n    t.fraction = 167;\n    t.infinity = 713;\n    t.florin = 500;\n    t.club = 753;\n    t.diamond = 753;\n    t.heart = 753;\n    t.spade = 753;\n    t.arrowboth = 1042;\n    t.arrowleft = 987;\n    t.arrowup = 603;\n    t.arrowright = 987;\n    t.arrowdown = 603;\n    t.degree = 400;\n    t.plusminus = 549;\n    t.second = 411;\n    t.greaterequal = 549;\n    t.multiply = 549;\n    t.proportional = 713;\n    t.partialdiff = 494;\n    t.bullet = 460;\n    t.divide = 549;\n    t.notequal = 549;\n    t.equivalence = 549;\n    t.approxequal = 549;\n    t.ellipsis = 1000;\n    t.arrowvertex = 603;\n    t.arrowhorizex = 1000;\n    t.carriagereturn = 658;\n    t.aleph = 823;\n    t.Ifraktur = 686;\n    t.Rfraktur = 795;\n    t.weierstrass = 987;\n    t.circlemultiply = 768;\n    t.circleplus = 768;\n    t.emptyset = 823;\n    t.intersection = 768;\n    t.union = 768;\n    t.propersuperset = 713;\n    t.reflexsuperset = 713;\n    t.notsubset = 713;\n    t.propersubset = 713;\n    t.reflexsubset = 713;\n    t.element = 713;\n    t.notelement = 713;\n    t.angle = 768;\n    t.gradient = 713;\n    t.registerserif = 790;\n    t.copyrightserif = 790;\n    t.trademarkserif = 890;\n    t.product = 823;\n    t.radical = 549;\n    t.dotmath = 250;\n    t.logicalnot = 713;\n    t.logicaland = 603;\n    t.logicalor = 603;\n    t.arrowdblboth = 1042;\n    t.arrowdblleft = 987;\n    t.arrowdblup = 603;\n    t.arrowdblright = 987;\n    t.arrowdbldown = 603;\n    t.lozenge = 494;\n    t.angleleft = 329;\n    t.registersans = 790;\n    t.copyrightsans = 790;\n    t.trademarksans = 786;\n    t.summation = 713;\n    t.parenlefttp = 384;\n    t.parenleftex = 384;\n    t.parenleftbt = 384;\n    t.bracketlefttp = 384;\n    t.bracketleftex = 384;\n    t.bracketleftbt = 384;\n    t.bracelefttp = 494;\n    t.braceleftmid = 494;\n    t.braceleftbt = 494;\n    t.braceex = 494;\n    t.angleright = 329;\n    t.integral = 274;\n    t.integraltp = 686;\n    t.integralex = 686;\n    t.integralbt = 686;\n    t.parenrighttp = 384;\n    t.parenrightex = 384;\n    t.parenrightbt = 384;\n    t.bracketrighttp = 384;\n    t.bracketrightex = 384;\n    t.bracketrightbt = 384;\n    t.bracerighttp = 494;\n    t.bracerightmid = 494;\n    t.bracerightbt = 494;\n    t.apple = 790;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 408;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 564;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 564;\n    t.equal = 564;\n    t.greater = 564;\n    t.question = 444;\n    t.at = 921;\n    t.A = 722;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 556;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 389;\n    t.K = 722;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 556;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 722;\n    t.W = 944;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 469;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 444;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 333;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.asciitilde = 541;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 180;\n    t.quotedblleft = 444;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 453;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 444;\n    t.quotedblright = 444;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 444;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 889;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 444;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 564;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 444;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 444;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 444;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 444;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 444;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 444;\n    t.Amacron = 722;\n    t.rcaron = 333;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 556;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 588;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 564;\n    t.uacute = 500;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 444;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 722;\n    t.Iacute = 333;\n    t.plusminus = 564;\n    t.brokenbar = 200;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 333;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 326;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 444;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 344;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 722;\n    t.zdotaccent = 444;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 500;\n    t.minus = 564;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 564;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 1000;\n    t.ampersand = 833;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 930;\n    t.A = 722;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 778;\n    t.L = 667;\n    t.M = 944;\n    t.N = 722;\n    t.O = 778;\n    t.P = 611;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 556;\n    t.T = 667;\n    t.U = 722;\n    t.V = 722;\n    t.W = 1000;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 667;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 581;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 556;\n    t.c = 444;\n    t.d = 556;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 333;\n    t.k = 556;\n    t.l = 278;\n    t.m = 833;\n    t.n = 556;\n    t.o = 500;\n    t.p = 556;\n    t.q = 556;\n    t.r = 444;\n    t.s = 389;\n    t.t = 333;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 394;\n    t.bar = 220;\n    t.braceright = 394;\n    t.asciitilde = 520;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 540;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 300;\n    t.Lslash = 667;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 330;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 556;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 570;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 667;\n    t.Cacute = 722;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 722;\n    t.rcaron = 444;\n    t.ccedilla = 444;\n    t.Zdotaccent = 667;\n    t.Thorn = 611;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 556;\n    t.dcaron = 672;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 667;\n    t.partialdiff = 494;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 778;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 444;\n    t.omacron = 500;\n    t.Zacute = 667;\n    t.Zcaron = 667;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 416;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 300;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 394;\n    t.Kcommaaccent = 778;\n    t.Lacute = 667;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 667;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 444;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 667;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 444;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 556;\n    t.minus = 570;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 333;\n    t.logicalnot = 570;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 389;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 832;\n    t.A = 667;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 667;\n    t.F = 667;\n    t.G = 722;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 667;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 889;\n    t.X = 667;\n    t.Y = 611;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 570;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 556;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 556;\n    t.v = 444;\n    t.w = 667;\n    t.x = 500;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 348;\n    t.bar = 220;\n    t.braceright = 348;\n    t.asciitilde = 570;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 500;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 944;\n    t.ordfeminine = 266;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 300;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 611;\n    t.divide = 570;\n    t.Yacute = 611;\n    t.Acircumflex = 667;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 667;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 608;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 444;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 722;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 366;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 576;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 382;\n    t.Kcommaaccent = 667;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 500;\n    t.minus = 606;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 606;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 420;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 675;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 675;\n    t.equal = 675;\n    t.greater = 675;\n    t.question = 500;\n    t.at = 920;\n    t.A = 611;\n    t.B = 611;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 611;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 444;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 667;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 611;\n    t.S = 500;\n    t.T = 556;\n    t.U = 722;\n    t.V = 611;\n    t.W = 833;\n    t.X = 611;\n    t.Y = 556;\n    t.Z = 556;\n    t.bracketleft = 389;\n    t.backslash = 278;\n    t.bracketright = 389;\n    t.asciicircum = 422;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 278;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 444;\n    t.l = 278;\n    t.m = 722;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 444;\n    t.w = 667;\n    t.x = 444;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 400;\n    t.bar = 275;\n    t.braceright = 400;\n    t.asciitilde = 541;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 214;\n    t.quotedblleft = 556;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 523;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 556;\n    t.quotedblright = 556;\n    t.guillemotright = 500;\n    t.ellipsis = 889;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 889;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 556;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 667;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 556;\n    t.divide = 675;\n    t.Yacute = 556;\n    t.Acircumflex = 611;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 667;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 556;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 611;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 500;\n    t.Amacron = 611;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 556;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 611;\n    t.Sacute = 500;\n    t.dcaron = 544;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 611;\n    t.Abreve = 611;\n    t.multiply = 675;\n    t.uacute = 500;\n    t.Tcaron = 556;\n    t.partialdiff = 476;\n    t.ydieresis = 444;\n    t.Nacute = 667;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 667;\n    t.Iacute = 333;\n    t.plusminus = 675;\n    t.brokenbar = 275;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 556;\n    t.Zcaron = 556;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 300;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 611;\n    t.Adieresis = 611;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 500;\n    t.lcaron = 300;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 500;\n    t.Scommaaccent = 500;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 667;\n    t.otilde = 500;\n    t.Rcommaaccent = 611;\n    t.Lcommaaccent = 556;\n    t.Atilde = 611;\n    t.Aogonek = 611;\n    t.Aring = 611;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 444;\n    t.minus = 675;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 675;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t.ZapfDingbats = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.a1 = 974;\n    t.a2 = 961;\n    t.a202 = 974;\n    t.a3 = 980;\n    t.a4 = 719;\n    t.a5 = 789;\n    t.a119 = 790;\n    t.a118 = 791;\n    t.a117 = 690;\n    t.a11 = 960;\n    t.a12 = 939;\n    t.a13 = 549;\n    t.a14 = 855;\n    t.a15 = 911;\n    t.a16 = 933;\n    t.a105 = 911;\n    t.a17 = 945;\n    t.a18 = 974;\n    t.a19 = 755;\n    t.a20 = 846;\n    t.a21 = 762;\n    t.a22 = 761;\n    t.a23 = 571;\n    t.a24 = 677;\n    t.a25 = 763;\n    t.a26 = 760;\n    t.a27 = 759;\n    t.a28 = 754;\n    t.a6 = 494;\n    t.a7 = 552;\n    t.a8 = 537;\n    t.a9 = 577;\n    t.a10 = 692;\n    t.a29 = 786;\n    t.a30 = 788;\n    t.a31 = 788;\n    t.a32 = 790;\n    t.a33 = 793;\n    t.a34 = 794;\n    t.a35 = 816;\n    t.a36 = 823;\n    t.a37 = 789;\n    t.a38 = 841;\n    t.a39 = 823;\n    t.a40 = 833;\n    t.a41 = 816;\n    t.a42 = 831;\n    t.a43 = 923;\n    t.a44 = 744;\n    t.a45 = 723;\n    t.a46 = 749;\n    t.a47 = 790;\n    t.a48 = 792;\n    t.a49 = 695;\n    t.a50 = 776;\n    t.a51 = 768;\n    t.a52 = 792;\n    t.a53 = 759;\n    t.a54 = 707;\n    t.a55 = 708;\n    t.a56 = 682;\n    t.a57 = 701;\n    t.a58 = 826;\n    t.a59 = 815;\n    t.a60 = 789;\n    t.a61 = 789;\n    t.a62 = 707;\n    t.a63 = 687;\n    t.a64 = 696;\n    t.a65 = 689;\n    t.a66 = 786;\n    t.a67 = 787;\n    t.a68 = 713;\n    t.a69 = 791;\n    t.a70 = 785;\n    t.a71 = 791;\n    t.a72 = 873;\n    t.a73 = 761;\n    t.a74 = 762;\n    t.a203 = 762;\n    t.a75 = 759;\n    t.a204 = 759;\n    t.a76 = 892;\n    t.a77 = 892;\n    t.a78 = 788;\n    t.a79 = 784;\n    t.a81 = 438;\n    t.a82 = 138;\n    t.a83 = 277;\n    t.a84 = 415;\n    t.a97 = 392;\n    t.a98 = 392;\n    t.a99 = 668;\n    t.a100 = 668;\n    t.a89 = 390;\n    t.a90 = 390;\n    t.a93 = 317;\n    t.a94 = 317;\n    t.a91 = 276;\n    t.a92 = 276;\n    t.a205 = 509;\n    t.a85 = 509;\n    t.a206 = 410;\n    t.a86 = 410;\n    t.a87 = 234;\n    t.a88 = 234;\n    t.a95 = 334;\n    t.a96 = 334;\n    t.a101 = 732;\n    t.a102 = 544;\n    t.a103 = 544;\n    t.a104 = 910;\n    t.a106 = 667;\n    t.a107 = 760;\n    t.a108 = 760;\n    t.a112 = 776;\n    t.a111 = 595;\n    t.a110 = 694;\n    t.a109 = 626;\n    t.a120 = 788;\n    t.a121 = 788;\n    t.a122 = 788;\n    t.a123 = 788;\n    t.a124 = 788;\n    t.a125 = 788;\n    t.a126 = 788;\n    t.a127 = 788;\n    t.a128 = 788;\n    t.a129 = 788;\n    t.a130 = 788;\n    t.a131 = 788;\n    t.a132 = 788;\n    t.a133 = 788;\n    t.a134 = 788;\n    t.a135 = 788;\n    t.a136 = 788;\n    t.a137 = 788;\n    t.a138 = 788;\n    t.a139 = 788;\n    t.a140 = 788;\n    t.a141 = 788;\n    t.a142 = 788;\n    t.a143 = 788;\n    t.a144 = 788;\n    t.a145 = 788;\n    t.a146 = 788;\n    t.a147 = 788;\n    t.a148 = 788;\n    t.a149 = 788;\n    t.a150 = 788;\n    t.a151 = 788;\n    t.a152 = 788;\n    t.a153 = 788;\n    t.a154 = 788;\n    t.a155 = 788;\n    t.a156 = 788;\n    t.a157 = 788;\n    t.a158 = 788;\n    t.a159 = 788;\n    t.a160 = 894;\n    t.a161 = 838;\n    t.a163 = 1016;\n    t.a164 = 458;\n    t.a196 = 748;\n    t.a165 = 924;\n    t.a192 = 748;\n    t.a166 = 918;\n    t.a167 = 927;\n    t.a168 = 928;\n    t.a169 = 928;\n    t.a170 = 834;\n    t.a171 = 873;\n    t.a172 = 828;\n    t.a173 = 924;\n    t.a162 = 924;\n    t.a174 = 917;\n    t.a175 = 930;\n    t.a176 = 931;\n    t.a177 = 463;\n    t.a178 = 883;\n    t.a179 = 836;\n    t.a193 = 836;\n    t.a180 = 867;\n    t.a199 = 867;\n    t.a181 = 696;\n    t.a200 = 696;\n    t.a182 = 874;\n    t.a201 = 874;\n    t.a183 = 760;\n    t.a184 = 946;\n    t.a197 = 771;\n    t.a185 = 865;\n    t.a194 = 771;\n    t.a198 = 888;\n    t.a186 = 967;\n    t.a195 = 888;\n    t.a187 = 831;\n    t.a188 = 873;\n    t.a189 = 927;\n    t.a190 = 970;\n    t.a191 = 918;\n  });\n});\n\nconst getFontBasicMetrics = getLookupTableFactory(function (t) {\n  t.Courier = {\n    ascent: 629,\n    descent: -157,\n    capHeight: 562,\n    xHeight: -426,\n  };\n  t[\"Courier-Bold\"] = {\n    ascent: 629,\n    descent: -157,\n    capHeight: 562,\n    xHeight: 439,\n  };\n  t[\"Courier-Oblique\"] = {\n    ascent: 629,\n    descent: -157,\n    capHeight: 562,\n    xHeight: 426,\n  };\n  t[\"Courier-BoldOblique\"] = {\n    ascent: 629,\n    descent: -157,\n    capHeight: 562,\n    xHeight: 426,\n  };\n  t.Helvetica = {\n    ascent: 718,\n    descent: -207,\n    capHeight: 718,\n    xHeight: 523,\n  };\n  t[\"Helvetica-Bold\"] = {\n    ascent: 718,\n    descent: -207,\n    capHeight: 718,\n    xHeight: 532,\n  };\n  t[\"Helvetica-Oblique\"] = {\n    ascent: 718,\n    descent: -207,\n    capHeight: 718,\n    xHeight: 523,\n  };\n  t[\"Helvetica-BoldOblique\"] = {\n    ascent: 718,\n    descent: -207,\n    capHeight: 718,\n    xHeight: 532,\n  };\n  t[\"Times-Roman\"] = {\n    ascent: 683,\n    descent: -217,\n    capHeight: 662,\n    xHeight: 450,\n  };\n  t[\"Times-Bold\"] = {\n    ascent: 683,\n    descent: -217,\n    capHeight: 676,\n    xHeight: 461,\n  };\n  t[\"Times-Italic\"] = {\n    ascent: 683,\n    descent: -217,\n    capHeight: 653,\n    xHeight: 441,\n  };\n  t[\"Times-BoldItalic\"] = {\n    ascent: 683,\n    descent: -217,\n    capHeight: 669,\n    xHeight: 462,\n  };\n  t.Symbol = {\n    ascent: Math.NaN,\n    descent: Math.NaN,\n    capHeight: Math.NaN,\n    xHeight: Math.NaN,\n  };\n  t.ZapfDingbats = {\n    ascent: Math.NaN,\n    descent: Math.NaN,\n    capHeight: Math.NaN,\n    xHeight: Math.NaN,\n  };\n});\n\nexport { getFontBasicMetrics, getMetrics };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\n\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\n// const ROUND_XY_TO_GRID = 1 << 2;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\n// const USE_MY_METRICS = 1 << 9;\n// const OVERLAP_COMPOUND = 1 << 10;\n// const SCALED_COMPONENT_OFFSET = 1 << 11;\n// const UNSCALED_COMPONENT_OFFSET = 1 << 12;\n\n/**\n * GlyfTable object represents a glyf table containing glyph information:\n *  - glyph header (xMin, yMin, xMax, yMax);\n *  - contours if any;\n *  - components if the glyph is a composite.\n *\n * It's possible to re-scale each glyph in order to have a new font which\n * exactly fits an other one: the goal is to be able to build some substitution\n * font for well-known fonts (Myriad, Arial, ...).\n *\n * A full description of glyf table can be found here\n * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html\n */\nclass GlyfTable {\n  constructor({ glyfTable, isGlyphLocationsLong, locaTable, numGlyphs }) {\n    this.glyphs = [];\n    const loca = new DataView(\n      locaTable.buffer,\n      locaTable.byteOffset,\n      locaTable.byteLength\n    );\n    const glyf = new DataView(\n      glyfTable.buffer,\n      glyfTable.byteOffset,\n      glyfTable.byteLength\n    );\n    const offsetSize = isGlyphLocationsLong ? 4 : 2;\n    let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n    let pos = 0;\n    for (let i = 0; i < numGlyphs; i++) {\n      pos += offsetSize;\n      const next = isGlyphLocationsLong\n        ? loca.getUint32(pos)\n        : 2 * loca.getUint16(pos);\n      if (next === prev) {\n        this.glyphs.push(new Glyph({}));\n        continue;\n      }\n\n      const glyph = Glyph.parse(prev, glyf);\n      this.glyphs.push(glyph);\n\n      prev = next;\n    }\n  }\n\n  getSize() {\n    return this.glyphs.reduce((a, g) => {\n      const size = g.getSize();\n      // Round to next multiple of 4 if needed.\n      return a + ((size + 3) & ~3);\n    }, 0);\n  }\n\n  write() {\n    const totalSize = this.getSize();\n    const glyfTable = new DataView(new ArrayBuffer(totalSize));\n    const isLocationLong = totalSize > /* 0xffff * 2 */ 0x1fffe;\n    const offsetSize = isLocationLong ? 4 : 2;\n    const locaTable = new DataView(\n      new ArrayBuffer((this.glyphs.length + 1) * offsetSize)\n    );\n\n    if (isLocationLong) {\n      locaTable.setUint32(0, 0);\n    } else {\n      locaTable.setUint16(0, 0);\n    }\n\n    let pos = 0;\n    let locaIndex = 0;\n    for (const glyph of this.glyphs) {\n      pos += glyph.write(pos, glyfTable);\n      // Round to next multiple of 4 if needed.\n      pos = (pos + 3) & ~3;\n\n      locaIndex += offsetSize;\n      if (isLocationLong) {\n        locaTable.setUint32(locaIndex, pos);\n      } else {\n        locaTable.setUint16(locaIndex, pos >> 1);\n      }\n    }\n\n    return {\n      isLocationLong,\n      loca: new Uint8Array(locaTable.buffer),\n      glyf: new Uint8Array(glyfTable.buffer),\n    };\n  }\n\n  scale(factors) {\n    for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n      this.glyphs[i].scale(factors[i]);\n    }\n  }\n}\n\nclass Glyph {\n  constructor({ header = null, simple = null, composites = null }) {\n    this.header = header;\n    this.simple = simple;\n    this.composites = composites;\n  }\n\n  static parse(pos, glyf) {\n    const [read, header] = GlyphHeader.parse(pos, glyf);\n    pos += read;\n\n    if (header.numberOfContours < 0) {\n      // Composite glyph.\n      const composites = [];\n      while (true) {\n        const [n, composite] = CompositeGlyph.parse(pos, glyf);\n        pos += n;\n        composites.push(composite);\n        if (!(composite.flags & MORE_COMPONENTS)) {\n          break;\n        }\n      }\n\n      return new Glyph({ header, composites });\n    }\n\n    const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n\n    return new Glyph({ header, simple });\n  }\n\n  getSize() {\n    if (!this.header) {\n      return 0;\n    }\n    const size = this.simple\n      ? this.simple.getSize()\n      : this.composites.reduce((a, c) => a + c.getSize(), 0);\n    return this.header.getSize() + size;\n  }\n\n  write(pos, buf) {\n    if (!this.header) {\n      return 0;\n    }\n\n    const spos = pos;\n    pos += this.header.write(pos, buf);\n    if (this.simple) {\n      pos += this.simple.write(pos, buf);\n    } else {\n      for (const composite of this.composites) {\n        pos += composite.write(pos, buf);\n      }\n    }\n\n    return pos - spos;\n  }\n\n  scale(factor) {\n    if (!this.header) {\n      return;\n    }\n\n    const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n    this.header.scale(xMiddle, factor);\n    if (this.simple) {\n      this.simple.scale(xMiddle, factor);\n    } else {\n      for (const composite of this.composites) {\n        composite.scale(xMiddle, factor);\n      }\n    }\n  }\n}\n\nclass GlyphHeader {\n  constructor({ numberOfContours, xMin, yMin, xMax, yMax }) {\n    this.numberOfContours = numberOfContours;\n    this.xMin = xMin;\n    this.yMin = yMin;\n    this.xMax = xMax;\n    this.yMax = yMax;\n  }\n\n  static parse(pos, glyf) {\n    return [\n      10,\n      new GlyphHeader({\n        numberOfContours: glyf.getInt16(pos),\n        xMin: glyf.getInt16(pos + 2),\n        yMin: glyf.getInt16(pos + 4),\n        xMax: glyf.getInt16(pos + 6),\n        yMax: glyf.getInt16(pos + 8),\n      }),\n    ];\n  }\n\n  getSize() {\n    return 10;\n  }\n\n  write(pos, buf) {\n    buf.setInt16(pos, this.numberOfContours);\n    buf.setInt16(pos + 2, this.xMin);\n    buf.setInt16(pos + 4, this.yMin);\n    buf.setInt16(pos + 6, this.xMax);\n    buf.setInt16(pos + 8, this.yMax);\n\n    return 10;\n  }\n\n  scale(x, factor) {\n    this.xMin = Math.round(x + (this.xMin - x) * factor);\n    this.xMax = Math.round(x + (this.xMax - x) * factor);\n  }\n}\n\nclass Contour {\n  constructor({ flags, xCoordinates, yCoordinates }) {\n    this.xCoordinates = xCoordinates;\n    this.yCoordinates = yCoordinates;\n    this.flags = flags;\n  }\n}\n\nclass SimpleGlyph {\n  constructor({ contours, instructions }) {\n    this.contours = contours;\n    this.instructions = instructions;\n  }\n\n  static parse(pos, glyf, numberOfContours) {\n    const endPtsOfContours = [];\n    for (let i = 0; i < numberOfContours; i++) {\n      const endPt = glyf.getUint16(pos);\n      pos += 2;\n      endPtsOfContours.push(endPt);\n    }\n    const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n    const instructionLength = glyf.getUint16(pos);\n    pos += 2;\n    const instructions = new Uint8Array(glyf).slice(\n      pos,\n      pos + instructionLength\n    );\n    pos += instructionLength;\n\n    const flags = [];\n    for (let i = 0; i < numberOfPt; pos++, i++) {\n      let flag = glyf.getUint8(pos);\n      flags.push(flag);\n      if (flag & REPEAT_FLAG) {\n        const count = glyf.getUint8(++pos);\n        flag ^= REPEAT_FLAG;\n        for (let m = 0; m < count; m++) {\n          flags.push(flag);\n        }\n        i += count;\n      }\n    }\n\n    const allXCoordinates = [];\n    let xCoordinates = [];\n    let yCoordinates = [];\n    let pointFlags = [];\n    const contours = [];\n    let endPtsOfContoursIndex = 0;\n    let lastCoordinate = 0;\n\n    // Get x coordinates.\n    for (let i = 0; i < numberOfPt; i++) {\n      const flag = flags[i];\n      if (flag & X_SHORT_VECTOR) {\n        // 8-bits unsigned value.\n        const x = glyf.getUint8(pos++);\n        lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n        xCoordinates.push(lastCoordinate);\n      } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n        // IS_SAME.\n        xCoordinates.push(lastCoordinate);\n      } else {\n        lastCoordinate += glyf.getInt16(pos);\n        pos += 2;\n        xCoordinates.push(lastCoordinate);\n      }\n\n      if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n        // Next entry is the first one of a new contour.\n        endPtsOfContoursIndex++;\n        allXCoordinates.push(xCoordinates);\n        xCoordinates = [];\n      }\n    }\n\n    lastCoordinate = 0;\n    endPtsOfContoursIndex = 0;\n    for (let i = 0; i < numberOfPt; i++) {\n      const flag = flags[i];\n      if (flag & Y_SHORT_VECTOR) {\n        // 8-bits unsigned value.\n        const y = glyf.getUint8(pos++);\n        lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n        yCoordinates.push(lastCoordinate);\n      } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n        // IS_SAME.\n        yCoordinates.push(lastCoordinate);\n      } else {\n        lastCoordinate += glyf.getInt16(pos);\n        pos += 2;\n        yCoordinates.push(lastCoordinate);\n      }\n\n      pointFlags.push((flag & ON_CURVE_POINT) | (flag & OVERLAP_SIMPLE));\n\n      if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n        // Next entry is the first one of a new contour.\n        xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n        endPtsOfContoursIndex++;\n        contours.push(\n          new Contour({\n            flags: pointFlags,\n            xCoordinates,\n            yCoordinates,\n          })\n        );\n        yCoordinates = [];\n        pointFlags = [];\n      }\n    }\n\n    return new SimpleGlyph({\n      contours,\n      instructions,\n    });\n  }\n\n  getSize() {\n    let size = this.contours.length * 2 + 2 + this.instructions.length;\n    let lastX = 0;\n    let lastY = 0;\n    for (const contour of this.contours) {\n      size += contour.flags.length;\n      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n        const x = contour.xCoordinates[i];\n        const y = contour.yCoordinates[i];\n        let abs = Math.abs(x - lastX);\n        if (abs > 255) {\n          size += 2;\n        } else if (abs > 0) {\n          size += 1;\n        }\n        lastX = x;\n\n        abs = Math.abs(y - lastY);\n        if (abs > 255) {\n          size += 2;\n        } else if (abs > 0) {\n          size += 1;\n        }\n        lastY = y;\n      }\n    }\n    return size;\n  }\n\n  write(pos, buf) {\n    const spos = pos;\n    const xCoordinates = [];\n    const yCoordinates = [];\n    const flags = [];\n    let lastX = 0;\n    let lastY = 0;\n\n    for (const contour of this.contours) {\n      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n        let flag = contour.flags[i];\n        const x = contour.xCoordinates[i];\n        let delta = x - lastX;\n        if (delta === 0) {\n          flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n          xCoordinates.push(0);\n        } else {\n          const abs = Math.abs(delta);\n          if (abs <= 255) {\n            flag |=\n              delta >= 0\n                ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\n                : X_SHORT_VECTOR;\n            xCoordinates.push(abs);\n          } else {\n            xCoordinates.push(delta);\n          }\n        }\n        lastX = x;\n\n        const y = contour.yCoordinates[i];\n        delta = y - lastY;\n        if (delta === 0) {\n          flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n          yCoordinates.push(0);\n        } else {\n          const abs = Math.abs(delta);\n          if (abs <= 255) {\n            flag |=\n              delta >= 0\n                ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\n                : Y_SHORT_VECTOR;\n            yCoordinates.push(abs);\n          } else {\n            yCoordinates.push(delta);\n          }\n        }\n        lastY = y;\n\n        flags.push(flag);\n      }\n\n      // Write endPtsOfContours entry.\n      buf.setUint16(pos, xCoordinates.length - 1);\n      pos += 2;\n    }\n\n    // Write instructionLength.\n    buf.setUint16(pos, this.instructions.length);\n    pos += 2;\n    if (this.instructions.length) {\n      // Write instructions.\n      new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n        this.instructions,\n        pos\n      );\n      pos += this.instructions.length;\n    }\n\n    // Write flags.\n    for (const flag of flags) {\n      buf.setUint8(pos++, flag);\n    }\n\n    // Write xCoordinates.\n    for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n      const x = xCoordinates[i];\n      const flag = flags[i];\n      if (flag & X_SHORT_VECTOR) {\n        buf.setUint8(pos++, x);\n      } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n        buf.setInt16(pos, x);\n        pos += 2;\n      }\n    }\n\n    // Write yCoordinates.\n    for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n      const y = yCoordinates[i];\n      const flag = flags[i];\n      if (flag & Y_SHORT_VECTOR) {\n        buf.setUint8(pos++, y);\n      } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n        buf.setInt16(pos, y);\n        pos += 2;\n      }\n    }\n\n    return pos - spos;\n  }\n\n  scale(x, factor) {\n    for (const contour of this.contours) {\n      if (contour.xCoordinates.length === 0) {\n        continue;\n      }\n\n      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n        contour.xCoordinates[i] = Math.round(\n          x + (contour.xCoordinates[i] - x) * factor\n        );\n      }\n    }\n  }\n}\n\nclass CompositeGlyph {\n  constructor({\n    flags,\n    glyphIndex,\n    argument1,\n    argument2,\n    transf,\n    instructions,\n  }) {\n    this.flags = flags;\n    this.glyphIndex = glyphIndex;\n    this.argument1 = argument1;\n    this.argument2 = argument2;\n    this.transf = transf;\n    this.instructions = instructions;\n  }\n\n  static parse(pos, glyf) {\n    const spos = pos;\n    const transf = [];\n    let flags = glyf.getUint16(pos);\n    const glyphIndex = glyf.getUint16(pos + 2);\n    pos += 4;\n\n    let argument1, argument2;\n    if (flags & ARG_1_AND_2_ARE_WORDS) {\n      if (flags & ARGS_ARE_XY_VALUES) {\n        argument1 = glyf.getInt16(pos);\n        argument2 = glyf.getInt16(pos + 2);\n      } else {\n        argument1 = glyf.getUint16(pos);\n        argument2 = glyf.getUint16(pos + 2);\n      }\n      pos += 4;\n      flags ^= ARG_1_AND_2_ARE_WORDS;\n    } else {\n      if (flags & ARGS_ARE_XY_VALUES) {\n        argument1 = glyf.getInt8(pos);\n        argument2 = glyf.getInt8(pos + 1);\n      } else {\n        argument1 = glyf.getUint8(pos);\n        argument2 = glyf.getUint8(pos + 1);\n      }\n      pos += 2;\n    }\n\n    if (flags & WE_HAVE_A_SCALE) {\n      // Single F2.14.\n      transf.push(glyf.getUint16(pos));\n      pos += 2;\n    } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n      // Two F2.14.\n      transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n      pos += 4;\n    } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n      // Four F2.14.\n      transf.push(\n        glyf.getUint16(pos),\n        glyf.getUint16(pos + 2),\n        glyf.getUint16(pos + 4),\n        glyf.getUint16(pos + 6)\n      );\n      pos += 8;\n    }\n\n    let instructions = null;\n    if (flags & WE_HAVE_INSTRUCTIONS) {\n      const instructionLength = glyf.getUint16(pos);\n      pos += 2;\n      instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n      pos += instructionLength;\n    }\n\n    return [\n      pos - spos,\n      new CompositeGlyph({\n        flags,\n        glyphIndex,\n        argument1,\n        argument2,\n        transf,\n        instructions,\n      }),\n    ];\n  }\n\n  getSize() {\n    let size = 2 + 2 + this.transf.length * 2;\n    if (this.flags & WE_HAVE_INSTRUCTIONS) {\n      size += 2 + this.instructions.length;\n    }\n\n    size += 2;\n    if (this.flags & 2) {\n      // Arguments are signed.\n      if (\n        !(\n          this.argument1 >= -128 &&\n          this.argument1 <= 127 &&\n          this.argument2 >= -128 &&\n          this.argument2 <= 127\n        )\n      ) {\n        size += 2;\n      }\n    } else {\n      if (\n        !(\n          this.argument1 >= 0 &&\n          this.argument1 <= 255 &&\n          this.argument2 >= 0 &&\n          this.argument2 <= 255\n        )\n      ) {\n        size += 2;\n      }\n    }\n\n    return size;\n  }\n\n  write(pos, buf) {\n    const spos = pos;\n\n    if (this.flags & ARGS_ARE_XY_VALUES) {\n      // Arguments are signed.\n      if (\n        !(\n          this.argument1 >= -128 &&\n          this.argument1 <= 127 &&\n          this.argument2 >= -128 &&\n          this.argument2 <= 127\n        )\n      ) {\n        this.flags |= ARG_1_AND_2_ARE_WORDS;\n      }\n    } else {\n      if (\n        !(\n          this.argument1 >= 0 &&\n          this.argument1 <= 255 &&\n          this.argument2 >= 0 &&\n          this.argument2 <= 255\n        )\n      ) {\n        this.flags |= ARG_1_AND_2_ARE_WORDS;\n      }\n    }\n\n    buf.setUint16(pos, this.flags);\n    buf.setUint16(pos + 2, this.glyphIndex);\n    pos += 4;\n\n    if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n      if (this.flags & ARGS_ARE_XY_VALUES) {\n        buf.setInt16(pos, this.argument1);\n        buf.setInt16(pos + 2, this.argument2);\n      } else {\n        buf.setUint16(pos, this.argument1);\n        buf.setUint16(pos + 2, this.argument2);\n      }\n      pos += 4;\n    } else {\n      buf.setUint8(pos, this.argument1);\n      buf.setUint8(pos + 1, this.argument2);\n      pos += 2;\n    }\n\n    if (this.flags & WE_HAVE_INSTRUCTIONS) {\n      buf.setUint16(pos, this.instructions.length);\n      pos += 2;\n      // Write instructions.\n      if (this.instructions.length) {\n        new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n          this.instructions,\n          pos\n        );\n        pos += this.instructions.length;\n      }\n    }\n\n    return pos - spos;\n  }\n\n  scale(x, factor) {}\n}\n\nexport { GlyfTable };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { readUint32 } from \"./core_utils.js\";\nimport { string32 } from \"../shared/util.js\";\n\nfunction writeInt16(dest, offset, num) {\n  dest[offset] = (num >> 8) & 0xff;\n  dest[offset + 1] = num & 0xff;\n}\n\nfunction writeInt32(dest, offset, num) {\n  dest[offset] = (num >> 24) & 0xff;\n  dest[offset + 1] = (num >> 16) & 0xff;\n  dest[offset + 2] = (num >> 8) & 0xff;\n  dest[offset + 3] = num & 0xff;\n}\n\nfunction writeData(dest, offset, data) {\n  if (data instanceof Uint8Array) {\n    dest.set(data, offset);\n  } else if (typeof data === \"string\") {\n    for (let i = 0, ii = data.length; i < ii; i++) {\n      dest[offset++] = data.charCodeAt(i) & 0xff;\n    }\n  } else {\n    // treating everything else as array\n    for (let i = 0, ii = data.length; i < ii; i++) {\n      dest[offset++] = data[i] & 0xff;\n    }\n  }\n}\n\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\n\nclass OpenTypeFileBuilder {\n  constructor(sfnt) {\n    this.sfnt = sfnt;\n    this.tables = Object.create(null);\n  }\n\n  static getSearchParams(entriesCount, entrySize) {\n    let maxPower2 = 1,\n      log2 = 0;\n    while ((maxPower2 ^ entriesCount) > maxPower2) {\n      maxPower2 <<= 1;\n      log2++;\n    }\n    const searchRange = maxPower2 * entrySize;\n    return {\n      range: searchRange,\n      entry: log2,\n      rangeShift: entrySize * entriesCount - searchRange,\n    };\n  }\n\n  toArray() {\n    let sfnt = this.sfnt;\n\n    // Tables needs to be written by ascendant alphabetic order\n    const tables = this.tables;\n    const tablesNames = Object.keys(tables);\n    tablesNames.sort();\n    const numTables = tablesNames.length;\n\n    let i, j, jj, table, tableName;\n    // layout the tables data\n    let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n    const tableOffsets = [offset];\n    for (i = 0; i < numTables; i++) {\n      table = tables[tablesNames[i]];\n      const paddedLength = ((table.length + 3) & ~3) >>> 0;\n      offset += paddedLength;\n      tableOffsets.push(offset);\n    }\n\n    const file = new Uint8Array(offset);\n    // write the table data first (mostly for checksum)\n    for (i = 0; i < numTables; i++) {\n      table = tables[tablesNames[i]];\n      writeData(file, tableOffsets[i], table);\n    }\n\n    // sfnt version (4 bytes)\n    if (sfnt === \"true\") {\n      // Windows hates the Mac TrueType sfnt version number\n      sfnt = string32(0x00010000);\n    }\n    file[0] = sfnt.charCodeAt(0) & 0xff;\n    file[1] = sfnt.charCodeAt(1) & 0xff;\n    file[2] = sfnt.charCodeAt(2) & 0xff;\n    file[3] = sfnt.charCodeAt(3) & 0xff;\n\n    // numTables (2 bytes)\n    writeInt16(file, 4, numTables);\n\n    const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n    // searchRange (2 bytes)\n    writeInt16(file, 6, searchParams.range);\n    // entrySelector (2 bytes)\n    writeInt16(file, 8, searchParams.entry);\n    // rangeShift (2 bytes)\n    writeInt16(file, 10, searchParams.rangeShift);\n\n    offset = OTF_HEADER_SIZE;\n    // writing table entries\n    for (i = 0; i < numTables; i++) {\n      tableName = tablesNames[i];\n      file[offset] = tableName.charCodeAt(0) & 0xff;\n      file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n      file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n      file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n\n      // checksum\n      let checksum = 0;\n      for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n        const quad = readUint32(file, j);\n        checksum = (checksum + quad) >>> 0;\n      }\n      writeInt32(file, offset + 4, checksum);\n\n      // offset\n      writeInt32(file, offset + 8, tableOffsets[i]);\n      // length\n      writeInt32(file, offset + 12, tables[tableName].length);\n\n      offset += OTF_TABLE_ENTRY_SIZE;\n    }\n    return file;\n  }\n\n  addTable(tag, data) {\n    if (tag in this.tables) {\n      throw new Error(\"Table \" + tag + \" already exists\");\n    }\n    this.tables[tag] = data;\n  }\n}\n\nexport { OpenTypeFileBuilder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  CFF,\n  CFFCharset,\n  CFFCompiler,\n  CFFHeader,\n  CFFIndex,\n  CFFPrivateDict,\n  CFFStandardStrings,\n  CFFStrings,\n  CFFTopDict,\n} from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction findBlock(streamBytes, signature, startIndex) {\n  const streamBytesLength = streamBytes.length;\n  const signatureLength = signature.length;\n  const scanLength = streamBytesLength - signatureLength;\n\n  let i = startIndex,\n    found = false;\n  while (i < scanLength) {\n    let j = 0;\n    while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n      j++;\n    }\n    if (j >= signatureLength) {\n      // `signature` found, skip over whitespace.\n      i += j;\n      while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n        i++;\n      }\n      found = true;\n      break;\n    }\n    i++;\n  }\n  return {\n    found,\n    length: i,\n  };\n}\n\nfunction getHeaderBlock(stream, suggestedLength) {\n  const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n  const streamStartPos = stream.pos; // Save the initial stream position.\n  let headerBytes, headerBytesLength, block;\n  try {\n    headerBytes = stream.getBytes(suggestedLength);\n    headerBytesLength = headerBytes.length;\n  } catch (ex) {\n    // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n    // cannot hold the result of `getBytes`, and fallback to simply checking\n    // the entire stream (fixes issue3928.pdf).\n  }\n\n  if (headerBytesLength === suggestedLength) {\n    // Most of the time `suggestedLength` is correct, so to speed things up we\n    // initially only check the last few bytes to see if the header was found.\n    // Otherwise we (potentially) check the entire stream to prevent errors in\n    // `Type1Parser` (fixes issue5686.pdf).\n    block = findBlock(\n      headerBytes,\n      EEXEC_SIGNATURE,\n      suggestedLength - 2 * EEXEC_SIGNATURE.length\n    );\n\n    if (block.found && block.length === suggestedLength) {\n      return {\n        stream: new Stream(headerBytes),\n        length: suggestedLength,\n      };\n    }\n  }\n  warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n  stream.pos = streamStartPos; // Reset the stream position.\n\n  const SCAN_BLOCK_LENGTH = 2048;\n  let actualLength;\n  while (true) {\n    const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n    block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n    if (block.length === 0) {\n      break;\n    }\n    stream.pos += block.length; // Update the stream position.\n\n    if (block.found) {\n      actualLength = stream.pos - streamStartPos;\n      break;\n    }\n  }\n  stream.pos = streamStartPos; // Reset the stream position.\n\n  if (actualLength) {\n    return {\n      stream: new Stream(stream.getBytes(actualLength)),\n      length: actualLength,\n    };\n  }\n  warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n  return {\n    stream: new Stream(stream.getBytes(suggestedLength)),\n    length: suggestedLength,\n  };\n}\n\nfunction getEexecBlock(stream, suggestedLength) {\n  // We should ideally parse the eexec block to ensure that `suggestedLength`\n  // is correct, so we don't truncate the block data if it's too small.\n  // However, this would also require checking if the fixed-content portion\n  // exists (using the 'Length3' property), and ensuring that it's valid.\n  //\n  // Given that `suggestedLength` almost always is correct, all the validation\n  // would require a great deal of unnecessary parsing for most fonts.\n  // To save time, we always fetch the entire stream instead, which also avoid\n  // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n  //\n  // NOTE: This means that the function can include the fixed-content portion\n  // in the returned eexec block. In practice this does *not* seem to matter,\n  // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n  const eexecBytes = stream.getBytes();\n  return {\n    stream: new Stream(eexecBytes),\n    length: eexecBytes.length,\n  };\n}\n\n/**\n * Type1Font is also a CIDFontType0.\n */\nclass Type1Font {\n  constructor(name, file, properties) {\n    // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n    // Also, length1 and length2 might be off by 6 bytes as well.\n    // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n    const PFB_HEADER_SIZE = 6;\n    let headerBlockLength = properties.length1;\n    let eexecBlockLength = properties.length2;\n    let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n    const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n    if (pfbHeaderPresent) {\n      file.skip(PFB_HEADER_SIZE);\n      headerBlockLength =\n        (pfbHeader[5] << 24) |\n        (pfbHeader[4] << 16) |\n        (pfbHeader[3] << 8) |\n        pfbHeader[2];\n    }\n\n    // Get the data block containing glyphs and subrs information\n    const headerBlock = getHeaderBlock(file, headerBlockLength);\n    const headerBlockParser = new Type1Parser(\n      headerBlock.stream,\n      false,\n      SEAC_ANALYSIS_ENABLED\n    );\n    headerBlockParser.extractFontHeader(properties);\n\n    if (pfbHeaderPresent) {\n      pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n      eexecBlockLength =\n        (pfbHeader[5] << 24) |\n        (pfbHeader[4] << 16) |\n        (pfbHeader[3] << 8) |\n        pfbHeader[2];\n    }\n\n    // Decrypt the data blocks and retrieve it's content\n    const eexecBlock = getEexecBlock(file, eexecBlockLength);\n    const eexecBlockParser = new Type1Parser(\n      eexecBlock.stream,\n      true,\n      SEAC_ANALYSIS_ENABLED\n    );\n    const data = eexecBlockParser.extractFontProgram(properties);\n    for (const key in data.properties) {\n      properties[key] = data.properties[key];\n    }\n\n    const charstrings = data.charstrings;\n    const type2Charstrings = this.getType2Charstrings(charstrings);\n    const subrs = this.getType2Subrs(data.subrs);\n\n    this.charstrings = charstrings;\n    this.data = this.wrap(\n      name,\n      type2Charstrings,\n      this.charstrings,\n      subrs,\n      properties\n    );\n    this.seacs = this.getSeacs(data.charstrings);\n  }\n\n  get numGlyphs() {\n    return this.charstrings.length + 1;\n  }\n\n  getCharset() {\n    const charset = [\".notdef\"];\n    const charstrings = this.charstrings;\n    for (let glyphId = 0; glyphId < charstrings.length; glyphId++) {\n      charset.push(charstrings[glyphId].glyphName);\n    }\n    return charset;\n  }\n\n  getGlyphMapping(properties) {\n    const charstrings = this.charstrings;\n\n    if (properties.composite) {\n      const charCodeToGlyphId = Object.create(null);\n      // Map CIDs directly to GIDs.\n      for (\n        let glyphId = 0, charstringsLen = charstrings.length;\n        glyphId < charstringsLen;\n        glyphId++\n      ) {\n        const charCode = properties.cMap.charCodeOf(glyphId);\n        // Add 1 because glyph 0 is duplicated.\n        charCodeToGlyphId[charCode] = glyphId + 1;\n      }\n      return charCodeToGlyphId;\n    }\n\n    const glyphNames = [\".notdef\"];\n    let builtInEncoding, glyphId;\n    for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n      glyphNames.push(charstrings[glyphId].glyphName);\n    }\n    const encoding = properties.builtInEncoding;\n    if (encoding) {\n      builtInEncoding = Object.create(null);\n      for (const charCode in encoding) {\n        glyphId = glyphNames.indexOf(encoding[charCode]);\n        if (glyphId >= 0) {\n          builtInEncoding[charCode] = glyphId;\n        }\n      }\n    }\n\n    return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n  }\n\n  hasGlyphId(id) {\n    if (id < 0 || id >= this.numGlyphs) {\n      return false;\n    }\n    if (id === 0) {\n      // notdef is always defined.\n      return true;\n    }\n    const glyph = this.charstrings[id - 1];\n    return glyph.charstring.length > 0;\n  }\n\n  getSeacs(charstrings) {\n    const seacMap = [];\n    for (let i = 0, ii = charstrings.length; i < ii; i++) {\n      const charstring = charstrings[i];\n      if (charstring.seac) {\n        // Offset by 1 for .notdef\n        seacMap[i + 1] = charstring.seac;\n      }\n    }\n    return seacMap;\n  }\n\n  getType2Charstrings(type1Charstrings) {\n    const type2Charstrings = [];\n    for (let i = 0, ii = type1Charstrings.length; i < ii; i++) {\n      type2Charstrings.push(type1Charstrings[i].charstring);\n    }\n    return type2Charstrings;\n  }\n\n  getType2Subrs(type1Subrs) {\n    let bias = 0;\n    const count = type1Subrs.length;\n    if (count < 1133) {\n      bias = 107;\n    } else if (count < 33769) {\n      bias = 1131;\n    } else {\n      bias = 32768;\n    }\n\n    // Add a bunch of empty subrs to deal with the Type2 bias\n    const type2Subrs = [];\n    let i;\n    for (i = 0; i < bias; i++) {\n      type2Subrs.push([0x0b]);\n    }\n\n    for (i = 0; i < count; i++) {\n      type2Subrs.push(type1Subrs[i]);\n    }\n\n    return type2Subrs;\n  }\n\n  wrap(name, glyphs, charstrings, subrs, properties) {\n    const cff = new CFF();\n    cff.header = new CFFHeader(1, 0, 4, 4);\n\n    cff.names = [name];\n\n    const topDict = new CFFTopDict();\n    // CFF strings IDs 0...390 are predefined names, so refering\n    // to entries in our own String INDEX starts at SID 391.\n    topDict.setByName(\"version\", 391);\n    topDict.setByName(\"Notice\", 392);\n    topDict.setByName(\"FullName\", 393);\n    topDict.setByName(\"FamilyName\", 394);\n    topDict.setByName(\"Weight\", 395);\n    topDict.setByName(\"Encoding\", null); // placeholder\n    topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n    topDict.setByName(\"FontBBox\", properties.bbox);\n    topDict.setByName(\"charset\", null); // placeholder\n    topDict.setByName(\"CharStrings\", null); // placeholder\n    topDict.setByName(\"Private\", null); // placeholder\n    cff.topDict = topDict;\n\n    const strings = new CFFStrings();\n    strings.add(\"Version 0.11\"); // Version\n    strings.add(\"See original notice\"); // Notice\n    strings.add(name); // FullName\n    strings.add(name); // FamilyName\n    strings.add(\"Medium\"); // Weight\n    cff.strings = strings;\n\n    cff.globalSubrIndex = new CFFIndex();\n\n    const count = glyphs.length;\n    const charsetArray = [\".notdef\"];\n    let i, ii;\n    for (i = 0; i < count; i++) {\n      const glyphName = charstrings[i].glyphName;\n      const index = CFFStandardStrings.indexOf(glyphName);\n      if (index === -1) {\n        strings.add(glyphName);\n      }\n      charsetArray.push(glyphName);\n    }\n    cff.charset = new CFFCharset(false, 0, charsetArray);\n\n    const charStringsIndex = new CFFIndex();\n    charStringsIndex.add([0x8b, 0x0e]); // .notdef\n    for (i = 0; i < count; i++) {\n      charStringsIndex.add(glyphs[i]);\n    }\n    cff.charStrings = charStringsIndex;\n\n    const privateDict = new CFFPrivateDict();\n    privateDict.setByName(\"Subrs\", null); // placeholder\n    const fields = [\n      \"BlueValues\",\n      \"OtherBlues\",\n      \"FamilyBlues\",\n      \"FamilyOtherBlues\",\n      \"StemSnapH\",\n      \"StemSnapV\",\n      \"BlueShift\",\n      \"BlueFuzz\",\n      \"BlueScale\",\n      \"LanguageGroup\",\n      \"ExpansionFactor\",\n      \"ForceBold\",\n      \"StdHW\",\n      \"StdVW\",\n    ];\n    for (i = 0, ii = fields.length; i < ii; i++) {\n      const field = fields[i];\n      if (!(field in properties.privateData)) {\n        continue;\n      }\n      const value = properties.privateData[field];\n      if (Array.isArray(value)) {\n        // All of the private dictionary array data in CFF must be stored as\n        // \"delta-encoded\" numbers.\n        for (let j = value.length - 1; j > 0; j--) {\n          value[j] -= value[j - 1]; // ... difference from previous value\n        }\n      }\n      privateDict.setByName(field, value);\n    }\n    cff.topDict.privateDict = privateDict;\n\n    const subrIndex = new CFFIndex();\n    for (i = 0, ii = subrs.length; i < ii; i++) {\n      subrIndex.add(subrs[i]);\n    }\n    privateDict.subrsIndex = subrIndex;\n\n    const compiler = new CFFCompiler(cff);\n    return compiler.compile();\n  }\n}\n\nexport { Type1Font };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getEncoding } from \"./encodings.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { warn } from \"../shared/util.js\";\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nconst HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n *  A CharString byte containing the values from 32 through 255 inclusive\n *  indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n *  CharStrings commands are encoded in 1 or 2 bytes.\n *\n *  Single byte commands are encoded in 1 byte that contains a value between\n *  0 and 31 inclusive.\n *  If a command byte contains the value 12, then the value in the next byte\n *  indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nconst Type1CharString = (function Type1CharStringClosure() {\n  const COMMAND_MAP = {\n    hstem: [1],\n    vstem: [3],\n    vmoveto: [4],\n    rlineto: [5],\n    hlineto: [6],\n    vlineto: [7],\n    rrcurveto: [8],\n    callsubr: [10],\n    flex: [12, 35],\n    drop: [12, 18],\n    endchar: [14],\n    rmoveto: [21],\n    hmoveto: [22],\n    vhcurveto: [30],\n    hvcurveto: [31],\n  };\n\n  // eslint-disable-next-line no-shadow\n  class Type1CharString {\n    constructor() {\n      this.width = 0;\n      this.lsb = 0;\n      this.flexing = false;\n      this.output = [];\n      this.stack = [];\n    }\n\n    convert(encoded, subrs, seacAnalysisEnabled) {\n      const count = encoded.length;\n      let error = false;\n      let wx, sbx, subrNumber;\n      for (let i = 0; i < count; i++) {\n        let value = encoded[i];\n        if (value < 32) {\n          if (value === 12) {\n            value = (value << 8) + encoded[++i];\n          }\n          switch (value) {\n            case 1: // hstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case 3: // vstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case 4: // vmoveto\n              if (this.flexing) {\n                if (this.stack.length < 1) {\n                  error = true;\n                  break;\n                }\n                // Add the dx for flex and but also swap the values so they are\n                // the right order.\n                const dy = this.stack.pop();\n                this.stack.push(0, dy);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n              break;\n            case 5: // rlineto\n              error = this.executeCommand(2, COMMAND_MAP.rlineto);\n              break;\n            case 6: // hlineto\n              error = this.executeCommand(1, COMMAND_MAP.hlineto);\n              break;\n            case 7: // vlineto\n              error = this.executeCommand(1, COMMAND_MAP.vlineto);\n              break;\n            case 8: // rrcurveto\n              error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n              break;\n            case 9: // closepath\n              // closepath is a Type1 command that does not take argument and is\n              // useless in Type2 and it can simply be ignored.\n              this.stack = [];\n              break;\n            case 10: // callsubr\n              if (this.stack.length < 1) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              if (!subrs[subrNumber]) {\n                error = true;\n                break;\n              }\n              error = this.convert(\n                subrs[subrNumber],\n                subrs,\n                seacAnalysisEnabled\n              );\n              break;\n            case 11: // return\n              return error;\n            case 13: // hsbw\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use hmoveto with lsb.\n              wx = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx);\n              error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n              break;\n            case 14: // endchar\n              this.output.push(COMMAND_MAP.endchar[0]);\n              break;\n            case 21: // rmoveto\n              if (this.flexing) {\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n              break;\n            case 22: // hmoveto\n              if (this.flexing) {\n                // Add the dy for flex.\n                this.stack.push(0);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n              break;\n            case 30: // vhcurveto\n              error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n              break;\n            case 31: // hvcurveto\n              error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n              break;\n            case (12 << 8) + 0: // dotsection\n              // dotsection is a Type1 command to specify some hinting feature\n              // for dots that do not take a parameter and it can safely be\n              // ignored for Type2.\n              this.stack = [];\n              break;\n            case (12 << 8) + 1: // vstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n              // multiple parameters, so instead of returning [vh]stem3 take a\n              // shortcut and return [vhstem] instead.\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case (12 << 8) + 2: // hstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // See vstem3.\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case (12 << 8) + 6: // seac\n              // seac is like type 2's special endchar but it doesn't use the\n              // first argument asb, so remove it.\n              if (seacAnalysisEnabled) {\n                const asb = this.stack[this.stack.length - 5];\n                this.seac = this.stack.splice(-4, 4);\n                this.seac[0] += this.lsb - asb;\n                error = this.executeCommand(0, COMMAND_MAP.endchar);\n              } else {\n                error = this.executeCommand(4, COMMAND_MAP.endchar);\n              }\n              break;\n            case (12 << 8) + 7: // sbw\n              if (this.stack.length < 4) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use rmoveto with\n              // (dx, dy). The height argument will not be used for vmtx and\n              // vhea tables reconstruction -- ignoring it.\n              this.stack.pop(); // wy\n              wx = this.stack.pop();\n              const sby = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx, sby);\n              error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n              break;\n            case (12 << 8) + 12: // div\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              const num2 = this.stack.pop();\n              const num1 = this.stack.pop();\n              this.stack.push(num1 / num2);\n              break;\n            case (12 << 8) + 16: // callothersubr\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              const numArgs = this.stack.pop();\n              if (subrNumber === 0 && numArgs === 3) {\n                const flexArgs = this.stack.splice(this.stack.length - 17, 17);\n                this.stack.push(\n                  flexArgs[2] + flexArgs[0], // bcp1x + rpx\n                  flexArgs[3] + flexArgs[1], // bcp1y + rpy\n                  flexArgs[4], // bcp2x\n                  flexArgs[5], // bcp2y\n                  flexArgs[6], // p2x\n                  flexArgs[7], // p2y\n                  flexArgs[8], // bcp3x\n                  flexArgs[9], // bcp3y\n                  flexArgs[10], // bcp4x\n                  flexArgs[11], // bcp4y\n                  flexArgs[12], // p3x\n                  flexArgs[13], // p3y\n                  flexArgs[14] // flexDepth\n                  // 15 = finalx unused by flex\n                  // 16 = finaly unused by flex\n                );\n                error = this.executeCommand(13, COMMAND_MAP.flex, true);\n                this.flexing = false;\n                this.stack.push(flexArgs[15], flexArgs[16]);\n              } else if (subrNumber === 1 && numArgs === 0) {\n                this.flexing = true;\n              }\n              break;\n            case (12 << 8) + 17: // pop\n              // Ignore this since it is only used with othersubr.\n              break;\n            case (12 << 8) + 33: // setcurrentpoint\n              // Ignore for now.\n              this.stack = [];\n              break;\n            default:\n              warn('Unknown type 1 charstring command of \"' + value + '\"');\n              break;\n          }\n          if (error) {\n            break;\n          }\n          continue;\n        } else if (value <= 246) {\n          value -= 139;\n        } else if (value <= 250) {\n          value = (value - 247) * 256 + encoded[++i] + 108;\n        } else if (value <= 254) {\n          value = -((value - 251) * 256) - encoded[++i] - 108;\n        } else {\n          value =\n            ((encoded[++i] & 0xff) << 24) |\n            ((encoded[++i] & 0xff) << 16) |\n            ((encoded[++i] & 0xff) << 8) |\n            ((encoded[++i] & 0xff) << 0);\n        }\n        this.stack.push(value);\n      }\n      return error;\n    }\n\n    executeCommand(howManyArgs, command, keepStack) {\n      const stackLength = this.stack.length;\n      if (howManyArgs > stackLength) {\n        return true;\n      }\n      const start = stackLength - howManyArgs;\n      for (let i = start; i < stackLength; i++) {\n        let value = this.stack[i];\n        if (Number.isInteger(value)) {\n          this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n        } else {\n          // fixed point\n          value = (65536 * value) | 0;\n          this.output.push(\n            255,\n            (value >> 24) & 0xff,\n            (value >> 16) & 0xff,\n            (value >> 8) & 0xff,\n            value & 0xff\n          );\n        }\n      }\n      this.output.push.apply(this.output, command);\n      if (keepStack) {\n        this.stack.splice(start, howManyArgs);\n      } else {\n        this.stack.length = 0;\n      }\n      return false;\n    }\n  }\n\n  return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nconst Type1Parser = (function Type1ParserClosure() {\n  /*\n   * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n   * of Plaintext Bytes. The function took a key as a parameter which can be\n   * for decrypting the eexec block of for decoding charStrings.\n   */\n  const EEXEC_ENCRYPT_KEY = 55665;\n  const CHAR_STRS_ENCRYPT_KEY = 4330;\n\n  function isHexDigit(code) {\n    return (\n      (code >= 48 && code <= 57) || // '0'-'9'\n      (code >= 65 && code <= 70) || // 'A'-'F'\n      (code >= 97 && code <= 102) // 'a'-'f'\n    );\n  }\n\n  function decrypt(data, key, discardNumber) {\n    if (discardNumber >= data.length) {\n      return new Uint8Array(0);\n    }\n    const c1 = 52845,\n      c2 = 22719;\n    let r = key | 0,\n      i,\n      j;\n    for (i = 0; i < discardNumber; i++) {\n      r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    const count = data.length - discardNumber;\n    const decrypted = new Uint8Array(count);\n    for (i = discardNumber, j = 0; j < count; i++, j++) {\n      const value = data[i];\n      decrypted[j] = value ^ (r >> 8);\n      r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    return decrypted;\n  }\n\n  function decryptAscii(data, key, discardNumber) {\n    const c1 = 52845,\n      c2 = 22719;\n    let r = key | 0;\n    const count = data.length,\n      maybeLength = count >>> 1;\n    const decrypted = new Uint8Array(maybeLength);\n    let i, j;\n    for (i = 0, j = 0; i < count; i++) {\n      const digit1 = data[i];\n      if (!isHexDigit(digit1)) {\n        continue;\n      }\n      i++;\n      let digit2;\n      while (i < count && !isHexDigit((digit2 = data[i]))) {\n        i++;\n      }\n      if (i < count) {\n        const value = parseInt(String.fromCharCode(digit1, digit2), 16);\n        decrypted[j++] = value ^ (r >> 8);\n        r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n      }\n    }\n    return decrypted.slice(discardNumber, j);\n  }\n\n  function isSpecial(c) {\n    return (\n      c === /* '/' = */ 0x2f ||\n      c === /* '[' = */ 0x5b ||\n      c === /* ']' = */ 0x5d ||\n      c === /* '{' = */ 0x7b ||\n      c === /* '}' = */ 0x7d ||\n      c === /* '(' = */ 0x28 ||\n      c === /* ')' = */ 0x29\n    );\n  }\n\n  // eslint-disable-next-line no-shadow\n  class Type1Parser {\n    constructor(stream, encrypted, seacAnalysisEnabled) {\n      if (encrypted) {\n        const data = stream.getBytes();\n        const isBinary = !(\n          (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\n          isHexDigit(data[1]) &&\n          isHexDigit(data[2]) &&\n          isHexDigit(data[3]) &&\n          isHexDigit(data[4]) &&\n          isHexDigit(data[5]) &&\n          isHexDigit(data[6]) &&\n          isHexDigit(data[7])\n        );\n        stream = new Stream(\n          isBinary\n            ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\n            : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\n        );\n      }\n      this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n      this.stream = stream;\n      this.nextChar();\n    }\n\n    readNumberArray() {\n      this.getToken(); // read '[' or '{' (arrays can start with either)\n      const array = [];\n      while (true) {\n        const token = this.getToken();\n        if (token === null || token === \"]\" || token === \"}\") {\n          break;\n        }\n        array.push(parseFloat(token || 0));\n      }\n      return array;\n    }\n\n    readNumber() {\n      const token = this.getToken();\n      return parseFloat(token || 0);\n    }\n\n    readInt() {\n      // Use '| 0' to prevent setting a double into length such as the double\n      // does not flow into the loop variable.\n      const token = this.getToken();\n      return parseInt(token || 0, 10) | 0;\n    }\n\n    readBoolean() {\n      const token = this.getToken();\n      // Use 1 and 0 since that's what type2 charstrings use.\n      return token === \"true\" ? 1 : 0;\n    }\n\n    nextChar() {\n      return (this.currentChar = this.stream.getByte());\n    }\n\n    prevChar() {\n      this.stream.skip(-2);\n      return (this.currentChar = this.stream.getByte());\n    }\n\n    getToken() {\n      // Eat whitespace and comments.\n      let comment = false;\n      let ch = this.currentChar;\n      while (true) {\n        if (ch === -1) {\n          return null;\n        }\n\n        if (comment) {\n          if (ch === 0x0a || ch === 0x0d) {\n            comment = false;\n          }\n        } else if (ch === /* '%' = */ 0x25) {\n          comment = true;\n        } else if (!isWhiteSpace(ch)) {\n          break;\n        }\n        ch = this.nextChar();\n      }\n      if (isSpecial(ch)) {\n        this.nextChar();\n        return String.fromCharCode(ch);\n      }\n      let token = \"\";\n      do {\n        token += String.fromCharCode(ch);\n        ch = this.nextChar();\n      } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n      return token;\n    }\n\n    readCharStrings(bytes, lenIV) {\n      if (lenIV === -1) {\n        // This isn't in the spec, but Adobe's tx program handles -1\n        // as plain text.\n        return bytes;\n      }\n      return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n    }\n\n    /*\n     * Returns an object containing a Subrs array and a CharStrings\n     * array extracted from and eexec encrypted block of data\n     */\n    extractFontProgram(properties) {\n      const stream = this.stream;\n\n      const subrs = [],\n        charstrings = [];\n      const privateData = Object.create(null);\n      privateData.lenIV = 4;\n      const program = {\n        subrs: [],\n        charstrings: [],\n        properties: {\n          privateData,\n        },\n      };\n      let token, length, data, lenIV, encoded;\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case \"CharStrings\":\n            // The number immediately following CharStrings must be greater or\n            // equal to the number of CharStrings.\n            this.getToken();\n            this.getToken(); // read in 'dict'\n            this.getToken(); // read in 'dup'\n            this.getToken(); // read in 'begin'\n            while (true) {\n              token = this.getToken();\n              if (token === null || token === \"end\") {\n                break;\n              }\n\n              if (token !== \"/\") {\n                continue;\n              }\n              const glyph = this.getToken();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData.lenIV;\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'ND' or '|-'\n              if (token === \"noaccess\") {\n                this.getToken(); // read in 'def'\n              } else if (token === \"/\") {\n                // The expected 'ND' or '|-' token is missing, avoid swallowing\n                // the start of the next glyph (fixes issue14462_reduced.pdf).\n                this.prevChar();\n              }\n              charstrings.push({\n                glyph,\n                encoded,\n              });\n            }\n            break;\n          case \"Subrs\":\n            this.readInt(); // num\n            this.getToken(); // read in 'array'\n            while (this.getToken() === \"dup\") {\n              const index = this.readInt();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData.lenIV;\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'NP' or '|'\n              if (token === \"noaccess\") {\n                this.getToken(); // read in 'put'\n              }\n              subrs[index] = encoded;\n            }\n            break;\n          case \"BlueValues\":\n          case \"OtherBlues\":\n          case \"FamilyBlues\":\n          case \"FamilyOtherBlues\":\n            const blueArray = this.readNumberArray();\n            // *Blue* values may contain invalid data: disables reading of\n            // those values when hinting is disabled.\n            if (\n              blueArray.length > 0 &&\n              blueArray.length % 2 === 0 &&\n              HINTING_ENABLED\n            ) {\n              program.properties.privateData[token] = blueArray;\n            }\n            break;\n          case \"StemSnapH\":\n          case \"StemSnapV\":\n            program.properties.privateData[token] = this.readNumberArray();\n            break;\n          case \"StdHW\":\n          case \"StdVW\":\n            program.properties.privateData[token] = this.readNumberArray()[0];\n            break;\n          case \"BlueShift\":\n          case \"lenIV\":\n          case \"BlueFuzz\":\n          case \"BlueScale\":\n          case \"LanguageGroup\":\n          case \"ExpansionFactor\":\n            program.properties.privateData[token] = this.readNumber();\n            break;\n          case \"ForceBold\":\n            program.properties.privateData[token] = this.readBoolean();\n            break;\n        }\n      }\n\n      for (let i = 0; i < charstrings.length; i++) {\n        const glyph = charstrings[i].glyph;\n        encoded = charstrings[i].encoded;\n        const charString = new Type1CharString();\n        const error = charString.convert(\n          encoded,\n          subrs,\n          this.seacAnalysisEnabled\n        );\n        let output = charString.output;\n        if (error) {\n          // It seems when FreeType encounters an error while evaluating a glyph\n          // that it completely ignores the glyph so we'll mimic that behaviour\n          // here and put an endchar to make the validator happy.\n          output = [14];\n        }\n        const charStringObject = {\n          glyphName: glyph,\n          charstring: output,\n          width: charString.width,\n          lsb: charString.lsb,\n          seac: charString.seac,\n        };\n        if (glyph === \".notdef\") {\n          // Make sure .notdef is at index zero (issue #11477).\n          program.charstrings.unshift(charStringObject);\n        } else {\n          program.charstrings.push(charStringObject);\n        }\n\n        // Attempt to replace missing widths, from the font dictionary /Widths\n        // entry, with ones from the font data (fixes issue11150_reduced.pdf).\n        if (properties.builtInEncoding) {\n          const index = properties.builtInEncoding.indexOf(glyph);\n          if (\n            index > -1 &&\n            properties.widths[index] === undefined &&\n            index >= properties.firstChar &&\n            index <= properties.lastChar\n          ) {\n            properties.widths[index] = charString.width;\n          }\n        }\n      }\n\n      return program;\n    }\n\n    extractFontHeader(properties) {\n      let token;\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case \"FontMatrix\":\n            const matrix = this.readNumberArray();\n            properties.fontMatrix = matrix;\n            break;\n          case \"Encoding\":\n            const encodingArg = this.getToken();\n            let encoding;\n            if (!/^\\d+$/.test(encodingArg)) {\n              // encoding name is specified\n              encoding = getEncoding(encodingArg);\n            } else {\n              encoding = [];\n              const size = parseInt(encodingArg, 10) | 0;\n              this.getToken(); // read in 'array'\n\n              for (let j = 0; j < size; j++) {\n                token = this.getToken();\n                // skipping till first dup or def (e.g. ignoring for statement)\n                while (token !== \"dup\" && token !== \"def\") {\n                  token = this.getToken();\n                  if (token === null) {\n                    return; // invalid header\n                  }\n                }\n                if (token === \"def\") {\n                  break; // read all array data\n                }\n                const index = this.readInt();\n                this.getToken(); // read in '/'\n                const glyph = this.getToken();\n                encoding[index] = glyph;\n                this.getToken(); // read the in 'put'\n              }\n            }\n            properties.builtInEncoding = encoding;\n            break;\n          case \"FontBBox\":\n            const fontBBox = this.readNumberArray();\n            // adjusting ascent/descent\n            properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n            properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n            properties.ascentScaled = true;\n            break;\n        }\n      }\n    }\n  }\n\n  return Type1Parser;\n})();\n\nexport { Type1Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  shadow,\n  unreachable,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nconst ShadingType = {\n  FUNCTION_BASED: 1,\n  AXIAL: 2,\n  RADIAL: 3,\n  FREE_FORM_MESH: 4,\n  LATTICE_FORM_MESH: 5,\n  COONS_PATCH_MESH: 6,\n  TENSOR_PATCH_MESH: 7,\n};\n\nclass Pattern {\n  constructor() {\n    unreachable(\"Cannot initialize Pattern.\");\n  }\n\n  static parseShading(\n    shading,\n    xref,\n    res,\n    handler,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  ) {\n    const dict = shading instanceof BaseStream ? shading.dict : shading;\n    const type = dict.get(\"ShadingType\");\n\n    try {\n      switch (type) {\n        case ShadingType.AXIAL:\n        case ShadingType.RADIAL:\n          return new RadialAxialShading(\n            dict,\n            xref,\n            res,\n            pdfFunctionFactory,\n            localColorSpaceCache\n          );\n        case ShadingType.FREE_FORM_MESH:\n        case ShadingType.LATTICE_FORM_MESH:\n        case ShadingType.COONS_PATCH_MESH:\n        case ShadingType.TENSOR_PATCH_MESH:\n          return new MeshShading(\n            shading,\n            xref,\n            res,\n            pdfFunctionFactory,\n            localColorSpaceCache\n          );\n        default:\n          throw new FormatError(\"Unsupported ShadingType: \" + type);\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.shadingPattern,\n      });\n      warn(ex);\n      return new DummyShading();\n    }\n  }\n}\n\nclass BaseShading {\n  // A small number to offset the first/last color stops so we can insert ones\n  // to support extend. Number.MIN_VALUE is too small and breaks the extend.\n  static get SMALL_NUMBER() {\n    return shadow(this, \"SMALL_NUMBER\", 1e-6);\n  }\n\n  constructor() {\n    if (this.constructor === BaseShading) {\n      unreachable(\"Cannot initialize BaseShading.\");\n    }\n  }\n\n  getIR() {\n    unreachable(\"Abstract method `getIR` called.\");\n  }\n}\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes.\nclass RadialAxialShading extends BaseShading {\n  constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n    super();\n    this.coordsArr = dict.getArray(\"Coords\");\n    this.shadingType = dict.get(\"ShadingType\");\n    const cs = ColorSpace.parse({\n      cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n      xref,\n      resources,\n      pdfFunctionFactory,\n      localColorSpaceCache,\n    });\n    const bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n\n    let t0 = 0.0,\n      t1 = 1.0;\n    if (dict.has(\"Domain\")) {\n      const domainArr = dict.getArray(\"Domain\");\n      t0 = domainArr[0];\n      t1 = domainArr[1];\n    }\n\n    let extendStart = false,\n      extendEnd = false;\n    if (dict.has(\"Extend\")) {\n      const extendArr = dict.getArray(\"Extend\");\n      extendStart = extendArr[0];\n      extendEnd = extendArr[1];\n    }\n\n    if (\n      this.shadingType === ShadingType.RADIAL &&\n      (!extendStart || !extendEnd)\n    ) {\n      // Radial gradient only currently works if either circle is fully within\n      // the other circle.\n      const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\n      const distance = Math.hypot(x1 - x2, y1 - y2);\n      if (r1 <= r2 + distance && r2 <= r1 + distance) {\n        warn(\"Unsupported radial gradient.\");\n      }\n    }\n\n    this.extendStart = extendStart;\n    this.extendEnd = extendEnd;\n\n    const fnObj = dict.getRaw(\"Function\");\n    const fn = pdfFunctionFactory.createFromArray(fnObj);\n\n    // 10 samples seems good enough for now, but probably won't work\n    // if there are sharp color changes. Ideally, we would implement\n    // the spec faithfully and add lossless optimizations.\n    const NUMBER_OF_SAMPLES = 10;\n    const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n\n    const colorStops = (this.colorStops = []);\n\n    // Protect against bad domains.\n    if (t0 >= t1 || step <= 0) {\n      // Acrobat doesn't seem to handle these cases so we'll ignore for\n      // now.\n      info(\"Bad shading domain.\");\n      return;\n    }\n\n    const color = new Float32Array(cs.numComps),\n      ratio = new Float32Array(1);\n    let rgbColor;\n    for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n      ratio[0] = t0 + i * step;\n      fn(ratio, 0, color, 0);\n      rgbColor = cs.getRgb(color, 0);\n      const cssColor = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n      colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n    }\n\n    let background = \"transparent\";\n    if (dict.has(\"Background\")) {\n      rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n      background = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n    }\n\n    if (!extendStart) {\n      // Insert a color stop at the front and offset the first real color stop\n      // so it doesn't conflict with the one we insert.\n      colorStops.unshift([0, background]);\n      colorStops[1][0] += BaseShading.SMALL_NUMBER;\n    }\n    if (!extendEnd) {\n      // Same idea as above in extendStart but for the end.\n      colorStops[colorStops.length - 1][0] -= BaseShading.SMALL_NUMBER;\n      colorStops.push([1, background]);\n    }\n\n    this.colorStops = colorStops;\n  }\n\n  getIR() {\n    const coordsArr = this.coordsArr;\n    const shadingType = this.shadingType;\n    let type, p0, p1, r0, r1;\n    if (shadingType === ShadingType.AXIAL) {\n      p0 = [coordsArr[0], coordsArr[1]];\n      p1 = [coordsArr[2], coordsArr[3]];\n      r0 = null;\n      r1 = null;\n      type = \"axial\";\n    } else if (shadingType === ShadingType.RADIAL) {\n      p0 = [coordsArr[0], coordsArr[1]];\n      p1 = [coordsArr[3], coordsArr[4]];\n      r0 = coordsArr[2];\n      r1 = coordsArr[5];\n      type = \"radial\";\n    } else {\n      unreachable(`getPattern type unknown: ${shadingType}`);\n    }\n\n    return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n  }\n}\n\n// All mesh shadings. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nclass MeshStreamReader {\n  constructor(stream, context) {\n    this.stream = stream;\n    this.context = context;\n    this.buffer = 0;\n    this.bufferLength = 0;\n\n    const numComps = context.numComps;\n    this.tmpCompsBuf = new Float32Array(numComps);\n    const csNumComps = context.colorSpace.numComps;\n    this.tmpCsCompsBuf = context.colorFn\n      ? new Float32Array(csNumComps)\n      : this.tmpCompsBuf;\n  }\n\n  get hasData() {\n    if (this.stream.end) {\n      return this.stream.pos < this.stream.end;\n    }\n    if (this.bufferLength > 0) {\n      return true;\n    }\n    const nextByte = this.stream.getByte();\n    if (nextByte < 0) {\n      return false;\n    }\n    this.buffer = nextByte;\n    this.bufferLength = 8;\n    return true;\n  }\n\n  readBits(n) {\n    let buffer = this.buffer;\n    let bufferLength = this.bufferLength;\n    if (n === 32) {\n      if (bufferLength === 0) {\n        return (\n          ((this.stream.getByte() << 24) |\n            (this.stream.getByte() << 16) |\n            (this.stream.getByte() << 8) |\n            this.stream.getByte()) >>>\n          0\n        );\n      }\n      buffer =\n        (buffer << 24) |\n        (this.stream.getByte() << 16) |\n        (this.stream.getByte() << 8) |\n        this.stream.getByte();\n      const nextByte = this.stream.getByte();\n      this.buffer = nextByte & ((1 << bufferLength) - 1);\n      return (\n        ((buffer << (8 - bufferLength)) |\n          ((nextByte & 0xff) >> bufferLength)) >>>\n        0\n      );\n    }\n    if (n === 8 && bufferLength === 0) {\n      return this.stream.getByte();\n    }\n    while (bufferLength < n) {\n      buffer = (buffer << 8) | this.stream.getByte();\n      bufferLength += 8;\n    }\n    bufferLength -= n;\n    this.bufferLength = bufferLength;\n    this.buffer = buffer & ((1 << bufferLength) - 1);\n    return buffer >> bufferLength;\n  }\n\n  align() {\n    this.buffer = 0;\n    this.bufferLength = 0;\n  }\n\n  readFlag() {\n    return this.readBits(this.context.bitsPerFlag);\n  }\n\n  readCoordinate() {\n    const bitsPerCoordinate = this.context.bitsPerCoordinate;\n    const xi = this.readBits(bitsPerCoordinate);\n    const yi = this.readBits(bitsPerCoordinate);\n    const decode = this.context.decode;\n    const scale =\n      bitsPerCoordinate < 32\n        ? 1 / ((1 << bitsPerCoordinate) - 1)\n        : 2.3283064365386963e-10; // 2 ^ -32\n    return [\n      xi * scale * (decode[1] - decode[0]) + decode[0],\n      yi * scale * (decode[3] - decode[2]) + decode[2],\n    ];\n  }\n\n  readComponents() {\n    const numComps = this.context.numComps;\n    const bitsPerComponent = this.context.bitsPerComponent;\n    const scale =\n      bitsPerComponent < 32\n        ? 1 / ((1 << bitsPerComponent) - 1)\n        : 2.3283064365386963e-10; // 2 ^ -32\n    const decode = this.context.decode;\n    const components = this.tmpCompsBuf;\n    for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n      const ci = this.readBits(bitsPerComponent);\n      components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n    }\n    const color = this.tmpCsCompsBuf;\n    if (this.context.colorFn) {\n      this.context.colorFn(components, 0, color, 0);\n    }\n    return this.context.colorSpace.getRgb(color, 0);\n  }\n}\n\nconst getB = (function getBClosure() {\n  function buildB(count) {\n    const lut = [];\n    for (let i = 0; i <= count; i++) {\n      const t = i / count,\n        t_ = 1 - t;\n      lut.push(\n        new Float32Array([\n          t_ * t_ * t_,\n          3 * t * t_ * t_,\n          3 * t * t * t_,\n          t * t * t,\n        ])\n      );\n    }\n    return lut;\n  }\n  const cache = [];\n\n  return function (count) {\n    if (!cache[count]) {\n      cache[count] = buildB(count);\n    }\n    return cache[count];\n  };\n})();\n\nclass MeshShading extends BaseShading {\n  static get MIN_SPLIT_PATCH_CHUNKS_AMOUNT() {\n    return shadow(this, \"MIN_SPLIT_PATCH_CHUNKS_AMOUNT\", 3);\n  }\n\n  static get MAX_SPLIT_PATCH_CHUNKS_AMOUNT() {\n    return shadow(this, \"MAX_SPLIT_PATCH_CHUNKS_AMOUNT\", 20);\n  }\n\n  // Count of triangles per entire mesh bounds.\n  static get TRIANGLE_DENSITY() {\n    return shadow(this, \"TRIANGLE_DENSITY\", 20);\n  }\n\n  constructor(\n    stream,\n    xref,\n    resources,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  ) {\n    super();\n    if (!(stream instanceof BaseStream)) {\n      throw new FormatError(\"Mesh data is not a stream\");\n    }\n    const dict = stream.dict;\n    this.shadingType = dict.get(\"ShadingType\");\n    const bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n    const cs = ColorSpace.parse({\n      cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n      xref,\n      resources,\n      pdfFunctionFactory,\n      localColorSpaceCache,\n    });\n    this.background = dict.has(\"Background\")\n      ? cs.getRgb(dict.get(\"Background\"), 0)\n      : null;\n\n    const fnObj = dict.getRaw(\"Function\");\n    const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n    this.coords = [];\n    this.colors = [];\n    this.figures = [];\n\n    const decodeContext = {\n      bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n      bitsPerComponent: dict.get(\"BitsPerComponent\"),\n      bitsPerFlag: dict.get(\"BitsPerFlag\"),\n      decode: dict.getArray(\"Decode\"),\n      colorFn: fn,\n      colorSpace: cs,\n      numComps: fn ? 1 : cs.numComps,\n    };\n    const reader = new MeshStreamReader(stream, decodeContext);\n\n    let patchMesh = false;\n    switch (this.shadingType) {\n      case ShadingType.FREE_FORM_MESH:\n        this._decodeType4Shading(reader);\n        break;\n      case ShadingType.LATTICE_FORM_MESH:\n        const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n        if (verticesPerRow < 2) {\n          throw new FormatError(\"Invalid VerticesPerRow\");\n        }\n        this._decodeType5Shading(reader, verticesPerRow);\n        break;\n      case ShadingType.COONS_PATCH_MESH:\n        this._decodeType6Shading(reader);\n        patchMesh = true;\n        break;\n      case ShadingType.TENSOR_PATCH_MESH:\n        this._decodeType7Shading(reader);\n        patchMesh = true;\n        break;\n      default:\n        unreachable(\"Unsupported mesh type.\");\n        break;\n    }\n\n    if (patchMesh) {\n      // Dirty bounds calculation, to determine how dense the triangles will be.\n      this._updateBounds();\n      for (let i = 0, ii = this.figures.length; i < ii; i++) {\n        this._buildFigureFromPatch(i);\n      }\n    }\n    // Calculate bounds.\n    this._updateBounds();\n\n    this._packData();\n  }\n\n  _decodeType4Shading(reader) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const operators = [];\n    const ps = []; // not maintaining cs since that will match ps\n    let verticesLeft = 0; // assuming we have all data to start a new triangle\n    while (reader.hasData) {\n      const f = reader.readFlag();\n      const coord = reader.readCoordinate();\n      const color = reader.readComponents();\n      if (verticesLeft === 0) {\n        // ignoring flags if we started a triangle\n        if (!(0 <= f && f <= 2)) {\n          throw new FormatError(\"Unknown type4 flag\");\n        }\n        switch (f) {\n          case 0:\n            verticesLeft = 3;\n            break;\n          case 1:\n            ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n          case 2:\n            ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n        }\n        operators.push(f);\n      }\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n      verticesLeft--;\n\n      reader.align();\n    }\n    this.figures.push({\n      type: \"triangles\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n    });\n  }\n\n  _decodeType5Shading(reader, verticesPerRow) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const ps = []; // not maintaining cs since that will match ps\n    while (reader.hasData) {\n      const coord = reader.readCoordinate();\n      const color = reader.readComponents();\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n    }\n    this.figures.push({\n      type: \"lattice\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n      verticesPerRow,\n    });\n  }\n\n  _decodeType6Shading(reader) {\n    // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n    const coords = this.coords;\n    const colors = this.colors;\n    const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    const cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      const f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type6 flag\");\n      }\n      const pi = coords.length;\n      for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      const ci = colors.length;\n      for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      let tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        // prettier-ignore\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 7;\n          ps[ 4] = pi + 1; /* calculated below              */ ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        // prettier-ignore\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4; ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2; /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1; ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];  ps[13] = pi + 0; ps[14] = pi + 1;   ps[15] = pi + 2;\n          ps[ 8] = ps[7];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2;   /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7;   ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;   ps[14] = pi + 1; ps[15] = pi + 2;\n          ps[ 8] = ps[1];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = ps[2];  /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      // set p11, p12, p21, p22\n      ps[5] = coords.length;\n      coords.push([\n        (-4 * coords[ps[0]][0] -\n          coords[ps[15]][0] +\n          6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[13]][0] + coords[ps[7]][0])) /\n          9,\n        (-4 * coords[ps[0]][1] -\n          coords[ps[15]][1] +\n          6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[13]][1] + coords[ps[7]][1])) /\n          9,\n      ]);\n      ps[6] = coords.length;\n      coords.push([\n        (-4 * coords[ps[3]][0] -\n          coords[ps[12]][0] +\n          6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[4]][0] + coords[ps[14]][0])) /\n          9,\n        (-4 * coords[ps[3]][1] -\n          coords[ps[12]][1] +\n          6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[4]][1] + coords[ps[14]][1])) /\n          9,\n      ]);\n      ps[9] = coords.length;\n      coords.push([\n        (-4 * coords[ps[12]][0] -\n          coords[ps[3]][0] +\n          6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[11]][0] + coords[ps[1]][0])) /\n          9,\n        (-4 * coords[ps[12]][1] -\n          coords[ps[3]][1] +\n          6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[11]][1] + coords[ps[1]][1])) /\n          9,\n      ]);\n      ps[10] = coords.length;\n      coords.push([\n        (-4 * coords[ps[15]][0] -\n          coords[ps[0]][0] +\n          6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[2]][0] + coords[ps[8]][0])) /\n          9,\n        (-4 * coords[ps[15]][1] -\n          coords[ps[0]][1] +\n          6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[2]][1] + coords[ps[8]][1])) /\n          9,\n      ]);\n      this.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  _decodeType7Shading(reader) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    const cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      const f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type7 flag\");\n      }\n      const pi = coords.length;\n      for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      const ci = colors.length;\n      for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      let tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        // prettier-ignore\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n          ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        // prettier-ignore\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4;   ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3;   ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;   ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;   ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;  ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7; ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[1];  ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = ps[2];  ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      this.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  _buildFigureFromPatch(index) {\n    const figure = this.figures[index];\n    assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n    const coords = this.coords,\n      colors = this.colors;\n    const pi = figure.coords;\n    const ci = figure.colors;\n\n    const figureMinX = Math.min(\n      coords[pi[0]][0],\n      coords[pi[3]][0],\n      coords[pi[12]][0],\n      coords[pi[15]][0]\n    );\n    const figureMinY = Math.min(\n      coords[pi[0]][1],\n      coords[pi[3]][1],\n      coords[pi[12]][1],\n      coords[pi[15]][1]\n    );\n    const figureMaxX = Math.max(\n      coords[pi[0]][0],\n      coords[pi[3]][0],\n      coords[pi[12]][0],\n      coords[pi[15]][0]\n    );\n    const figureMaxY = Math.max(\n      coords[pi[0]][1],\n      coords[pi[3]][1],\n      coords[pi[12]][1],\n      coords[pi[15]][1]\n    );\n    let splitXBy = Math.ceil(\n      ((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY) /\n        (this.bounds[2] - this.bounds[0])\n    );\n    splitXBy = Math.max(\n      MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n      Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n    );\n    let splitYBy = Math.ceil(\n      ((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY) /\n        (this.bounds[3] - this.bounds[1])\n    );\n    splitYBy = Math.max(\n      MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n      Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n    );\n\n    const verticesPerRow = splitXBy + 1;\n    const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n    const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n    let k = 0;\n    const cl = new Uint8Array(3),\n      cr = new Uint8Array(3);\n    const c0 = colors[ci[0]],\n      c1 = colors[ci[1]],\n      c2 = colors[ci[2]],\n      c3 = colors[ci[3]];\n    const bRow = getB(splitYBy),\n      bCol = getB(splitXBy);\n    for (let row = 0; row <= splitYBy; row++) {\n      cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n      cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n      cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n      cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n      cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n      cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n      for (let col = 0; col <= splitXBy; col++, k++) {\n        if (\n          (row === 0 || row === splitYBy) &&\n          (col === 0 || col === splitXBy)\n        ) {\n          continue;\n        }\n        let x = 0,\n          y = 0;\n        let q = 0;\n        for (let i = 0; i <= 3; i++) {\n          for (let j = 0; j <= 3; j++, q++) {\n            const m = bRow[row][i] * bCol[col][j];\n            x += coords[pi[q]][0] * m;\n            y += coords[pi[q]][1] * m;\n          }\n        }\n        figureCoords[k] = coords.length;\n        coords.push([x, y]);\n        figureColors[k] = colors.length;\n        const newColor = new Uint8Array(3);\n        newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n        newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n        newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n        colors.push(newColor);\n      }\n    }\n    figureCoords[0] = pi[0];\n    figureColors[0] = ci[0];\n    figureCoords[splitXBy] = pi[3];\n    figureColors[splitXBy] = ci[1];\n    figureCoords[verticesPerRow * splitYBy] = pi[12];\n    figureColors[verticesPerRow * splitYBy] = ci[2];\n    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n    this.figures[index] = {\n      type: \"lattice\",\n      coords: figureCoords,\n      colors: figureColors,\n      verticesPerRow,\n    };\n  }\n\n  _updateBounds() {\n    let minX = this.coords[0][0],\n      minY = this.coords[0][1],\n      maxX = minX,\n      maxY = minY;\n    for (let i = 1, ii = this.coords.length; i < ii; i++) {\n      const x = this.coords[i][0],\n        y = this.coords[i][1];\n      minX = minX > x ? x : minX;\n      minY = minY > y ? y : minY;\n      maxX = maxX < x ? x : maxX;\n      maxY = maxY < y ? y : maxY;\n    }\n    this.bounds = [minX, minY, maxX, maxY];\n  }\n\n  _packData() {\n    let i, ii, j, jj;\n\n    const coords = this.coords;\n    const coordsPacked = new Float32Array(coords.length * 2);\n    for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n      const xy = coords[i];\n      coordsPacked[j++] = xy[0];\n      coordsPacked[j++] = xy[1];\n    }\n    this.coords = coordsPacked;\n\n    const colors = this.colors;\n    const colorsPacked = new Uint8Array(colors.length * 3);\n    for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n      const c = colors[i];\n      colorsPacked[j++] = c[0];\n      colorsPacked[j++] = c[1];\n      colorsPacked[j++] = c[2];\n    }\n    this.colors = colorsPacked;\n\n    const figures = this.figures;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      const figure = figures[i],\n        ps = figure.coords,\n        cs = figure.colors;\n      for (j = 0, jj = ps.length; j < jj; j++) {\n        ps[j] *= 2;\n        cs[j] *= 3;\n      }\n    }\n  }\n\n  getIR() {\n    return [\n      \"Mesh\",\n      this.shadingType,\n      this.coords,\n      this.colors,\n      this.figures,\n      this.bounds,\n      this.bbox,\n      this.background,\n    ];\n  }\n}\n\nclass DummyShading extends BaseShading {\n  getIR() {\n    return [\"Dummy\"];\n  }\n}\n\nfunction getTilingPatternIR(operatorList, dict, color) {\n  const matrix = dict.getArray(\"Matrix\");\n  const bbox = Util.normalizeRect(dict.getArray(\"BBox\"));\n  const xstep = dict.get(\"XStep\");\n  const ystep = dict.get(\"YStep\");\n  const paintType = dict.get(\"PaintType\");\n  const tilingType = dict.get(\"TilingType\");\n\n  // Ensure that the pattern has a non-zero width and height, to prevent errors\n  // in `pattern_helper.js` (fixes issue8330.pdf).\n  if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n    throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n  }\n\n  return [\n    \"TilingPattern\",\n    color,\n    operatorList,\n    matrix,\n    bbox,\n    xstep,\n    ystep,\n    paintType,\n    tilingType,\n  ];\n}\n\nexport { getTilingPatternIR, Pattern };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Ref } from \"./primitives.js\";\nimport {\n  FormatError,\n  info,\n  IsEvalSupportedCached,\n  shadow,\n  unreachable,\n} from \"../shared/util.js\";\nimport { PostScriptLexer, PostScriptParser } from \"./ps_parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { LocalFunctionCache } from \"./image_utils.js\";\n\nclass PDFFunctionFactory {\n  constructor({ xref, isEvalSupported = true }) {\n    this.xref = xref;\n    this.isEvalSupported = isEvalSupported !== false;\n  }\n\n  create(fn) {\n    const cachedFunction = this.getCached(fn);\n    if (cachedFunction) {\n      return cachedFunction;\n    }\n    const parsedFunction = PDFFunction.parse({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fn: fn instanceof Ref ? this.xref.fetch(fn) : fn,\n    });\n\n    // Attempt to cache the parsed Function, by reference.\n    this._cache(fn, parsedFunction);\n\n    return parsedFunction;\n  }\n\n  createFromArray(fnObj) {\n    const cachedFunction = this.getCached(fnObj);\n    if (cachedFunction) {\n      return cachedFunction;\n    }\n    const parsedFunction = PDFFunction.parseArray({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj,\n    });\n\n    // Attempt to cache the parsed Function, by reference.\n    this._cache(fnObj, parsedFunction);\n\n    return parsedFunction;\n  }\n\n  getCached(cacheKey) {\n    let fnRef;\n    if (cacheKey instanceof Ref) {\n      fnRef = cacheKey;\n    } else if (cacheKey instanceof Dict) {\n      fnRef = cacheKey.objId;\n    } else if (cacheKey instanceof BaseStream) {\n      fnRef = cacheKey.dict && cacheKey.dict.objId;\n    }\n    if (fnRef) {\n      const localFunction = this._localFunctionCache.getByRef(fnRef);\n      if (localFunction) {\n        return localFunction;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * @private\n   */\n  _cache(cacheKey, parsedFunction) {\n    if (!parsedFunction) {\n      throw new Error(\n        'PDFFunctionFactory._cache - expected \"parsedFunction\" argument.'\n      );\n    }\n    let fnRef;\n    if (cacheKey instanceof Ref) {\n      fnRef = cacheKey;\n    } else if (cacheKey instanceof Dict) {\n      fnRef = cacheKey.objId;\n    } else if (cacheKey instanceof BaseStream) {\n      fnRef = cacheKey.dict && cacheKey.dict.objId;\n    }\n    if (fnRef) {\n      this._localFunctionCache.set(/* name = */ null, fnRef, parsedFunction);\n    }\n  }\n\n  /**\n   * @private\n   */\n  get _localFunctionCache() {\n    return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n  }\n}\n\nfunction toNumberArray(arr) {\n  if (!Array.isArray(arr)) {\n    return null;\n  }\n  const length = arr.length;\n  for (let i = 0; i < length; i++) {\n    if (typeof arr[i] !== \"number\") {\n      // Non-number is found -- convert all items to numbers.\n      const result = new Array(length);\n      for (let j = 0; j < length; j++) {\n        result[j] = +arr[j];\n      }\n      return result;\n    }\n  }\n  return arr;\n}\n\nclass PDFFunction {\n  static getSampleArray(size, outputSize, bps, stream) {\n    let i, ii;\n    let length = 1;\n    for (i = 0, ii = size.length; i < ii; i++) {\n      length *= size[i];\n    }\n    length *= outputSize;\n\n    const array = new Array(length);\n    let codeSize = 0;\n    let codeBuf = 0;\n    // 32 is a valid bps so shifting won't work\n    const sampleMul = 1.0 / (2.0 ** bps - 1);\n\n    const strBytes = stream.getBytes((length * bps + 7) / 8);\n    let strIdx = 0;\n    for (i = 0; i < length; i++) {\n      while (codeSize < bps) {\n        codeBuf <<= 8;\n        codeBuf |= strBytes[strIdx++];\n        codeSize += 8;\n      }\n      codeSize -= bps;\n      array[i] = (codeBuf >> codeSize) * sampleMul;\n      codeBuf &= (1 << codeSize) - 1;\n    }\n    return array;\n  }\n\n  static parse({ xref, isEvalSupported, fn }) {\n    const dict = fn.dict || fn;\n    const typeNum = dict.get(\"FunctionType\");\n\n    switch (typeNum) {\n      case 0:\n        return this.constructSampled({ xref, isEvalSupported, fn, dict });\n      case 1:\n        break;\n      case 2:\n        return this.constructInterpolated({ xref, isEvalSupported, dict });\n      case 3:\n        return this.constructStiched({ xref, isEvalSupported, dict });\n      case 4:\n        return this.constructPostScript({ xref, isEvalSupported, fn, dict });\n    }\n    throw new FormatError(\"Unknown type of function\");\n  }\n\n  static parseArray({ xref, isEvalSupported, fnObj }) {\n    if (!Array.isArray(fnObj)) {\n      // not an array -- parsing as regular function\n      return this.parse({ xref, isEvalSupported, fn: fnObj });\n    }\n\n    const fnArray = [];\n    for (let j = 0, jj = fnObj.length; j < jj; j++) {\n      fnArray.push(\n        this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnObj[j]) })\n      );\n    }\n    return function (src, srcOffset, dest, destOffset) {\n      for (let i = 0, ii = fnArray.length; i < ii; i++) {\n        fnArray[i](src, srcOffset, dest, destOffset + i);\n      }\n    };\n  }\n\n  static constructSampled({ xref, isEvalSupported, fn, dict }) {\n    function toMultiArray(arr) {\n      const inputLength = arr.length;\n      const out = [];\n      let index = 0;\n      for (let i = 0; i < inputLength; i += 2) {\n        out[index++] = [arr[i], arr[i + 1]];\n      }\n      return out;\n    }\n    // See chapter 3, page 109 of the PDF reference\n    function interpolate(x, xmin, xmax, ymin, ymax) {\n      return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n    }\n\n    let domain = toNumberArray(dict.getArray(\"Domain\"));\n    let range = toNumberArray(dict.getArray(\"Range\"));\n\n    if (!domain || !range) {\n      throw new FormatError(\"No domain or range\");\n    }\n\n    const inputSize = domain.length / 2;\n    const outputSize = range.length / 2;\n\n    domain = toMultiArray(domain);\n    range = toMultiArray(range);\n\n    const size = toNumberArray(dict.getArray(\"Size\"));\n    const bps = dict.get(\"BitsPerSample\");\n    const order = dict.get(\"Order\") || 1;\n    if (order !== 1) {\n      // No description how cubic spline interpolation works in PDF32000:2008\n      // As in poppler, ignoring order, linear interpolation may work as good\n      info(\"No support for cubic spline interpolation: \" + order);\n    }\n\n    let encode = toNumberArray(dict.getArray(\"Encode\"));\n    if (!encode) {\n      encode = [];\n      for (let i = 0; i < inputSize; ++i) {\n        encode.push([0, size[i] - 1]);\n      }\n    } else {\n      encode = toMultiArray(encode);\n    }\n\n    let decode = toNumberArray(dict.getArray(\"Decode\"));\n    if (!decode) {\n      decode = range;\n    } else {\n      decode = toMultiArray(decode);\n    }\n\n    const samples = this.getSampleArray(size, outputSize, bps, fn);\n    // const mask = 2 ** bps - 1;\n\n    return function constructSampledFn(src, srcOffset, dest, destOffset) {\n      // See chapter 3, page 110 of the PDF reference.\n\n      // Building the cube vertices: its part and sample index\n      // http://rjwagner49.com/Mathematics/Interpolation.pdf\n      const cubeVertices = 1 << inputSize;\n      const cubeN = new Float64Array(cubeVertices);\n      const cubeVertex = new Uint32Array(cubeVertices);\n      let i, j;\n      for (j = 0; j < cubeVertices; j++) {\n        cubeN[j] = 1;\n      }\n\n      let k = outputSize,\n        pos = 1;\n      // Map x_i to y_j for 0 <= i < m using the sampled function.\n      for (i = 0; i < inputSize; ++i) {\n        // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n        const domain_2i = domain[i][0];\n        const domain_2i_1 = domain[i][1];\n        const xi = Math.min(\n          Math.max(src[srcOffset + i], domain_2i),\n          domain_2i_1\n        );\n\n        // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n        //                   Encode_2i, Encode_2i+1)\n        let e = interpolate(\n          xi,\n          domain_2i,\n          domain_2i_1,\n          encode[i][0],\n          encode[i][1]\n        );\n\n        // e_i' = min(max(e_i, 0), Size_i - 1)\n        const size_i = size[i];\n        e = Math.min(Math.max(e, 0), size_i - 1);\n\n        // Adjusting the cube: N and vertex sample index\n        const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n        const n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n        const n1 = e - e0; // (e - e0) / (e1 - e0);\n        const offset0 = e0 * k;\n        const offset1 = offset0 + k; // e1 * k\n        for (j = 0; j < cubeVertices; j++) {\n          if (j & pos) {\n            cubeN[j] *= n1;\n            cubeVertex[j] += offset1;\n          } else {\n            cubeN[j] *= n0;\n            cubeVertex[j] += offset0;\n          }\n        }\n\n        k *= size_i;\n        pos <<= 1;\n      }\n\n      for (j = 0; j < outputSize; ++j) {\n        // Sum all cube vertices' samples portions\n        let rj = 0;\n        for (i = 0; i < cubeVertices; i++) {\n          rj += samples[cubeVertex[i] + j] * cubeN[i];\n        }\n\n        // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n        //                    Decode_2j, Decode_2j+1)\n        rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n        // y_j = min(max(r_j, range_2j), range_2j+1)\n        dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n      }\n    };\n  }\n\n  static constructInterpolated({ xref, isEvalSupported, dict }) {\n    const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n    const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n    const n = dict.get(\"N\");\n\n    const diff = [];\n    for (let i = 0, ii = c0.length; i < ii; ++i) {\n      diff.push(c1[i] - c0[i]);\n    }\n    const length = diff.length;\n\n    return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n      const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n      for (let j = 0; j < length; ++j) {\n        dest[destOffset + j] = c0[j] + x * diff[j];\n      }\n    };\n  }\n\n  static constructStiched({ xref, isEvalSupported, dict }) {\n    const domain = toNumberArray(dict.getArray(\"Domain\"));\n\n    if (!domain) {\n      throw new FormatError(\"No domain\");\n    }\n\n    const inputSize = domain.length / 2;\n    if (inputSize !== 1) {\n      throw new FormatError(\"Bad domain for stiched function\");\n    }\n\n    const fnRefs = dict.get(\"Functions\");\n    const fns = [];\n    for (let i = 0, ii = fnRefs.length; i < ii; ++i) {\n      fns.push(\n        this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnRefs[i]) })\n      );\n    }\n\n    const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n    const encode = toNumberArray(dict.getArray(\"Encode\"));\n    const tmpBuf = new Float32Array(1);\n\n    return function constructStichedFn(src, srcOffset, dest, destOffset) {\n      const clip = function constructStichedFromIRClip(v, min, max) {\n        if (v > max) {\n          v = max;\n        } else if (v < min) {\n          v = min;\n        }\n        return v;\n      };\n\n      // clip to domain\n      const v = clip(src[srcOffset], domain[0], domain[1]);\n      // calculate which bound the value is in\n      const length = bounds.length;\n      let i;\n      for (i = 0; i < length; ++i) {\n        if (v < bounds[i]) {\n          break;\n        }\n      }\n\n      // encode value into domain of function\n      let dmin = domain[0];\n      if (i > 0) {\n        dmin = bounds[i - 1];\n      }\n      let dmax = domain[1];\n      if (i < bounds.length) {\n        dmax = bounds[i];\n      }\n\n      const rmin = encode[2 * i];\n      const rmax = encode[2 * i + 1];\n\n      // Prevent the value from becoming NaN as a result\n      // of division by zero (fixes issue6113.pdf).\n      tmpBuf[0] =\n        dmin === dmax\n          ? rmin\n          : rmin + ((v - dmin) * (rmax - rmin)) / (dmax - dmin);\n\n      // call the appropriate function\n      fns[i](tmpBuf, 0, dest, destOffset);\n    };\n  }\n\n  static constructPostScript({ xref, isEvalSupported, fn, dict }) {\n    const domain = toNumberArray(dict.getArray(\"Domain\"));\n    const range = toNumberArray(dict.getArray(\"Range\"));\n\n    if (!domain) {\n      throw new FormatError(\"No domain.\");\n    }\n\n    if (!range) {\n      throw new FormatError(\"No range.\");\n    }\n\n    const lexer = new PostScriptLexer(fn);\n    const parser = new PostScriptParser(lexer);\n    const code = parser.parse();\n\n    if (isEvalSupported && IsEvalSupportedCached.value) {\n      const compiled = new PostScriptCompiler().compile(code, domain, range);\n      if (compiled) {\n        // Compiled function consists of simple expressions such as addition,\n        // subtraction, Math.max, and also contains 'var' and 'return'\n        // statements. See the generation in the PostScriptCompiler below.\n        // eslint-disable-next-line no-new-func\n        return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n      }\n    }\n    info(\"Unable to compile PS function\");\n\n    const numOutputs = range.length >> 1;\n    const numInputs = domain.length >> 1;\n    const evaluator = new PostScriptEvaluator(code);\n    // Cache the values for a big speed up, the cache size is limited though\n    // since the number of possible values can be huge from a PS function.\n    const cache = Object.create(null);\n    // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n    // seen in our tests.\n    const MAX_CACHE_SIZE = 2048 * 4;\n    let cache_available = MAX_CACHE_SIZE;\n    const tmpBuf = new Float32Array(numInputs);\n\n    return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\n      let i, value;\n      let key = \"\";\n      const input = tmpBuf;\n      for (i = 0; i < numInputs; i++) {\n        value = src[srcOffset + i];\n        input[i] = value;\n        key += value + \"_\";\n      }\n\n      const cachedValue = cache[key];\n      if (cachedValue !== undefined) {\n        dest.set(cachedValue, destOffset);\n        return;\n      }\n\n      const output = new Float32Array(numOutputs);\n      const stack = evaluator.execute(input);\n      const stackIndex = stack.length - numOutputs;\n      for (i = 0; i < numOutputs; i++) {\n        value = stack[stackIndex + i];\n        let bound = range[i * 2];\n        if (value < bound) {\n          value = bound;\n        } else {\n          bound = range[i * 2 + 1];\n          if (value > bound) {\n            value = bound;\n          }\n        }\n        output[i] = value;\n      }\n      if (cache_available > 0) {\n        cache_available--;\n        cache[key] = output;\n      }\n      dest.set(output, destOffset);\n    };\n  }\n}\n\nfunction isPDFFunction(v) {\n  let fnDict;\n  if (typeof v !== \"object\") {\n    return false;\n  } else if (v instanceof Dict) {\n    fnDict = v;\n  } else if (v instanceof BaseStream) {\n    fnDict = v.dict;\n  } else {\n    return false;\n  }\n  return fnDict.has(\"FunctionType\");\n}\n\nclass PostScriptStack {\n  static get MAX_STACK_SIZE() {\n    return shadow(this, \"MAX_STACK_SIZE\", 100);\n  }\n\n  constructor(initialStack) {\n    this.stack = !initialStack\n      ? []\n      : Array.prototype.slice.call(initialStack, 0);\n  }\n\n  push(value) {\n    if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\n      throw new Error(\"PostScript function stack overflow.\");\n    }\n    this.stack.push(value);\n  }\n\n  pop() {\n    if (this.stack.length <= 0) {\n      throw new Error(\"PostScript function stack underflow.\");\n    }\n    return this.stack.pop();\n  }\n\n  copy(n) {\n    if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\n      throw new Error(\"PostScript function stack overflow.\");\n    }\n    const stack = this.stack;\n    for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n      stack.push(stack[i]);\n    }\n  }\n\n  index(n) {\n    this.push(this.stack[this.stack.length - n - 1]);\n  }\n\n  // rotate the last n stack elements p times\n  roll(n, p) {\n    const stack = this.stack;\n    const l = stack.length - n;\n    const r = stack.length - 1;\n    const c = l + (p - Math.floor(p / n) * n);\n\n    for (let i = l, j = r; i < j; i++, j--) {\n      const t = stack[i];\n      stack[i] = stack[j];\n      stack[j] = t;\n    }\n    for (let i = l, j = c - 1; i < j; i++, j--) {\n      const t = stack[i];\n      stack[i] = stack[j];\n      stack[j] = t;\n    }\n    for (let i = c, j = r; i < j; i++, j--) {\n      const t = stack[i];\n      stack[i] = stack[j];\n      stack[j] = t;\n    }\n  }\n}\n\nclass PostScriptEvaluator {\n  constructor(operators) {\n    this.operators = operators;\n  }\n\n  execute(initialStack) {\n    const stack = new PostScriptStack(initialStack);\n    let counter = 0;\n    const operators = this.operators;\n    const length = operators.length;\n    let operator, a, b;\n    while (counter < length) {\n      operator = operators[counter++];\n      if (typeof operator === \"number\") {\n        // Operator is really an operand and should be pushed to the stack.\n        stack.push(operator);\n        continue;\n      }\n      switch (operator) {\n        // non standard ps operators\n        case \"jz\": // jump if false\n          b = stack.pop();\n          a = stack.pop();\n          if (!a) {\n            counter = b;\n          }\n          break;\n        case \"j\": // jump\n          a = stack.pop();\n          counter = a;\n          break;\n\n        // all ps operators in alphabetical order (excluding if/ifelse)\n        case \"abs\":\n          a = stack.pop();\n          stack.push(Math.abs(a));\n          break;\n        case \"add\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a + b);\n          break;\n        case \"and\":\n          b = stack.pop();\n          a = stack.pop();\n          if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n            stack.push(a && b);\n          } else {\n            stack.push(a & b);\n          }\n          break;\n        case \"atan\":\n          a = stack.pop();\n          stack.push(Math.atan(a));\n          break;\n        case \"bitshift\":\n          b = stack.pop();\n          a = stack.pop();\n          if (a > 0) {\n            stack.push(a << b);\n          } else {\n            stack.push(a >> b);\n          }\n          break;\n        case \"ceiling\":\n          a = stack.pop();\n          stack.push(Math.ceil(a));\n          break;\n        case \"copy\":\n          a = stack.pop();\n          stack.copy(a);\n          break;\n        case \"cos\":\n          a = stack.pop();\n          stack.push(Math.cos(a));\n          break;\n        case \"cvi\":\n          a = stack.pop() | 0;\n          stack.push(a);\n          break;\n        case \"cvr\":\n          // noop\n          break;\n        case \"div\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a / b);\n          break;\n        case \"dup\":\n          stack.copy(1);\n          break;\n        case \"eq\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a === b);\n          break;\n        case \"exch\":\n          stack.roll(2, 1);\n          break;\n        case \"exp\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a ** b);\n          break;\n        case \"false\":\n          stack.push(false);\n          break;\n        case \"floor\":\n          a = stack.pop();\n          stack.push(Math.floor(a));\n          break;\n        case \"ge\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a >= b);\n          break;\n        case \"gt\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a > b);\n          break;\n        case \"idiv\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push((a / b) | 0);\n          break;\n        case \"index\":\n          a = stack.pop();\n          stack.index(a);\n          break;\n        case \"le\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a <= b);\n          break;\n        case \"ln\":\n          a = stack.pop();\n          stack.push(Math.log(a));\n          break;\n        case \"log\":\n          a = stack.pop();\n          stack.push(Math.log(a) / Math.LN10);\n          break;\n        case \"lt\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a < b);\n          break;\n        case \"mod\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a % b);\n          break;\n        case \"mul\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a * b);\n          break;\n        case \"ne\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a !== b);\n          break;\n        case \"neg\":\n          a = stack.pop();\n          stack.push(-a);\n          break;\n        case \"not\":\n          a = stack.pop();\n          if (typeof a === \"boolean\") {\n            stack.push(!a);\n          } else {\n            stack.push(~a);\n          }\n          break;\n        case \"or\":\n          b = stack.pop();\n          a = stack.pop();\n          if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n            stack.push(a || b);\n          } else {\n            stack.push(a | b);\n          }\n          break;\n        case \"pop\":\n          stack.pop();\n          break;\n        case \"roll\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.roll(a, b);\n          break;\n        case \"round\":\n          a = stack.pop();\n          stack.push(Math.round(a));\n          break;\n        case \"sin\":\n          a = stack.pop();\n          stack.push(Math.sin(a));\n          break;\n        case \"sqrt\":\n          a = stack.pop();\n          stack.push(Math.sqrt(a));\n          break;\n        case \"sub\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a - b);\n          break;\n        case \"true\":\n          stack.push(true);\n          break;\n        case \"truncate\":\n          a = stack.pop();\n          a = a < 0 ? Math.ceil(a) : Math.floor(a);\n          stack.push(a);\n          break;\n        case \"xor\":\n          b = stack.pop();\n          a = stack.pop();\n          if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n            stack.push(a !== b);\n          } else {\n            stack.push(a ^ b);\n          }\n          break;\n        default:\n          throw new FormatError(`Unknown operator ${operator}`);\n      }\n    }\n    return stack.stack;\n  }\n}\n\n// Most of the PDFs functions consist of simple operations such as:\n//   roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nconst PostScriptCompiler = (function PostScriptCompilerClosure() {\n  class AstNode {\n    constructor(type) {\n      this.type = type;\n    }\n\n    visit(visitor) {\n      unreachable(\"abstract method\");\n    }\n  }\n\n  class AstArgument extends AstNode {\n    constructor(index, min, max) {\n      super(\"args\");\n      this.index = index;\n      this.min = min;\n      this.max = max;\n    }\n\n    visit(visitor) {\n      visitor.visitArgument(this);\n    }\n  }\n\n  class AstLiteral extends AstNode {\n    constructor(number) {\n      super(\"literal\");\n      this.number = number;\n      this.min = number;\n      this.max = number;\n    }\n\n    visit(visitor) {\n      visitor.visitLiteral(this);\n    }\n  }\n\n  class AstBinaryOperation extends AstNode {\n    constructor(op, arg1, arg2, min, max) {\n      super(\"binary\");\n      this.op = op;\n      this.arg1 = arg1;\n      this.arg2 = arg2;\n      this.min = min;\n      this.max = max;\n    }\n\n    visit(visitor) {\n      visitor.visitBinaryOperation(this);\n    }\n  }\n\n  class AstMin extends AstNode {\n    constructor(arg, max) {\n      super(\"max\");\n      this.arg = arg;\n      this.min = arg.min;\n      this.max = max;\n    }\n\n    visit(visitor) {\n      visitor.visitMin(this);\n    }\n  }\n\n  class AstVariable extends AstNode {\n    constructor(index, min, max) {\n      super(\"var\");\n      this.index = index;\n      this.min = min;\n      this.max = max;\n    }\n\n    visit(visitor) {\n      visitor.visitVariable(this);\n    }\n  }\n\n  class AstVariableDefinition extends AstNode {\n    constructor(variable, arg) {\n      super(\"definition\");\n      this.variable = variable;\n      this.arg = arg;\n    }\n\n    visit(visitor) {\n      visitor.visitVariableDefinition(this);\n    }\n  }\n\n  class ExpressionBuilderVisitor {\n    constructor() {\n      this.parts = [];\n    }\n\n    visitArgument(arg) {\n      this.parts.push(\n        \"Math.max(\",\n        arg.min,\n        \", Math.min(\",\n        arg.max,\n        \", src[srcOffset + \",\n        arg.index,\n        \"]))\"\n      );\n    }\n\n    visitVariable(variable) {\n      this.parts.push(\"v\", variable.index);\n    }\n\n    visitLiteral(literal) {\n      this.parts.push(literal.number);\n    }\n\n    visitBinaryOperation(operation) {\n      this.parts.push(\"(\");\n      operation.arg1.visit(this);\n      this.parts.push(\" \", operation.op, \" \");\n      operation.arg2.visit(this);\n      this.parts.push(\")\");\n    }\n\n    visitVariableDefinition(definition) {\n      this.parts.push(\"var \");\n      definition.variable.visit(this);\n      this.parts.push(\" = \");\n      definition.arg.visit(this);\n      this.parts.push(\";\");\n    }\n\n    visitMin(max) {\n      this.parts.push(\"Math.min(\");\n      max.arg.visit(this);\n      this.parts.push(\", \", max.max, \")\");\n    }\n\n    toString() {\n      return this.parts.join(\"\");\n    }\n  }\n\n  function buildAddOperation(num1, num2) {\n    if (num2.type === \"literal\" && num2.number === 0) {\n      // optimization: second operand is 0\n      return num1;\n    }\n    if (num1.type === \"literal\" && num1.number === 0) {\n      // optimization: first operand is 0\n      return num2;\n    }\n    if (num2.type === \"literal\" && num1.type === \"literal\") {\n      // optimization: operands operand are literals\n      return new AstLiteral(num1.number + num2.number);\n    }\n    return new AstBinaryOperation(\n      \"+\",\n      num1,\n      num2,\n      num1.min + num2.min,\n      num1.max + num2.max\n    );\n  }\n\n  function buildMulOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num2.number === 1) {\n        return num1; // and it's 1\n      } else if (num1.type === \"literal\") {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number * num2.number);\n      }\n    }\n    if (num1.type === \"literal\") {\n      // optimization: first operands is a literal...\n      if (num1.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num1.number === 1) {\n        return num2; // and it's 1\n      }\n    }\n    const min = Math.min(\n      num1.min * num2.min,\n      num1.min * num2.max,\n      num1.max * num2.min,\n      num1.max * num2.max\n    );\n    const max = Math.max(\n      num1.min * num2.min,\n      num1.min * num2.max,\n      num1.max * num2.min,\n      num1.max * num2.max\n    );\n    return new AstBinaryOperation(\"*\", num1, num2, min, max);\n  }\n\n  function buildSubOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return num1; // ... and it's 0\n      } else if (num1.type === \"literal\") {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number - num2.number);\n      }\n    }\n    if (\n      num2.type === \"binary\" &&\n      num2.op === \"-\" &&\n      num1.type === \"literal\" &&\n      num1.number === 1 &&\n      num2.arg1.type === \"literal\" &&\n      num2.arg1.number === 1\n    ) {\n      // optimization for case: 1 - (1 - x)\n      return num2.arg2;\n    }\n    return new AstBinaryOperation(\n      \"-\",\n      num1,\n      num2,\n      num1.min - num2.max,\n      num1.max - num2.min\n    );\n  }\n\n  function buildMinOperation(num1, max) {\n    if (num1.min >= max) {\n      // optimization: num1 min value is not less than required max\n      return new AstLiteral(max); // just returning max\n    } else if (num1.max <= max) {\n      // optimization: num1 max value is not greater than required max\n      return num1; // just returning an argument\n    }\n    return new AstMin(num1, max);\n  }\n\n  // eslint-disable-next-line no-shadow\n  class PostScriptCompiler {\n    compile(code, domain, range) {\n      const stack = [];\n      const instructions = [];\n      const inputSize = domain.length >> 1,\n        outputSize = range.length >> 1;\n      let lastRegister = 0;\n      let n, j;\n      let num1, num2, ast1, ast2, tmpVar, item;\n      for (let i = 0; i < inputSize; i++) {\n        stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n      }\n\n      for (let i = 0, ii = code.length; i < ii; i++) {\n        item = code[i];\n        if (typeof item === \"number\") {\n          stack.push(new AstLiteral(item));\n          continue;\n        }\n\n        switch (item) {\n          case \"add\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildAddOperation(num1, num2));\n            break;\n          case \"cvr\":\n            if (stack.length < 1) {\n              return null;\n            }\n            break;\n          case \"mul\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildMulOperation(num1, num2));\n            break;\n          case \"sub\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildSubOperation(num1, num2));\n            break;\n          case \"exch\":\n            if (stack.length < 2) {\n              return null;\n            }\n            ast1 = stack.pop();\n            ast2 = stack.pop();\n            stack.push(ast1, ast2);\n            break;\n          case \"pop\":\n            if (stack.length < 1) {\n              return null;\n            }\n            stack.pop();\n            break;\n          case \"index\":\n            if (stack.length < 1) {\n              return null;\n            }\n            num1 = stack.pop();\n            if (num1.type !== \"literal\") {\n              return null;\n            }\n            n = num1.number;\n            if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n              return null;\n            }\n            ast1 = stack[stack.length - n - 1];\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - n - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case \"dup\":\n            if (stack.length < 1) {\n              return null;\n            }\n            if (\n              typeof code[i + 1] === \"number\" &&\n              code[i + 2] === \"gt\" &&\n              code[i + 3] === i + 7 &&\n              code[i + 4] === \"jz\" &&\n              code[i + 5] === \"pop\" &&\n              code[i + 6] === code[i + 1]\n            ) {\n              // special case of the commands sequence for the min operation\n              num1 = stack.pop();\n              stack.push(buildMinOperation(num1, code[i + 1]));\n              i += 6;\n              break;\n            }\n            ast1 = stack[stack.length - 1];\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              // we don't have to save into intermediate variable a literal or\n              // variable.\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case \"roll\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n              // both roll operands must be numbers\n              return null;\n            }\n            j = num2.number;\n            n = num1.number;\n            if (\n              n <= 0 ||\n              !Number.isInteger(n) ||\n              !Number.isInteger(j) ||\n              stack.length < n\n            ) {\n              // ... and integers\n              return null;\n            }\n            j = ((j % n) + n) % n;\n            if (j === 0) {\n              break; // just skipping -- there are nothing to rotate\n            }\n            Array.prototype.push.apply(\n              stack,\n              stack.splice(stack.length - n, n - j)\n            );\n            break;\n          default:\n            return null; // unsupported operator\n        }\n      }\n\n      if (stack.length !== outputSize) {\n        return null;\n      }\n\n      const result = [];\n      for (const instruction of instructions) {\n        const statementBuilder = new ExpressionBuilderVisitor();\n        instruction.visit(statementBuilder);\n        result.push(statementBuilder.toString());\n      }\n      for (let i = 0, ii = stack.length; i < ii; i++) {\n        const expr = stack[i],\n          statementBuilder = new ExpressionBuilderVisitor();\n        expr.visit(statementBuilder);\n        const min = range[i * 2],\n          max = range[i * 2 + 1];\n        const out = [statementBuilder.toString()];\n        if (min > expr.min) {\n          out.unshift(\"Math.max(\", min, \", \");\n          out.push(\")\");\n        }\n        if (max < expr.max) {\n          out.unshift(\"Math.min(\", max, \", \");\n          out.push(\")\");\n        }\n        out.unshift(\"dest[destOffset + \", i, \"] = \");\n        out.push(\";\");\n        result.push(out.join(\"\"));\n      }\n      return result.join(\"\\n\");\n    }\n  }\n\n  return PostScriptCompiler;\n})();\n\nexport {\n  isPDFFunction,\n  PDFFunctionFactory,\n  PostScriptCompiler,\n  PostScriptEvaluator,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, shadow } from \"../shared/util.js\";\nimport { EOF } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass PostScriptParser {\n  constructor(lexer) {\n    this.lexer = lexer;\n    this.operators = [];\n    this.token = null;\n    this.prev = null;\n  }\n\n  nextToken() {\n    this.prev = this.token;\n    this.token = this.lexer.getToken();\n  }\n\n  accept(type) {\n    if (this.token.type === type) {\n      this.nextToken();\n      return true;\n    }\n    return false;\n  }\n\n  expect(type) {\n    if (this.accept(type)) {\n      return true;\n    }\n    throw new FormatError(\n      `Unexpected symbol: found ${this.token.type} expected ${type}.`\n    );\n  }\n\n  parse() {\n    this.nextToken();\n    this.expect(PostScriptTokenTypes.LBRACE);\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    return this.operators;\n  }\n\n  parseBlock() {\n    while (true) {\n      if (this.accept(PostScriptTokenTypes.NUMBER)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n        this.parseCondition();\n      } else {\n        return;\n      }\n    }\n  }\n\n  parseCondition() {\n    // Add two place holders that will be updated later\n    const conditionLocation = this.operators.length;\n    this.operators.push(null, null);\n\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    if (this.accept(PostScriptTokenTypes.IF)) {\n      // The true block is right after the 'if' so it just falls through on true\n      // else it jumps and skips the true block.\n      this.operators[conditionLocation] = this.operators.length;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n      const jumpLocation = this.operators.length;\n      this.operators.push(null, null);\n      const endOfTrue = this.operators.length;\n      this.parseBlock();\n      this.expect(PostScriptTokenTypes.RBRACE);\n      this.expect(PostScriptTokenTypes.IFELSE);\n      // The jump is added at the end of the true block to skip the false block.\n      this.operators[jumpLocation] = this.operators.length;\n      this.operators[jumpLocation + 1] = \"j\";\n\n      this.operators[conditionLocation] = endOfTrue;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else {\n      throw new FormatError(\"PS Function: error parsing conditional.\");\n    }\n  }\n}\n\nconst PostScriptTokenTypes = {\n  LBRACE: 0,\n  RBRACE: 1,\n  NUMBER: 2,\n  OPERATOR: 3,\n  IF: 4,\n  IFELSE: 5,\n};\n\nclass PostScriptToken {\n  static get opCache() {\n    return shadow(this, \"opCache\", Object.create(null));\n  }\n\n  constructor(type, value) {\n    this.type = type;\n    this.value = value;\n  }\n\n  static getOperator(op) {\n    const opValue = PostScriptToken.opCache[op];\n    if (opValue) {\n      return opValue;\n    }\n    return (PostScriptToken.opCache[op] = new PostScriptToken(\n      PostScriptTokenTypes.OPERATOR,\n      op\n    ));\n  }\n\n  static get LBRACE() {\n    return shadow(\n      this,\n      \"LBRACE\",\n      new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\")\n    );\n  }\n\n  static get RBRACE() {\n    return shadow(\n      this,\n      \"RBRACE\",\n      new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\")\n    );\n  }\n\n  static get IF() {\n    return shadow(\n      this,\n      \"IF\",\n      new PostScriptToken(PostScriptTokenTypes.IF, \"IF\")\n    );\n  }\n\n  static get IFELSE() {\n    return shadow(\n      this,\n      \"IFELSE\",\n      new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\")\n    );\n  }\n}\n\nclass PostScriptLexer {\n  constructor(stream) {\n    this.stream = stream;\n    this.nextChar();\n\n    this.strBuf = [];\n  }\n\n  nextChar() {\n    return (this.currentChar = this.stream.getByte());\n  }\n\n  getToken() {\n    let comment = false;\n    let ch = this.currentChar;\n\n    // skip comments\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n\n      if (comment) {\n        if (ch === 0x0a || ch === 0x0d) {\n          comment = false;\n        }\n      } else if (ch === /* '%' = */ 0x25) {\n        comment = true;\n      } else if (!isWhiteSpace(ch)) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n    switch (ch | 0) {\n      case 0x30: // '0'\n      case 0x31: // '1'\n      case 0x32: // '2'\n      case 0x33: // '3'\n      case 0x34: // '4'\n      case 0x35: // '5'\n      case 0x36: // '6'\n      case 0x37: // '7'\n      case 0x38: // '8'\n      case 0x39: // '9'\n      case 0x2b: // '+'\n      case 0x2d: // '-'\n      case 0x2e: // '.'\n        return new PostScriptToken(\n          PostScriptTokenTypes.NUMBER,\n          this.getNumber()\n        );\n      case 0x7b: // '{'\n        this.nextChar();\n        return PostScriptToken.LBRACE;\n      case 0x7d: // '}'\n        this.nextChar();\n        return PostScriptToken.RBRACE;\n    }\n    // operator\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while (\n      (ch = this.nextChar()) >= 0 &&\n      ((ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x5a) ||\n        (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x7a))\n    ) {\n      strBuf.push(String.fromCharCode(ch));\n    }\n    const str = strBuf.join(\"\");\n    switch (str.toLowerCase()) {\n      case \"if\":\n        return PostScriptToken.IF;\n      case \"ifelse\":\n        return PostScriptToken.IFELSE;\n      default:\n        return PostScriptToken.getOperator(str);\n    }\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (\n        (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) ||\n        ch === /* '-' = */ 0x2d ||\n        ch === /* '.' = */ 0x2e\n      ) {\n        strBuf.push(String.fromCharCode(ch));\n      } else {\n        break;\n      }\n    }\n    const value = parseFloat(strBuf.join(\"\"));\n    if (isNaN(value)) {\n      throw new FormatError(`Invalid floating point number: ${value}`);\n    }\n    return value;\n  }\n}\n\nexport { PostScriptLexer, PostScriptParser };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable, warn } from \"../shared/util.js\";\nimport { RefSetCache } from \"./primitives.js\";\n\nclass BaseLocalCache {\n  constructor(options) {\n    if (this.constructor === BaseLocalCache) {\n      unreachable(\"Cannot initialize BaseLocalCache.\");\n    }\n    this._onlyRefs = (options && options.onlyRefs) === true;\n\n    if (!this._onlyRefs) {\n      this._nameRefMap = new Map();\n      this._imageMap = new Map();\n    }\n    this._imageCache = new RefSetCache();\n  }\n\n  getByName(name) {\n    if (this._onlyRefs) {\n      unreachable(\"Should not call `getByName` method.\");\n    }\n    const ref = this._nameRefMap.get(name);\n    if (ref) {\n      return this.getByRef(ref);\n    }\n    return this._imageMap.get(name) || null;\n  }\n\n  getByRef(ref) {\n    return this._imageCache.get(ref) || null;\n  }\n\n  set(name, ref, data) {\n    unreachable(\"Abstract method `set` called.\");\n  }\n}\n\nclass LocalImageCache extends BaseLocalCache {\n  set(name, ref = null, data) {\n    if (typeof name !== \"string\") {\n      throw new Error('LocalImageCache.set - expected \"name\" argument.');\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      this._nameRefMap.set(name, ref);\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass LocalColorSpaceCache extends BaseLocalCache {\n  set(name = null, ref = null, data) {\n    if (typeof name !== \"string\" && !ref) {\n      throw new Error(\n        'LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.'\n      );\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      if (name !== null) {\n        // Optional when `ref` is defined.\n        this._nameRefMap.set(name, ref);\n      }\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass LocalFunctionCache extends BaseLocalCache {\n  constructor(options) {\n    super({ onlyRefs: true });\n  }\n\n  set(name = null, ref, data) {\n    if (!ref) {\n      throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n}\n\nclass LocalGStateCache extends BaseLocalCache {\n  set(name, ref = null, data) {\n    if (typeof name !== \"string\") {\n      throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      this._nameRefMap.set(name, ref);\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass LocalTilingPatternCache extends BaseLocalCache {\n  constructor(options) {\n    super({ onlyRefs: true });\n  }\n\n  set(name = null, ref, data) {\n    if (!ref) {\n      throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n}\n\nclass GlobalImageCache {\n  static get NUM_PAGES_THRESHOLD() {\n    return shadow(this, \"NUM_PAGES_THRESHOLD\", 2);\n  }\n\n  static get MIN_IMAGES_TO_CACHE() {\n    return shadow(this, \"MIN_IMAGES_TO_CACHE\", 10);\n  }\n\n  static get MAX_BYTE_SIZE() {\n    return shadow(this, \"MAX_BYTE_SIZE\", /* Forty megabytes = */ 40e6);\n  }\n\n  constructor() {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\n        \"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\"\n      );\n    }\n    this._refCache = new RefSetCache();\n    this._imageCache = new RefSetCache();\n  }\n\n  get _byteSize() {\n    let byteSize = 0;\n    this._imageCache.forEach(imageData => {\n      byteSize += imageData.byteSize;\n    });\n    return byteSize;\n  }\n\n  get _cacheLimitReached() {\n    if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n      return false;\n    }\n    if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n      return false;\n    }\n    return true;\n  }\n\n  shouldCache(ref, pageIndex) {\n    const pageIndexSet = this._refCache.get(ref);\n    const numPages = pageIndexSet\n      ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1)\n      : 1;\n\n    if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return false;\n    }\n    if (!this._imageCache.has(ref) && this._cacheLimitReached) {\n      return false;\n    }\n    return true;\n  }\n\n  addPageIndex(ref, pageIndex) {\n    let pageIndexSet = this._refCache.get(ref);\n    if (!pageIndexSet) {\n      pageIndexSet = new Set();\n      this._refCache.put(ref, pageIndexSet);\n    }\n    pageIndexSet.add(pageIndex);\n  }\n\n  /**\n   * PLEASE NOTE: Must be called *after* the `setData` method.\n   */\n  addByteSize(ref, byteSize) {\n    const imageData = this._imageCache.get(ref);\n    if (!imageData) {\n      return; // The image data isn't cached (the limit was reached).\n    }\n    if (imageData.byteSize) {\n      return; // The byte-size has already been set.\n    }\n    imageData.byteSize = byteSize;\n  }\n\n  getData(ref, pageIndex) {\n    const pageIndexSet = this._refCache.get(ref);\n    if (!pageIndexSet) {\n      return null;\n    }\n    if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return null;\n    }\n    const imageData = this._imageCache.get(ref);\n    if (!imageData) {\n      return null;\n    }\n    // Ensure that we keep track of all pages containing the image reference.\n    pageIndexSet.add(pageIndex);\n\n    return imageData;\n  }\n\n  setData(ref, data) {\n    if (!this._refCache.has(ref)) {\n      throw new Error(\n        'GlobalImageCache.setData - expected \"addPageIndex\" to have been called.'\n      );\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    if (this._cacheLimitReached) {\n      warn(\"GlobalImageCache.setData - cache limit reached.\");\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n\n  clear(onlyData = false) {\n    if (!onlyData) {\n      this._refCache.clear();\n    }\n    this._imageCache.clear();\n  }\n}\n\nexport {\n  GlobalImageCache,\n  LocalColorSpaceCache,\n  LocalFunctionCache,\n  LocalGStateCache,\n  LocalImageCache,\n  LocalTilingPatternCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from \"../shared/util.js\";\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// prettier-ignore\nconst baseTypes = [\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\",\n  \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\",\n  \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\",\n  \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\",\n  \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\",\n  \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\",\n  \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\",\n  \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\n// prettier-ignore\nconst arabicTypes = [\n  \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\",\n  \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\",\n  \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\",\n  \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\",\n  \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\",\n  \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"\n];\n\nfunction isOdd(i) {\n  return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n  return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n  let j, jj;\n  for (j = start, jj = arr.length; j < jj; ++j) {\n    if (arr[j] !== value) {\n      return j;\n    }\n  }\n  return j;\n}\n\nfunction setValues(arr, start, end, value) {\n  for (let j = start; j < end; ++j) {\n    arr[j] = value;\n  }\n}\n\nfunction reverseValues(arr, start, end) {\n  for (let i = start, j = end - 1; i < j; ++i, --j) {\n    const temp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = temp;\n  }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n  let dir = \"ltr\";\n  if (vertical) {\n    dir = \"ttb\";\n  } else if (!isLTR) {\n    dir = \"rtl\";\n  }\n  return { str, dir };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nconst chars = [];\nconst types = [];\n\nfunction bidi(str, startLevel = -1, vertical = false) {\n  let isLTR = true;\n  const strLength = str.length;\n  if (strLength === 0 || vertical) {\n    return createBidiText(str, isLTR, vertical);\n  }\n\n  // Get types and fill arrays\n  chars.length = strLength;\n  types.length = strLength;\n  let numBidi = 0;\n\n  let i, ii;\n  for (i = 0; i < strLength; ++i) {\n    chars[i] = str.charAt(i);\n\n    const charCode = str.charCodeAt(i);\n    let charType = \"L\";\n    if (charCode <= 0x00ff) {\n      charType = baseTypes[charCode];\n    } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n      charType = \"R\";\n    } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n      charType = arabicTypes[charCode & 0xff];\n      if (!charType) {\n        warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n      }\n    } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n      charType = \"AL\";\n    }\n    if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n      numBidi++;\n    }\n    types[i] = charType;\n  }\n\n  // Detect the bidi method\n  // - If there are no rtl characters then no bidi needed\n  // - If less than 30% chars are rtl then string is primarily ltr,\n  //   unless the string is very short.\n  // - If more than 30% chars are rtl then string is primarily rtl\n  if (numBidi === 0) {\n    isLTR = true;\n    return createBidiText(str, isLTR);\n  }\n\n  if (startLevel === -1) {\n    if (numBidi / strLength < 0.3 && strLength > 4) {\n      isLTR = true;\n      startLevel = 0;\n    } else {\n      isLTR = false;\n      startLevel = 1;\n    }\n  }\n\n  const levels = [];\n  for (i = 0; i < strLength; ++i) {\n    levels[i] = startLevel;\n  }\n\n  /*\n   X1-X10: skip most of this, since we are NOT doing the embeddings.\n   */\n  const e = isOdd(startLevel) ? \"R\" : \"L\";\n  const sor = e;\n  const eor = sor;\n\n  /*\n   W1. Examine each non-spacing mark (NSM) in the level run, and change the\n   type of the NSM to the type of the previous character. If the NSM is at the\n   start of the level run, it will get the type of sor.\n   */\n  let lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"NSM\") {\n      types[i] = lastType;\n    } else {\n      lastType = types[i];\n    }\n  }\n\n  /*\n   W2. Search backwards from each instance of a European number until the\n   first strong type (R, L, AL, or sor) is found.  If an AL is found, change\n   the type of the European number to Arabic number.\n   */\n  lastType = sor;\n  let t;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n      lastType = t;\n    }\n  }\n\n  /*\n   W3. Change all ALs to R.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"AL\") {\n      types[i] = \"R\";\n    }\n  }\n\n  /*\n   W4. A single European separator between two European numbers changes to a\n   European number. A single common separator between two numbers of the same\n   type changes to that type:\n   */\n  for (i = 1; i < strLength - 1; ++i) {\n    if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n      types[i] = \"EN\";\n    }\n    if (\n      types[i] === \"CS\" &&\n      (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") &&\n      types[i + 1] === types[i - 1]\n    ) {\n      types[i] = types[i - 1];\n    }\n  }\n\n  /*\n   W5. A sequence of European terminators adjacent to European numbers changes\n   to all European numbers:\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"EN\") {\n      // do before\n      for (let j = i - 1; j >= 0; --j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n      // do after\n      for (let j = i + 1; j < strLength; ++j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n    }\n  }\n\n  /*\n   W6. Otherwise, separators and terminators change to Other Neutral:\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n      types[i] = \"ON\";\n    }\n  }\n\n  /*\n   W7. Search backwards from each instance of a European number until the\n   first strong type (R, L, or sor) is found. If an L is found,  then change\n   the type of the European number to L.\n   */\n  lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\") {\n      lastType = t;\n    }\n  }\n\n  /*\n   N1. A sequence of neutrals takes the direction of the surrounding strong\n   text if the text on both sides has the same direction. European and Arabic\n   numbers are treated as though they were R. Start-of-level-run (sor) and\n   end-of-level-run (eor) are used at level run boundaries.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      const end = findUnequal(types, i + 1, \"ON\");\n      let before = sor;\n      if (i > 0) {\n        before = types[i - 1];\n      }\n\n      let after = eor;\n      if (end + 1 < strLength) {\n        after = types[end + 1];\n      }\n      if (before !== \"L\") {\n        before = \"R\";\n      }\n      if (after !== \"L\") {\n        after = \"R\";\n      }\n      if (before === after) {\n        setValues(types, i, end, before);\n      }\n      i = end - 1; // reset to end (-1 so next iteration is ok)\n    }\n  }\n\n  /*\n   N2. Any remaining neutrals take the embedding direction.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      types[i] = e;\n    }\n  }\n\n  /*\n   I1. For all characters with an even (left-to-right) embedding direction,\n   those of type R go up one level and those of type AN or EN go up two\n   levels.\n   I2. For all characters with an odd (right-to-left) embedding direction,\n   those of type L, EN or AN go up one level.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (isEven(levels[i])) {\n      if (t === \"R\") {\n        levels[i] += 1;\n      } else if (t === \"AN\" || t === \"EN\") {\n        levels[i] += 2;\n      }\n    } else {\n      // isOdd\n      if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n        levels[i] += 1;\n      }\n    }\n  }\n\n  /*\n   L1. On each line, reset the embedding level of the following characters to\n   the paragraph embedding level:\n\n   segment separators,\n   paragraph separators,\n   any sequence of whitespace characters preceding a segment separator or\n   paragraph separator, and any sequence of white space characters at the end\n   of the line.\n   */\n\n  // don't bother as text is only single line\n\n  /*\n   L2. From the highest level found in the text to the lowest odd level on\n   each line, reverse any contiguous sequence of characters that are at that\n   level or higher.\n   */\n\n  // find highest level & lowest odd level\n  let highestLevel = -1;\n  let lowestOddLevel = 99;\n  let level;\n  for (i = 0, ii = levels.length; i < ii; ++i) {\n    level = levels[i];\n    if (highestLevel < level) {\n      highestLevel = level;\n    }\n    if (lowestOddLevel > level && isOdd(level)) {\n      lowestOddLevel = level;\n    }\n  }\n\n  // now reverse between those limits\n  for (level = highestLevel; level >= lowestOddLevel; --level) {\n    // find segments to reverse\n    let start = -1;\n    for (i = 0, ii = levels.length; i < ii; ++i) {\n      if (levels[i] < level) {\n        if (start >= 0) {\n          reverseValues(chars, start, i);\n          start = -1;\n        }\n      } else if (start < 0) {\n        start = i;\n      }\n    }\n    if (start >= 0) {\n      reverseValues(chars, start, levels.length);\n    }\n  }\n\n  /*\n   L3. Combining marks applied to a right-to-left base character will at this\n   point precede their base character. If the rendering engine expects them to\n   follow the base characters in the final display process, then the ordering\n   of the marks and the base character must be reversed.\n   */\n\n  // don't bother for now\n\n  /*\n   L4. A character that possesses the mirrored property as specified by\n   Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n   directionality of that character is R.\n   */\n\n  // don't mirror as characters are already mirrored in the pdf\n\n  // Finally, return string\n  for (i = 0, ii = chars.length; i < ii; ++i) {\n    const ch = chars[i];\n    if (ch === \"<\" || ch === \">\") {\n      chars[i] = \"\";\n    }\n  }\n  return createBidiText(chars.join(\"\"), isLTR);\n}\n\nexport { bidi };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"../shared/util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n\n  update(input) {\n    let data, length;\n    if (typeof input === \"string\") {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if (isArrayBuffer(input)) {\n      data = input.slice();\n      length = data.byteLength;\n    } else {\n      throw new Error(\n        \"Wrong data format in MurmurHash3_64_update. \" +\n          \"Input must be a string or array.\"\n      );\n    }\n\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    // We don't care about endianness here.\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n    let k1 = 0,\n      k2 = 0;\n    let h1 = this.h1,\n      h2 = this.h2;\n    const C1 = 0xcc9e2d51,\n      C2 = 0x1b873593;\n    const C1_LOW = C1 & MASK_LOW,\n      C2_LOW = C2 & MASK_LOW;\n\n    for (let i = 0; i < blockCounts; i++) {\n      if (i & 1) {\n        k1 = dataUint32[i];\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        h1 ^= k1;\n        h1 = (h1 << 13) | (h1 >>> 19);\n        h1 = h1 * 5 + 0xe6546b64;\n      } else {\n        k2 = dataUint32[i];\n        k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n        k2 = (k2 << 15) | (k2 >>> 17);\n        k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n        h2 ^= k2;\n        h2 = (h2 << 13) | (h2 >>> 19);\n        h2 = h2 * 5 + 0xe6546b64;\n      }\n    }\n\n    k1 = 0;\n\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      /* falls through */\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      /* falls through */\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        /* falls through */\n\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n    }\n\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n    h2 =\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n    h2 =\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n\n    const hex1 = (h1 >>> 0).toString(16),\n      hex2 = (h2 >>> 0).toString(16);\n    return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n  }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  ImageKind,\n  OPS,\n  RenderingIntentFlag,\n  shadow,\n  warn,\n} from \"../shared/util.js\";\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n  let state = parentState;\n  for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n    const item = pattern[i];\n    state = state[item] || (state[item] = []);\n  }\n  state[pattern[pattern.length - 1]] = {\n    checkFn,\n    iterateFn,\n    processFn,\n  };\n}\n\nfunction handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {\n  // Handles special case of mainly LaTeX documents which use image masks to\n  // draw lines with the current fill style.\n  // 'count' groups of (save, transform, paintImageMaskXObject, restore)+\n  // have been found at iFirstSave.\n  const iFirstPIMXO = iFirstSave + 2;\n  let i;\n  for (i = 0; i < count; i++) {\n    const arg = argsArray[iFirstPIMXO + 4 * i];\n    const imageMask = arg.length === 1 && arg[0];\n    if (\n      imageMask &&\n      imageMask.width === 1 &&\n      imageMask.height === 1 &&\n      (!imageMask.data.length ||\n        (imageMask.data.length === 1 && imageMask.data[0] === 0))\n    ) {\n      fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;\n      continue;\n    }\n    break;\n  }\n  return count - i;\n}\n\nconst InitialState = [];\n\n// This replaces (save, transform, paintInlineImageXObject, restore)+\n// sequences with one |paintInlineImageXObjectGroup| operation.\naddState(\n  InitialState,\n  [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n  null,\n  function iterateInlineImageGroup(context, i) {\n    const fnArray = context.fnArray;\n    const iFirstSave = context.iCurr - 3;\n    const pos = (i - iFirstSave) % 4;\n    switch (pos) {\n      case 0:\n        return fnArray[i] === OPS.save;\n      case 1:\n        return fnArray[i] === OPS.transform;\n      case 2:\n        return fnArray[i] === OPS.paintInlineImageXObject;\n      case 3:\n        return fnArray[i] === OPS.restore;\n    }\n    throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n  },\n  function foundInlineImageGroup(context, i) {\n    const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n    const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n    const MAX_WIDTH = 1000;\n    const IMAGE_PADDING = 1;\n\n    const fnArray = context.fnArray,\n      argsArray = context.argsArray;\n    const curr = context.iCurr;\n    const iFirstSave = curr - 3;\n    const iFirstTransform = curr - 2;\n    const iFirstPIIXO = curr - 1;\n\n    const count = Math.min(\n      Math.floor((i - iFirstSave) / 4),\n      MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\n    );\n    if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n      return i - ((i - iFirstSave) % 4);\n    }\n\n    // assuming that heights of those image is too small (~1 pixel)\n    // packing as much as possible by lines\n    let maxX = 0;\n    const map = [];\n    let maxLineHeight = 0;\n    let currentX = IMAGE_PADDING,\n      currentY = IMAGE_PADDING;\n    for (let q = 0; q < count; q++) {\n      const transform = argsArray[iFirstTransform + (q << 2)];\n      const img = argsArray[iFirstPIIXO + (q << 2)][0];\n      if (currentX + img.width > MAX_WIDTH) {\n        // starting new line\n        maxX = Math.max(maxX, currentX);\n        currentY += maxLineHeight + 2 * IMAGE_PADDING;\n        currentX = 0;\n        maxLineHeight = 0;\n      }\n      map.push({\n        transform,\n        x: currentX,\n        y: currentY,\n        w: img.width,\n        h: img.height,\n      });\n      currentX += img.width + 2 * IMAGE_PADDING;\n      maxLineHeight = Math.max(maxLineHeight, img.height);\n    }\n    const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n    const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n    const imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n    const imgRowSize = imgWidth << 2;\n    for (let q = 0; q < count; q++) {\n      const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n      // Copy image by lines and extends pixels into padding.\n      const rowSize = map[q].w << 2;\n      let dataOffset = 0;\n      let offset = (map[q].x + map[q].y * imgWidth) << 2;\n      imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n      for (let k = 0, kk = map[q].h; k < kk; k++) {\n        imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n        dataOffset += rowSize;\n        offset += imgRowSize;\n      }\n      imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n      while (offset >= 0) {\n        data[offset - 4] = data[offset];\n        data[offset - 3] = data[offset + 1];\n        data[offset - 2] = data[offset + 2];\n        data[offset - 1] = data[offset + 3];\n        data[offset + rowSize] = data[offset + rowSize - 4];\n        data[offset + rowSize + 1] = data[offset + rowSize - 3];\n        data[offset + rowSize + 2] = data[offset + rowSize - 2];\n        data[offset + rowSize + 3] = data[offset + rowSize - 1];\n        offset -= imgRowSize;\n      }\n    }\n\n    // Replace queue items.\n    fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n    argsArray.splice(iFirstSave, count * 4, [\n      {\n        width: imgWidth,\n        height: imgHeight,\n        kind: ImageKind.RGBA_32BPP,\n        data: imgData,\n      },\n      map,\n    ]);\n\n    return iFirstSave + 1;\n  }\n);\n\n// This replaces (save, transform, paintImageMaskXObject, restore)+\n// sequences with one |paintImageMaskXObjectGroup| or one\n// |paintImageMaskXObjectRepeat| operation.\naddState(\n  InitialState,\n  [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n  null,\n  function iterateImageMaskGroup(context, i) {\n    const fnArray = context.fnArray;\n    const iFirstSave = context.iCurr - 3;\n    const pos = (i - iFirstSave) % 4;\n    switch (pos) {\n      case 0:\n        return fnArray[i] === OPS.save;\n      case 1:\n        return fnArray[i] === OPS.transform;\n      case 2:\n        return fnArray[i] === OPS.paintImageMaskXObject;\n      case 3:\n        return fnArray[i] === OPS.restore;\n    }\n    throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n  },\n  function foundImageMaskGroup(context, i) {\n    const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n    const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n    const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n    const fnArray = context.fnArray,\n      argsArray = context.argsArray;\n    const curr = context.iCurr;\n    const iFirstSave = curr - 3;\n    const iFirstTransform = curr - 2;\n    const iFirstPIMXO = curr - 1;\n\n    // At this point, i is the index of the first op past the last valid\n    // quartet.\n    let count = Math.floor((i - iFirstSave) / 4);\n    count = handlePaintSolidColorImageMask(\n      iFirstSave,\n      count,\n      fnArray,\n      argsArray\n    );\n    if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n      return i - ((i - iFirstSave) % 4);\n    }\n\n    let isSameImage = false;\n    let iTransform, transformArgs;\n    const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n    const firstTransformArg0 = argsArray[iFirstTransform][0],\n      firstTransformArg1 = argsArray[iFirstTransform][1],\n      firstTransformArg2 = argsArray[iFirstTransform][2],\n      firstTransformArg3 = argsArray[iFirstTransform][3];\n\n    if (firstTransformArg1 === firstTransformArg2) {\n      isSameImage = true;\n      iTransform = iFirstTransform + 4;\n      let iPIMXO = iFirstPIMXO + 4;\n      for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n        transformArgs = argsArray[iTransform];\n        if (\n          argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n          transformArgs[0] !== firstTransformArg0 ||\n          transformArgs[1] !== firstTransformArg1 ||\n          transformArgs[2] !== firstTransformArg2 ||\n          transformArgs[3] !== firstTransformArg3\n        ) {\n          if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n            isSameImage = false;\n          } else {\n            count = q;\n          }\n          break; // different image or transform\n        }\n      }\n    }\n\n    if (isSameImage) {\n      count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n      const positions = new Float32Array(count * 2);\n      iTransform = iFirstTransform;\n      for (let q = 0; q < count; q++, iTransform += 4) {\n        transformArgs = argsArray[iTransform];\n        positions[q << 1] = transformArgs[4];\n        positions[(q << 1) + 1] = transformArgs[5];\n      }\n\n      // Replace queue items.\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n      argsArray.splice(iFirstSave, count * 4, [\n        firstPIMXOArg0,\n        firstTransformArg0,\n        firstTransformArg1,\n        firstTransformArg2,\n        firstTransformArg3,\n        positions,\n      ]);\n    } else {\n      count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n      const images = [];\n      for (let q = 0; q < count; q++) {\n        transformArgs = argsArray[iFirstTransform + (q << 2)];\n        const maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n        images.push({\n          data: maskParams.data,\n          width: maskParams.width,\n          height: maskParams.height,\n          transform: transformArgs,\n        });\n      }\n\n      // Replace queue items.\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n      argsArray.splice(iFirstSave, count * 4, [images]);\n    }\n\n    return iFirstSave + 1;\n  }\n);\n\n// This replaces (save, transform, paintImageXObject, restore)+ sequences\n// with one paintImageXObjectRepeat operation, if the |transform| and\n// |paintImageXObjectRepeat| ops are appropriate.\naddState(\n  InitialState,\n  [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n  function (context) {\n    const argsArray = context.argsArray;\n    const iFirstTransform = context.iCurr - 2;\n    return (\n      argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0\n    );\n  },\n  function iterateImageGroup(context, i) {\n    const fnArray = context.fnArray,\n      argsArray = context.argsArray;\n    const iFirstSave = context.iCurr - 3;\n    const pos = (i - iFirstSave) % 4;\n    switch (pos) {\n      case 0:\n        return fnArray[i] === OPS.save;\n      case 1:\n        if (fnArray[i] !== OPS.transform) {\n          return false;\n        }\n        const iFirstTransform = context.iCurr - 2;\n        const firstTransformArg0 = argsArray[iFirstTransform][0];\n        const firstTransformArg3 = argsArray[iFirstTransform][3];\n        if (\n          argsArray[i][0] !== firstTransformArg0 ||\n          argsArray[i][1] !== 0 ||\n          argsArray[i][2] !== 0 ||\n          argsArray[i][3] !== firstTransformArg3\n        ) {\n          return false; // transforms don't match\n        }\n        return true;\n      case 2:\n        if (fnArray[i] !== OPS.paintImageXObject) {\n          return false;\n        }\n        const iFirstPIXO = context.iCurr - 1;\n        const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n        if (argsArray[i][0] !== firstPIXOArg0) {\n          return false; // images don't match\n        }\n        return true;\n      case 3:\n        return fnArray[i] === OPS.restore;\n    }\n    throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n  },\n  function (context, i) {\n    const MIN_IMAGES_IN_BLOCK = 3;\n    const MAX_IMAGES_IN_BLOCK = 1000;\n\n    const fnArray = context.fnArray,\n      argsArray = context.argsArray;\n    const curr = context.iCurr;\n    const iFirstSave = curr - 3;\n    const iFirstTransform = curr - 2;\n    const iFirstPIXO = curr - 1;\n    const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n    const firstTransformArg0 = argsArray[iFirstTransform][0];\n    const firstTransformArg3 = argsArray[iFirstTransform][3];\n\n    // At this point, i is the index of the first op past the last valid\n    // quartet.\n    const count = Math.min(\n      Math.floor((i - iFirstSave) / 4),\n      MAX_IMAGES_IN_BLOCK\n    );\n    if (count < MIN_IMAGES_IN_BLOCK) {\n      return i - ((i - iFirstSave) % 4);\n    }\n\n    // Extract the (x,y) positions from all of the matching transforms.\n    const positions = new Float32Array(count * 2);\n    let iTransform = iFirstTransform;\n    for (let q = 0; q < count; q++, iTransform += 4) {\n      const transformArgs = argsArray[iTransform];\n      positions[q << 1] = transformArgs[4];\n      positions[(q << 1) + 1] = transformArgs[5];\n    }\n\n    // Replace queue items.\n    const args = [\n      firstPIXOArg0,\n      firstTransformArg0,\n      firstTransformArg3,\n      positions,\n    ];\n    fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n    argsArray.splice(iFirstSave, count * 4, args);\n\n    return iFirstSave + 1;\n  }\n);\n\n// This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n// sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n// sequences, if the font for each one is the same.\naddState(\n  InitialState,\n  [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n  null,\n  function iterateShowTextGroup(context, i) {\n    const fnArray = context.fnArray,\n      argsArray = context.argsArray;\n    const iFirstSave = context.iCurr - 4;\n    const pos = (i - iFirstSave) % 5;\n    switch (pos) {\n      case 0:\n        return fnArray[i] === OPS.beginText;\n      case 1:\n        return fnArray[i] === OPS.setFont;\n      case 2:\n        return fnArray[i] === OPS.setTextMatrix;\n      case 3:\n        if (fnArray[i] !== OPS.showText) {\n          return false;\n        }\n        const iFirstSetFont = context.iCurr - 3;\n        const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n        const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n        if (\n          argsArray[i][0] !== firstSetFontArg0 ||\n          argsArray[i][1] !== firstSetFontArg1\n        ) {\n          return false; // fonts don't match\n        }\n        return true;\n      case 4:\n        return fnArray[i] === OPS.endText;\n    }\n    throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n  },\n  function (context, i) {\n    const MIN_CHARS_IN_BLOCK = 3;\n    const MAX_CHARS_IN_BLOCK = 1000;\n\n    const fnArray = context.fnArray,\n      argsArray = context.argsArray;\n    const curr = context.iCurr;\n    const iFirstBeginText = curr - 4;\n    const iFirstSetFont = curr - 3;\n    const iFirstSetTextMatrix = curr - 2;\n    const iFirstShowText = curr - 1;\n    const iFirstEndText = curr;\n    const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n    const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n    // At this point, i is the index of the first op past the last valid\n    // quintet.\n    let count = Math.min(\n      Math.floor((i - iFirstBeginText) / 5),\n      MAX_CHARS_IN_BLOCK\n    );\n    if (count < MIN_CHARS_IN_BLOCK) {\n      return i - ((i - iFirstBeginText) % 5);\n    }\n\n    // If the preceding quintet is (<something>, setFont, setTextMatrix,\n    // showText, endText), include that as well. (E.g. <something> might be\n    // |dependency|.)\n    let iFirst = iFirstBeginText;\n    if (\n      iFirstBeginText >= 4 &&\n      fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n      fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n      fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n      fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n      argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n      argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\n    ) {\n      count++;\n      iFirst -= 5;\n    }\n\n    // Remove (endText, beginText, setFont) trios.\n    let iEndText = iFirst + 4;\n    for (let q = 1; q < count; q++) {\n      fnArray.splice(iEndText, 3);\n      argsArray.splice(iEndText, 3);\n      iEndText += 2;\n    }\n\n    return iEndText + 1;\n  }\n);\n\nclass NullOptimizer {\n  constructor(queue) {\n    this.queue = queue;\n  }\n\n  _optimize() {}\n\n  push(fn, args) {\n    this.queue.fnArray.push(fn);\n    this.queue.argsArray.push(args);\n    this._optimize();\n  }\n\n  flush() {}\n\n  reset() {}\n}\n\nclass QueueOptimizer extends NullOptimizer {\n  constructor(queue) {\n    super(queue);\n    this.state = null;\n    this.context = {\n      iCurr: 0,\n      fnArray: queue.fnArray,\n      argsArray: queue.argsArray,\n    };\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n\n  _optimize() {\n    // Process new fnArray item(s) chunk.\n    const fnArray = this.queue.fnArray;\n    let i = this.lastProcessed,\n      ii = fnArray.length;\n    let state = this.state;\n    let match = this.match;\n    if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n      // Micro-optimization for the common case: last item is not\n      // optimizable, just skipping it.\n      this.lastProcessed = ii;\n      return;\n    }\n\n    const context = this.context;\n    while (i < ii) {\n      if (match) {\n        // Already find a block of potentially optimizable items, iterating...\n        const iterate = (0, match.iterateFn)(context, i);\n        if (iterate) {\n          i++;\n          continue;\n        }\n        // Found last items for the block, processing...\n        i = (0, match.processFn)(context, i + 1);\n        ii = fnArray.length;\n        match = null;\n        state = null;\n        if (i >= ii) {\n          break;\n        }\n      }\n      // Find the potentially optimizable items.\n      state = (state || InitialState)[fnArray[i]];\n      if (!state || Array.isArray(state)) {\n        i++;\n        continue;\n      }\n      // Found a start of the block based on addState rules.\n      context.iCurr = i;\n      i++;\n      if (state.checkFn && !(0, state.checkFn)(context)) {\n        // Check failed, continue search...\n        state = null;\n        continue;\n      }\n      match = state;\n      state = null;\n    }\n    this.state = state;\n    this.match = match;\n    this.lastProcessed = i;\n  }\n\n  flush() {\n    while (this.match) {\n      const length = this.queue.fnArray.length;\n      this.lastProcessed = (0, this.match.processFn)(this.context, length);\n      this.match = null;\n      this.state = null;\n      // Repeat optimization until all chunks are exhausted.\n      this._optimize();\n    }\n  }\n\n  reset() {\n    this.state = null;\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n}\n\nclass OperatorList {\n  static get CHUNK_SIZE() {\n    return shadow(this, \"CHUNK_SIZE\", 1000);\n  }\n\n  // Close to chunk size.\n  static get CHUNK_SIZE_ABOUT() {\n    return shadow(this, \"CHUNK_SIZE_ABOUT\", this.CHUNK_SIZE - 5);\n  }\n\n  constructor(intent = 0, streamSink) {\n    this._streamSink = streamSink;\n    this.fnArray = [];\n    this.argsArray = [];\n    if (streamSink && !(intent & RenderingIntentFlag.OPLIST)) {\n      this.optimizer = new QueueOptimizer(this);\n    } else {\n      this.optimizer = new NullOptimizer(this);\n    }\n    this.dependencies = new Set();\n    this._totalLength = 0;\n    this.weight = 0;\n    this._resolved = streamSink ? null : Promise.resolve();\n  }\n\n  get length() {\n    return this.argsArray.length;\n  }\n\n  get ready() {\n    return this._resolved || this._streamSink.ready;\n  }\n\n  /**\n   * @type {number} The total length of the entire operator list, since\n   *                `this.length === 0` after flushing.\n   */\n  get totalLength() {\n    return this._totalLength + this.length;\n  }\n\n  addOp(fn, args) {\n    this.optimizer.push(fn, args);\n    this.weight++;\n    if (this._streamSink) {\n      if (this.weight >= OperatorList.CHUNK_SIZE) {\n        this.flush();\n      } else if (\n        this.weight >= OperatorList.CHUNK_SIZE_ABOUT &&\n        (fn === OPS.restore || fn === OPS.endText)\n      ) {\n        // Heuristic to flush on boundary of restore or endText.\n        this.flush();\n      }\n    }\n  }\n\n  addDependency(dependency) {\n    if (this.dependencies.has(dependency)) {\n      return;\n    }\n    this.dependencies.add(dependency);\n    this.addOp(OPS.dependency, [dependency]);\n  }\n\n  addDependencies(dependencies) {\n    for (const dependency of dependencies) {\n      this.addDependency(dependency);\n    }\n  }\n\n  addOpList(opList) {\n    if (!(opList instanceof OperatorList)) {\n      warn('addOpList - ignoring invalid \"opList\" parameter.');\n      return;\n    }\n    for (const dependency of opList.dependencies) {\n      this.dependencies.add(dependency);\n    }\n    for (let i = 0, ii = opList.length; i < ii; i++) {\n      this.addOp(opList.fnArray[i], opList.argsArray[i]);\n    }\n  }\n\n  getIR() {\n    return {\n      fnArray: this.fnArray,\n      argsArray: this.argsArray,\n      length: this.length,\n    };\n  }\n\n  get _transfers() {\n    const transfers = [];\n    const { fnArray, argsArray, length } = this;\n    for (let i = 0; i < length; i++) {\n      switch (fnArray[i]) {\n        case OPS.paintInlineImageXObject:\n        case OPS.paintInlineImageXObjectGroup:\n        case OPS.paintImageMaskXObject:\n          const arg = argsArray[i][0]; // First parameter in imgData.\n\n          if (\n            typeof PDFJSDev === \"undefined\" ||\n            PDFJSDev.test(\"!PRODUCTION || TESTING\")\n          ) {\n            assert(\n              arg.data instanceof Uint8ClampedArray,\n              'OperatorList._transfers: Unsupported \"arg.data\" type.'\n            );\n          }\n          if (!arg.cached) {\n            transfers.push(arg.data.buffer);\n          }\n          break;\n      }\n    }\n    return transfers;\n  }\n\n  flush(lastChunk = false) {\n    this.optimizer.flush();\n    const length = this.length;\n    this._totalLength += length;\n\n    this._streamSink.enqueue(\n      {\n        fnArray: this.fnArray,\n        argsArray: this.argsArray,\n        lastChunk,\n        length,\n      },\n      1,\n      this._transfers\n    );\n\n    this.dependencies.clear();\n    this.fnArray.length = 0;\n    this.argsArray.length = 0;\n    this.weight = 0;\n    this.optimizer.reset();\n  }\n}\n\nexport { OperatorList };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, FormatError, ImageKind, info, warn } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { Name } from \"./primitives.js\";\n\n/**\n * Decode and clamp a value. The formula is different from the spec because we\n * don't decode to float range [0,1], we decode it in the [0,max] range.\n */\nfunction decodeAndClamp(value, addend, coefficient, max) {\n  value = addend + value * coefficient;\n  // Clamp the value to the range\n  if (value < 0) {\n    value = 0;\n  } else if (value > max) {\n    value = max;\n  }\n  return value;\n}\n\n/**\n * Resizes an image mask with 1 component.\n * @param {TypedArray} src - The source buffer.\n * @param {number} bpc - Number of bits per component.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @returns {TypedArray} The resized image mask buffer.\n */\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n  const length = w2 * h2;\n  let dest;\n  if (bpc <= 8) {\n    dest = new Uint8Array(length);\n  } else if (bpc <= 16) {\n    dest = new Uint16Array(length);\n  } else {\n    dest = new Uint32Array(length);\n  }\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let i,\n    j,\n    py,\n    newIndex = 0,\n    oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1;\n\n  for (i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio);\n  }\n  for (i = 0; i < h2; i++) {\n    py = Math.floor(i * yRatio) * w1Scanline;\n    for (j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex];\n    }\n  }\n  return dest;\n}\n\nclass PDFImage {\n  constructor({\n    xref,\n    res,\n    image,\n    isInline = false,\n    smask = null,\n    mask = null,\n    isMask = false,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    this.image = image;\n    const dict = image.dict;\n\n    const filter = dict.get(\"F\", \"Filter\");\n    if (filter instanceof Name) {\n      switch (filter.name) {\n        case \"JPXDecode\":\n          const jpxImage = new JpxImage();\n          jpxImage.parseImageProperties(image.stream);\n          image.stream.reset();\n\n          image.width = jpxImage.width;\n          image.height = jpxImage.height;\n          image.bitsPerComponent = jpxImage.bitsPerComponent;\n          image.numComps = jpxImage.componentsCount;\n          break;\n        case \"JBIG2Decode\":\n          image.bitsPerComponent = 1;\n          image.numComps = 1;\n          break;\n      }\n    }\n    // TODO cache rendered images?\n\n    let width = dict.get(\"W\", \"Width\");\n    let height = dict.get(\"H\", \"Height\");\n\n    if (\n      Number.isInteger(image.width) &&\n      image.width > 0 &&\n      Number.isInteger(image.height) &&\n      image.height > 0 &&\n      (image.width !== width || image.height !== height)\n    ) {\n      warn(\n        \"PDFImage - using the Width/Height of the image data, \" +\n          \"rather than the image dictionary.\"\n      );\n      width = image.width;\n      height = image.height;\n    }\n    if (width < 1 || height < 1) {\n      throw new FormatError(\n        `Invalid image width: ${width} or height: ${height}`\n      );\n    }\n    this.width = width;\n    this.height = height;\n\n    this.interpolate = dict.get(\"I\", \"Interpolate\");\n    this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n    this.matte = dict.get(\"Matte\") || false;\n\n    let bitsPerComponent = image.bitsPerComponent;\n    if (!bitsPerComponent) {\n      bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\n      if (!bitsPerComponent) {\n        if (this.imageMask) {\n          bitsPerComponent = 1;\n        } else {\n          throw new FormatError(\n            `Bits per component missing in image: ${this.imageMask}`\n          );\n        }\n      }\n    }\n    this.bpc = bitsPerComponent;\n\n    if (!this.imageMask) {\n      let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n      if (!colorSpace) {\n        info(\"JPX images (which do not require color spaces)\");\n        switch (image.numComps) {\n          case 1:\n            colorSpace = Name.get(\"DeviceGray\");\n            break;\n          case 3:\n            colorSpace = Name.get(\"DeviceRGB\");\n            break;\n          case 4:\n            colorSpace = Name.get(\"DeviceCMYK\");\n            break;\n          default:\n            throw new Error(\n              `JPX images with ${image.numComps} color components not supported.`\n            );\n        }\n      }\n      this.colorSpace = ColorSpace.parse({\n        cs: colorSpace,\n        xref,\n        resources: isInline ? res : null,\n        pdfFunctionFactory,\n        localColorSpaceCache,\n      });\n      this.numComps = this.colorSpace.numComps;\n    }\n\n    this.decode = dict.getArray(\"D\", \"Decode\");\n    this.needsDecode = false;\n    if (\n      this.decode &&\n      ((this.colorSpace &&\n        !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\n        (isMask &&\n          !ColorSpace.isDefaultDecode(this.decode, /* numComps = */ 1)))\n    ) {\n      this.needsDecode = true;\n      // Do some preprocessing to avoid more math.\n      const max = (1 << bitsPerComponent) - 1;\n      this.decodeCoefficients = [];\n      this.decodeAddends = [];\n      const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n      for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n        const dmin = this.decode[i];\n        const dmax = this.decode[i + 1];\n        this.decodeCoefficients[j] = isIndexed\n          ? (dmax - dmin) / max\n          : dmax - dmin;\n        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n      }\n    }\n\n    if (smask) {\n      this.smask = new PDFImage({\n        xref,\n        res,\n        image: smask,\n        isInline,\n        pdfFunctionFactory,\n        localColorSpaceCache,\n      });\n    } else if (mask) {\n      if (mask instanceof BaseStream) {\n        const maskDict = mask.dict,\n          imageMask = maskDict.get(\"IM\", \"ImageMask\");\n        if (!imageMask) {\n          warn(\"Ignoring /Mask in image without /ImageMask.\");\n        } else {\n          this.mask = new PDFImage({\n            xref,\n            res,\n            image: mask,\n            isInline,\n            isMask: true,\n            pdfFunctionFactory,\n            localColorSpaceCache,\n          });\n        }\n      } else {\n        // Color key mask (just an array).\n        this.mask = mask;\n      }\n    }\n  }\n\n  /**\n   * Handles processing of image data and returns the Promise that is resolved\n   * with a PDFImage when the image is ready to be used.\n   */\n  static async buildImage({\n    xref,\n    res,\n    image,\n    isInline = false,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    const imageData = image;\n    let smaskData = null;\n    let maskData = null;\n\n    const smask = image.dict.get(\"SMask\");\n    const mask = image.dict.get(\"Mask\");\n\n    if (smask) {\n      smaskData = smask;\n    } else if (mask) {\n      if (mask instanceof BaseStream || Array.isArray(mask)) {\n        maskData = mask;\n      } else {\n        warn(\"Unsupported mask format.\");\n      }\n    }\n\n    return new PDFImage({\n      xref,\n      res,\n      image: imageData,\n      isInline,\n      smask: smaskData,\n      mask: maskData,\n      pdfFunctionFactory,\n      localColorSpaceCache,\n    });\n  }\n\n  static createMask({\n    imgArray,\n    width,\n    height,\n    imageIsFromDecodeStream,\n    inverseDecode,\n    interpolate,\n  }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        imgArray instanceof Uint8ClampedArray,\n        'PDFImage.createMask: Unsupported \"imgArray\" type.'\n      );\n    }\n    // |imgArray| might not contain full data for every pixel of the mask, so\n    // we need to distinguish between |computedLength| and |actualLength|.\n    // In particular, if inverseDecode is true, then the array we return must\n    // have a length of |computedLength|.\n\n    const computedLength = ((width + 7) >> 3) * height;\n    const actualLength = imgArray.byteLength;\n    const haveFullData = computedLength === actualLength;\n    let data, i;\n\n    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n      // imgArray came from a DecodeStream and its data is in an appropriate\n      // form, so we can just transfer it.\n      data = imgArray;\n    } else if (!inverseDecode) {\n      data = new Uint8ClampedArray(actualLength);\n      data.set(imgArray);\n    } else {\n      data = new Uint8ClampedArray(computedLength);\n      data.set(imgArray);\n      for (i = actualLength; i < computedLength; i++) {\n        data[i] = 0xff;\n      }\n    }\n\n    // If necessary, invert the original mask data (but not any extra we might\n    // have added above). It's safe to modify the array -- whether it's the\n    // original or a copy, we're about to transfer it anyway, so nothing else\n    // in this thread can be relying on its contents.\n    if (inverseDecode) {\n      for (i = 0; i < actualLength; i++) {\n        data[i] ^= 0xff;\n      }\n    }\n\n    return { data, width, height, interpolate };\n  }\n\n  get drawWidth() {\n    return Math.max(\n      this.width,\n      (this.smask && this.smask.width) || 0,\n      (this.mask && this.mask.width) || 0\n    );\n  }\n\n  get drawHeight() {\n    return Math.max(\n      this.height,\n      (this.smask && this.smask.height) || 0,\n      (this.mask && this.mask.height) || 0\n    );\n  }\n\n  decodeBuffer(buffer) {\n    const bpc = this.bpc;\n    const numComps = this.numComps;\n\n    const decodeAddends = this.decodeAddends;\n    const decodeCoefficients = this.decodeCoefficients;\n    const max = (1 << bpc) - 1;\n    let i, ii;\n\n    if (bpc === 1) {\n      // If the buffer needed decode that means it just needs to be inverted.\n      for (i = 0, ii = buffer.length; i < ii; i++) {\n        buffer[i] = +!buffer[i];\n      }\n      return;\n    }\n    let index = 0;\n    for (i = 0, ii = this.width * this.height; i < ii; i++) {\n      for (let j = 0; j < numComps; j++) {\n        buffer[index] = decodeAndClamp(\n          buffer[index],\n          decodeAddends[j],\n          decodeCoefficients[j],\n          max\n        );\n        index++;\n      }\n    }\n  }\n\n  getComponents(buffer) {\n    const bpc = this.bpc;\n\n    // This image doesn't require any extra work.\n    if (bpc === 8) {\n      return buffer;\n    }\n\n    const width = this.width;\n    const height = this.height;\n    const numComps = this.numComps;\n\n    const length = width * height * numComps;\n    let bufferPos = 0;\n    let output;\n    if (bpc <= 8) {\n      output = new Uint8Array(length);\n    } else if (bpc <= 16) {\n      output = new Uint16Array(length);\n    } else {\n      output = new Uint32Array(length);\n    }\n    const rowComps = width * numComps;\n\n    const max = (1 << bpc) - 1;\n    let i = 0,\n      ii,\n      buf;\n\n    if (bpc === 1) {\n      // Optimization for reading 1 bpc images.\n      let mask, loop1End, loop2End;\n      for (let j = 0; j < height; j++) {\n        loop1End = i + (rowComps & ~7);\n        loop2End = i + rowComps;\n\n        // unroll loop for all full bytes\n        while (i < loop1End) {\n          buf = buffer[bufferPos++];\n          output[i] = (buf >> 7) & 1;\n          output[i + 1] = (buf >> 6) & 1;\n          output[i + 2] = (buf >> 5) & 1;\n          output[i + 3] = (buf >> 4) & 1;\n          output[i + 4] = (buf >> 3) & 1;\n          output[i + 5] = (buf >> 2) & 1;\n          output[i + 6] = (buf >> 1) & 1;\n          output[i + 7] = buf & 1;\n          i += 8;\n        }\n\n        // handle remaining bits\n        if (i < loop2End) {\n          buf = buffer[bufferPos++];\n          mask = 128;\n          while (i < loop2End) {\n            output[i++] = +!!(buf & mask);\n            mask >>= 1;\n          }\n        }\n      }\n    } else {\n      // The general case that handles all other bpc values.\n      let bits = 0;\n      buf = 0;\n      for (i = 0, ii = length; i < ii; ++i) {\n        if (i % rowComps === 0) {\n          buf = 0;\n          bits = 0;\n        }\n\n        while (bits < bpc) {\n          buf = (buf << 8) | buffer[bufferPos++];\n          bits += 8;\n        }\n\n        const remainingBits = bits - bpc;\n        let value = buf >> remainingBits;\n        if (value < 0) {\n          value = 0;\n        } else if (value > max) {\n          value = max;\n        }\n        output[i] = value;\n        buf &= (1 << remainingBits) - 1;\n        bits = remainingBits;\n      }\n    }\n    return output;\n  }\n\n  fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        rgbaBuf instanceof Uint8ClampedArray,\n        'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.'\n      );\n    }\n    const smask = this.smask;\n    const mask = this.mask;\n    let alphaBuf, sw, sh, i, ii, j;\n\n    if (smask) {\n      sw = smask.width;\n      sh = smask.height;\n      alphaBuf = new Uint8ClampedArray(sw * sh);\n      smask.fillGrayBuffer(alphaBuf);\n      if (sw !== width || sh !== height) {\n        alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n      }\n    } else if (mask) {\n      if (mask instanceof PDFImage) {\n        sw = mask.width;\n        sh = mask.height;\n        alphaBuf = new Uint8ClampedArray(sw * sh);\n        mask.numComps = 1;\n        mask.fillGrayBuffer(alphaBuf);\n\n        // Need to invert values in rgbaBuf\n        for (i = 0, ii = sw * sh; i < ii; ++i) {\n          alphaBuf[i] = 255 - alphaBuf[i];\n        }\n\n        if (sw !== width || sh !== height) {\n          alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n        }\n      } else if (Array.isArray(mask)) {\n        // Color key mask: if any of the components are outside the range\n        // then they should be painted.\n        alphaBuf = new Uint8ClampedArray(width * height);\n        const numComps = this.numComps;\n        for (i = 0, ii = width * height; i < ii; ++i) {\n          let opacity = 0;\n          const imageOffset = i * numComps;\n          for (j = 0; j < numComps; ++j) {\n            const color = image[imageOffset + j];\n            const maskOffset = j * 2;\n            if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n              opacity = 255;\n              break;\n            }\n          }\n          alphaBuf[i] = opacity;\n        }\n      } else {\n        throw new FormatError(\"Unknown mask format.\");\n      }\n    }\n\n    if (alphaBuf) {\n      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n        rgbaBuf[j] = alphaBuf[i];\n      }\n    } else {\n      // No mask.\n      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n        rgbaBuf[j] = 255;\n      }\n    }\n  }\n\n  undoPreblend(buffer, width, height) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        buffer instanceof Uint8ClampedArray,\n        'PDFImage.undoPreblend: Unsupported \"buffer\" type.'\n      );\n    }\n    const matte = this.smask && this.smask.matte;\n    if (!matte) {\n      return;\n    }\n    const matteRgb = this.colorSpace.getRgb(matte, 0);\n    const matteR = matteRgb[0];\n    const matteG = matteRgb[1];\n    const matteB = matteRgb[2];\n    const length = width * height * 4;\n    for (let i = 0; i < length; i += 4) {\n      const alpha = buffer[i + 3];\n      if (alpha === 0) {\n        // according formula we have to get Infinity in all components\n        // making it white (typical paper color) should be okay\n        buffer[i] = 255;\n        buffer[i + 1] = 255;\n        buffer[i + 2] = 255;\n        continue;\n      }\n      const k = 255 / alpha;\n      buffer[i] = (buffer[i] - matteR) * k + matteR;\n      buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n      buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n    }\n  }\n\n  createImageData(forceRGBA = false) {\n    const drawWidth = this.drawWidth;\n    const drawHeight = this.drawHeight;\n    const imgData = {\n      width: drawWidth,\n      height: drawHeight,\n      interpolate: this.interpolate,\n      kind: 0,\n      data: null,\n      // Other fields are filled in below.\n    };\n\n    const numComps = this.numComps;\n    const originalWidth = this.width;\n    const originalHeight = this.height;\n    const bpc = this.bpc;\n\n    // Rows start at byte boundary.\n    const rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n    let imgArray;\n\n    if (!forceRGBA) {\n      // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n      // without any complications, we pass a same-sized copy to the main\n      // thread rather than expanding by 32x to RGBA form. This saves *lots*\n      // of memory for many scanned documents. It's also much faster.\n      //\n      // Similarly, if it is a 24-bit-per pixel RGB image without any\n      // complications, we avoid expanding by 1.333x to RGBA form.\n      let kind;\n      if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n        kind = ImageKind.GRAYSCALE_1BPP;\n      } else if (\n        this.colorSpace.name === \"DeviceRGB\" &&\n        bpc === 8 &&\n        !this.needsDecode\n      ) {\n        kind = ImageKind.RGB_24BPP;\n      }\n      if (\n        kind &&\n        !this.smask &&\n        !this.mask &&\n        drawWidth === originalWidth &&\n        drawHeight === originalHeight\n      ) {\n        imgData.kind = kind;\n\n        imgArray = this.getImageBytes(originalHeight * rowBytes);\n        // If imgArray came from a DecodeStream, we're safe to transfer it\n        // (and thus detach its underlying buffer) because it will constitute\n        // the entire DecodeStream's data.  But if it came from a Stream, we\n        // need to copy it because it'll only be a portion of the Stream's\n        // data, and the rest will be read later on.\n        if (this.image instanceof DecodeStream) {\n          imgData.data = imgArray;\n        } else {\n          const newArray = new Uint8ClampedArray(imgArray.length);\n          newArray.set(imgArray);\n          imgData.data = newArray;\n        }\n        if (this.needsDecode) {\n          // Invert the buffer (which must be grayscale if we reached here).\n          assert(\n            kind === ImageKind.GRAYSCALE_1BPP,\n            \"PDFImage.createImageData: The image must be grayscale.\"\n          );\n          const buffer = imgData.data;\n          for (let i = 0, ii = buffer.length; i < ii; i++) {\n            buffer[i] ^= 0xff;\n          }\n        }\n        return imgData;\n      }\n      if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n        let imageLength = originalHeight * rowBytes;\n        switch (this.colorSpace.name) {\n          case \"DeviceGray\":\n            // Avoid truncating the image, since `JpegImage.getData`\n            // will expand the image data when `forceRGB === true`.\n            imageLength *= 3;\n          /* falls through */\n          case \"DeviceRGB\":\n          case \"DeviceCMYK\":\n            imgData.kind = ImageKind.RGB_24BPP;\n            imgData.data = this.getImageBytes(\n              imageLength,\n              drawWidth,\n              drawHeight,\n              /* forceRGB = */ true\n            );\n            return imgData;\n        }\n      }\n    }\n\n    imgArray = this.getImageBytes(originalHeight * rowBytes);\n    // imgArray can be incomplete (e.g. after CCITT fax encoding).\n    const actualHeight =\n      0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n    const comps = this.getComponents(imgArray);\n\n    // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n    // more compact RGB_24BPP form if allowable.\n    let alpha01, maybeUndoPreblend;\n    if (!forceRGBA && !this.smask && !this.mask) {\n      imgData.kind = ImageKind.RGB_24BPP;\n      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n      alpha01 = 0;\n      maybeUndoPreblend = false;\n    } else {\n      imgData.kind = ImageKind.RGBA_32BPP;\n      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n      alpha01 = 1;\n      maybeUndoPreblend = true;\n\n      // Color key masking (opacity) must be performed before decoding.\n      this.fillOpacity(\n        imgData.data,\n        drawWidth,\n        drawHeight,\n        actualHeight,\n        comps\n      );\n    }\n\n    if (this.needsDecode) {\n      this.decodeBuffer(comps);\n    }\n    this.colorSpace.fillRgb(\n      imgData.data,\n      originalWidth,\n      originalHeight,\n      drawWidth,\n      drawHeight,\n      actualHeight,\n      bpc,\n      comps,\n      alpha01\n    );\n    if (maybeUndoPreblend) {\n      this.undoPreblend(imgData.data, drawWidth, actualHeight);\n    }\n\n    return imgData;\n  }\n\n  fillGrayBuffer(buffer) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        buffer instanceof Uint8ClampedArray,\n        'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.'\n      );\n    }\n    const numComps = this.numComps;\n    if (numComps !== 1) {\n      throw new FormatError(\n        `Reading gray scale from a color image: ${numComps}`\n      );\n    }\n\n    const width = this.width;\n    const height = this.height;\n    const bpc = this.bpc;\n\n    // rows start at byte boundary\n    const rowBytes = (width * numComps * bpc + 7) >> 3;\n    const imgArray = this.getImageBytes(height * rowBytes);\n\n    const comps = this.getComponents(imgArray);\n    let i, length;\n\n    if (bpc === 1) {\n      // inline decoding (= inversion) for 1 bpc images\n      length = width * height;\n      if (this.needsDecode) {\n        // invert and scale to {0, 255}\n        for (i = 0; i < length; ++i) {\n          buffer[i] = (comps[i] - 1) & 255;\n        }\n      } else {\n        // scale to {0, 255}\n        for (i = 0; i < length; ++i) {\n          buffer[i] = -comps[i] & 255;\n        }\n      }\n      return;\n    }\n\n    if (this.needsDecode) {\n      this.decodeBuffer(comps);\n    }\n    length = width * height;\n    // we aren't using a colorspace so we need to scale the value\n    const scale = 255 / ((1 << bpc) - 1);\n    for (i = 0; i < length; ++i) {\n      buffer[i] = scale * comps[i];\n    }\n  }\n\n  getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n    this.image.reset();\n    this.image.drawWidth = drawWidth || this.width;\n    this.image.drawHeight = drawHeight || this.height;\n    this.image.forceRGB = !!forceRGB;\n    return this.image.getBytes(length, /* forceClamped = */ true);\n  }\n}\n\nexport { PDFImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  collectActions,\n  MissingDataException,\n  recoverJsURL,\n  toRomanNumerals,\n  XRefEntryException,\n} from \"./core_utils.js\";\nimport {\n  createValidAbsoluteUrl,\n  DocumentActionEventType,\n  FormatError,\n  info,\n  objectSize,\n  PermissionFlag,\n  shadow,\n  stringToPDFString,\n  stringToUTF8String,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  Dict,\n  isDict,\n  isName,\n  isRefsEqual,\n  Name,\n  Ref,\n  RefSet,\n  RefSetCache,\n} from \"./primitives.js\";\nimport { NameTree, NumberTree } from \"./name_number_tree.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { GlobalImageCache } from \"./image_utils.js\";\nimport { MetadataParser } from \"./metadata_parser.js\";\nimport { StructTreeRoot } from \"./struct_tree.js\";\n\nfunction fetchDestination(dest) {\n  if (dest instanceof Dict) {\n    dest = dest.get(\"D\");\n  }\n  return Array.isArray(dest) ? dest : null;\n}\n\nclass Catalog {\n  constructor(pdfManager, xref) {\n    this.pdfManager = pdfManager;\n    this.xref = xref;\n\n    this._catDict = xref.getCatalogObj();\n    if (!(this._catDict instanceof Dict)) {\n      throw new FormatError(\"Catalog object is not a dictionary.\");\n    }\n    // Given that `XRef.parse` will both fetch *and* validate the /Pages-entry,\n    // the following call must always succeed here:\n    this.toplevelPagesDict; // eslint-disable-line no-unused-expressions\n\n    this._actualNumPages = null;\n\n    this.fontCache = new RefSetCache();\n    this.builtInCMapCache = new Map();\n    this.standardFontDataCache = new Map();\n    this.globalImageCache = new GlobalImageCache();\n    this.pageKidsCountCache = new RefSetCache();\n    this.pageIndexCache = new RefSetCache();\n    this.nonBlendModesSet = new RefSet();\n  }\n\n  get version() {\n    const version = this._catDict.get(\"Version\");\n    return shadow(\n      this,\n      \"version\",\n      version instanceof Name ? version.name : null\n    );\n  }\n\n  get lang() {\n    const lang = this._catDict.get(\"Lang\");\n    return shadow(\n      this,\n      \"lang\",\n      typeof lang === \"string\" ? stringToPDFString(lang) : null\n    );\n  }\n\n  /**\n   * @type {boolean} `true` for pure XFA documents,\n   *   `false` for XFA Foreground documents.\n   */\n  get needsRendering() {\n    const needsRendering = this._catDict.get(\"NeedsRendering\");\n    return shadow(\n      this,\n      \"needsRendering\",\n      typeof needsRendering === \"boolean\" ? needsRendering : false\n    );\n  }\n\n  get collection() {\n    let collection = null;\n    try {\n      const obj = this._catDict.get(\"Collection\");\n      if (obj instanceof Dict && obj.size > 0) {\n        collection = obj;\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n    }\n    return shadow(this, \"collection\", collection);\n  }\n\n  get acroForm() {\n    let acroForm = null;\n    try {\n      const obj = this._catDict.get(\"AcroForm\");\n      if (obj instanceof Dict && obj.size > 0) {\n        acroForm = obj;\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n    }\n    return shadow(this, \"acroForm\", acroForm);\n  }\n\n  get acroFormRef() {\n    const value = this._catDict.getRaw(\"AcroForm\");\n    return shadow(this, \"acroFormRef\", value instanceof Ref ? value : null);\n  }\n\n  get metadata() {\n    const streamRef = this._catDict.getRaw(\"Metadata\");\n    if (!(streamRef instanceof Ref)) {\n      return shadow(this, \"metadata\", null);\n    }\n\n    let metadata = null;\n    try {\n      const suppressEncryption = !(\n        this.xref.encrypt && this.xref.encrypt.encryptMetadata\n      );\n      const stream = this.xref.fetch(streamRef, suppressEncryption);\n\n      if (stream instanceof BaseStream && stream.dict instanceof Dict) {\n        const type = stream.dict.get(\"Type\");\n        const subtype = stream.dict.get(\"Subtype\");\n\n        if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n          // XXX: This should examine the charset the XML document defines,\n          // however since there are currently no real means to decode arbitrary\n          // charsets, let's just hope that the author of the PDF was reasonable\n          // enough to stick with the XML default charset, which is UTF-8.\n          const data = stringToUTF8String(stream.getString());\n          if (data) {\n            metadata = new MetadataParser(data).serializable;\n          }\n        }\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(`Skipping invalid Metadata: \"${ex}\".`);\n    }\n    return shadow(this, \"metadata\", metadata);\n  }\n\n  get markInfo() {\n    let markInfo = null;\n    try {\n      markInfo = this._readMarkInfo();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read mark info.\");\n    }\n    return shadow(this, \"markInfo\", markInfo);\n  }\n\n  /**\n   * @private\n   */\n  _readMarkInfo() {\n    const obj = this._catDict.get(\"MarkInfo\");\n    if (!(obj instanceof Dict)) {\n      return null;\n    }\n\n    const markInfo = Object.assign(Object.create(null), {\n      Marked: false,\n      UserProperties: false,\n      Suspects: false,\n    });\n    for (const key in markInfo) {\n      if (!obj.has(key)) {\n        continue;\n      }\n      const value = obj.get(key);\n      if (typeof value !== \"boolean\") {\n        continue;\n      }\n      markInfo[key] = value;\n    }\n\n    return markInfo;\n  }\n\n  get structTreeRoot() {\n    let structTree = null;\n    try {\n      structTree = this._readStructTreeRoot();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable read to structTreeRoot info.\");\n    }\n    return shadow(this, \"structTreeRoot\", structTree);\n  }\n\n  /**\n   * @private\n   */\n  _readStructTreeRoot() {\n    const obj = this._catDict.get(\"StructTreeRoot\");\n    if (!(obj instanceof Dict)) {\n      return null;\n    }\n    const root = new StructTreeRoot(obj);\n    root.init();\n    return root;\n  }\n\n  get toplevelPagesDict() {\n    const pagesObj = this._catDict.get(\"Pages\");\n    if (!(pagesObj instanceof Dict)) {\n      throw new FormatError(\"Invalid top-level pages dictionary.\");\n    }\n    return shadow(this, \"toplevelPagesDict\", pagesObj);\n  }\n\n  get documentOutline() {\n    let obj = null;\n    try {\n      obj = this._readDocumentOutline();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read document outline.\");\n    }\n    return shadow(this, \"documentOutline\", obj);\n  }\n\n  /**\n   * @private\n   */\n  _readDocumentOutline() {\n    let obj = this._catDict.get(\"Outlines\");\n    if (!(obj instanceof Dict)) {\n      return null;\n    }\n    obj = obj.getRaw(\"First\");\n    if (!(obj instanceof Ref)) {\n      return null;\n    }\n\n    const root = { items: [] };\n    const queue = [{ obj, parent: root }];\n    // To avoid recursion, keep track of the already processed items.\n    const processed = new RefSet();\n    processed.put(obj);\n    const xref = this.xref,\n      blackColor = new Uint8ClampedArray(3);\n\n    while (queue.length > 0) {\n      const i = queue.shift();\n      const outlineDict = xref.fetchIfRef(i.obj);\n      if (outlineDict === null) {\n        continue;\n      }\n      if (!outlineDict.has(\"Title\")) {\n        throw new FormatError(\"Invalid outline item encountered.\");\n      }\n\n      const data = { url: null, dest: null };\n      Catalog.parseDestDictionary({\n        destDict: outlineDict,\n        resultObj: data,\n        docBaseUrl: this.pdfManager.docBaseUrl,\n      });\n      const title = outlineDict.get(\"Title\");\n      const flags = outlineDict.get(\"F\") || 0;\n      const color = outlineDict.getArray(\"C\");\n      const count = outlineDict.get(\"Count\");\n      let rgbColor = blackColor;\n\n      // We only need to parse the color when it's valid, and non-default.\n      if (\n        Array.isArray(color) &&\n        color.length === 3 &&\n        (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\n      ) {\n        rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n      }\n\n      const outlineItem = {\n        dest: data.dest,\n        url: data.url,\n        unsafeUrl: data.unsafeUrl,\n        newWindow: data.newWindow,\n        title: stringToPDFString(title),\n        color: rgbColor,\n        count: Number.isInteger(count) ? count : undefined,\n        bold: !!(flags & 2),\n        italic: !!(flags & 1),\n        items: [],\n      };\n\n      i.parent.items.push(outlineItem);\n      obj = outlineDict.getRaw(\"First\");\n      if (obj instanceof Ref && !processed.has(obj)) {\n        queue.push({ obj, parent: outlineItem });\n        processed.put(obj);\n      }\n      obj = outlineDict.getRaw(\"Next\");\n      if (obj instanceof Ref && !processed.has(obj)) {\n        queue.push({ obj, parent: i.parent });\n        processed.put(obj);\n      }\n    }\n    return root.items.length > 0 ? root.items : null;\n  }\n\n  get permissions() {\n    let permissions = null;\n    try {\n      permissions = this._readPermissions();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read permissions.\");\n    }\n    return shadow(this, \"permissions\", permissions);\n  }\n\n  /**\n   * @private\n   */\n  _readPermissions() {\n    const encrypt = this.xref.trailer.get(\"Encrypt\");\n    if (!(encrypt instanceof Dict)) {\n      return null;\n    }\n\n    let flags = encrypt.get(\"P\");\n    if (typeof flags !== \"number\") {\n      return null;\n    }\n\n    // PDF integer objects are represented internally in signed 2's complement\n    // form. Therefore, convert the signed decimal integer to a signed 2's\n    // complement binary integer so we can use regular bitwise operations on it.\n    flags += 2 ** 32;\n\n    const permissions = [];\n    for (const key in PermissionFlag) {\n      const value = PermissionFlag[key];\n      if (flags & value) {\n        permissions.push(value);\n      }\n    }\n    return permissions;\n  }\n\n  get optionalContentConfig() {\n    let config = null;\n    try {\n      const properties = this._catDict.get(\"OCProperties\");\n      if (!properties) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const defaultConfig = properties.get(\"D\");\n      if (!defaultConfig) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const groupsData = properties.get(\"OCGs\");\n      if (!Array.isArray(groupsData)) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const groups = [];\n      const groupRefs = [];\n      // Ensure all the optional content groups are valid.\n      for (const groupRef of groupsData) {\n        if (!(groupRef instanceof Ref)) {\n          continue;\n        }\n        groupRefs.push(groupRef);\n        const group = this.xref.fetchIfRef(groupRef);\n        groups.push({\n          id: groupRef.toString(),\n          name:\n            typeof group.get(\"Name\") === \"string\"\n              ? stringToPDFString(group.get(\"Name\"))\n              : null,\n          intent:\n            typeof group.get(\"Intent\") === \"string\"\n              ? stringToPDFString(group.get(\"Intent\"))\n              : null,\n        });\n      }\n      config = this._readOptionalContentConfig(defaultConfig, groupRefs);\n      config.groups = groups;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Unable to read optional content config: ${ex}`);\n    }\n    return shadow(this, \"optionalContentConfig\", config);\n  }\n\n  _readOptionalContentConfig(config, contentGroupRefs) {\n    function parseOnOff(refs) {\n      const onParsed = [];\n      if (Array.isArray(refs)) {\n        for (const value of refs) {\n          if (!(value instanceof Ref)) {\n            continue;\n          }\n          if (contentGroupRefs.includes(value)) {\n            onParsed.push(value.toString());\n          }\n        }\n      }\n      return onParsed;\n    }\n\n    function parseOrder(refs, nestedLevels = 0) {\n      if (!Array.isArray(refs)) {\n        return null;\n      }\n      const order = [];\n\n      for (const value of refs) {\n        if (value instanceof Ref && contentGroupRefs.includes(value)) {\n          parsedOrderRefs.put(value); // Handle \"hidden\" groups, see below.\n\n          order.push(value.toString());\n          continue;\n        }\n        // Handle nested /Order arrays (see e.g. issue 9462 and bug 1240641).\n        const nestedOrder = parseNestedOrder(value, nestedLevels);\n        if (nestedOrder) {\n          order.push(nestedOrder);\n        }\n      }\n\n      if (nestedLevels > 0) {\n        return order;\n      }\n      const hiddenGroups = [];\n      for (const groupRef of contentGroupRefs) {\n        if (parsedOrderRefs.has(groupRef)) {\n          continue;\n        }\n        hiddenGroups.push(groupRef.toString());\n      }\n      if (hiddenGroups.length) {\n        order.push({ name: null, order: hiddenGroups });\n      }\n\n      return order;\n    }\n\n    function parseNestedOrder(ref, nestedLevels) {\n      if (++nestedLevels > MAX_NESTED_LEVELS) {\n        warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n        return null;\n      }\n      const value = xref.fetchIfRef(ref);\n      if (!Array.isArray(value)) {\n        return null;\n      }\n      const nestedName = xref.fetchIfRef(value[0]);\n      if (typeof nestedName !== \"string\") {\n        return null;\n      }\n      const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n      if (!nestedOrder || !nestedOrder.length) {\n        return null;\n      }\n      return { name: stringToPDFString(nestedName), order: nestedOrder };\n    }\n\n    const xref = this.xref,\n      parsedOrderRefs = new RefSet(),\n      MAX_NESTED_LEVELS = 10;\n\n    return {\n      name:\n        typeof config.get(\"Name\") === \"string\"\n          ? stringToPDFString(config.get(\"Name\"))\n          : null,\n      creator:\n        typeof config.get(\"Creator\") === \"string\"\n          ? stringToPDFString(config.get(\"Creator\"))\n          : null,\n      baseState:\n        config.get(\"BaseState\") instanceof Name\n          ? config.get(\"BaseState\").name\n          : null,\n      on: parseOnOff(config.get(\"ON\")),\n      off: parseOnOff(config.get(\"OFF\")),\n      order: parseOrder(config.get(\"Order\")),\n      groups: null,\n    };\n  }\n\n  setActualNumPages(num = null) {\n    this._actualNumPages = num;\n  }\n\n  get hasActualNumPages() {\n    return this._actualNumPages !== null;\n  }\n\n  get _pagesCount() {\n    const obj = this.toplevelPagesDict.get(\"Count\");\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\n        \"Page count in top-level pages dictionary is not an integer.\"\n      );\n    }\n    return shadow(this, \"_pagesCount\", obj);\n  }\n\n  get numPages() {\n    return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\n  }\n\n  get destinations() {\n    const obj = this._readDests(),\n      dests = Object.create(null);\n    if (obj instanceof NameTree) {\n      for (const [key, value] of obj.getAll()) {\n        const dest = fetchDestination(value);\n        if (dest) {\n          dests[key] = dest;\n        }\n      }\n    } else if (obj instanceof Dict) {\n      obj.forEach(function (key, value) {\n        const dest = fetchDestination(value);\n        if (dest) {\n          dests[key] = dest;\n        }\n      });\n    }\n    return shadow(this, \"destinations\", dests);\n  }\n\n  getDestination(id) {\n    const obj = this._readDests();\n    if (obj instanceof NameTree) {\n      const dest = fetchDestination(obj.get(id));\n      if (dest) {\n        return dest;\n      }\n      // Fallback to checking the *entire* NameTree, in an attempt to handle\n      // corrupt PDF documents with out-of-order NameTrees (fixes issue 10272).\n      const allDest = this.destinations[id];\n      if (allDest) {\n        warn(`Found \"${id}\" at an incorrect position in the NameTree.`);\n        return allDest;\n      }\n    } else if (obj instanceof Dict) {\n      const dest = fetchDestination(obj.get(id));\n      if (dest) {\n        return dest;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * @private\n   */\n  _readDests() {\n    const obj = this._catDict.get(\"Names\");\n    if (obj && obj.has(\"Dests\")) {\n      return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n    } else if (this._catDict.has(\"Dests\")) {\n      // Simple destination dictionary.\n      return this._catDict.get(\"Dests\");\n    }\n    return undefined;\n  }\n\n  get pageLabels() {\n    let obj = null;\n    try {\n      obj = this._readPageLabels();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read page labels.\");\n    }\n    return shadow(this, \"pageLabels\", obj);\n  }\n\n  /**\n   * @private\n   */\n  _readPageLabels() {\n    const obj = this._catDict.getRaw(\"PageLabels\");\n    if (!obj) {\n      return null;\n    }\n\n    const pageLabels = new Array(this.numPages);\n    let style = null,\n      prefix = \"\";\n\n    const numberTree = new NumberTree(obj, this.xref);\n    const nums = numberTree.getAll();\n    let currentLabel = \"\",\n      currentIndex = 1;\n\n    for (let i = 0, ii = this.numPages; i < ii; i++) {\n      const labelDict = nums.get(i);\n\n      if (labelDict !== undefined) {\n        if (!(labelDict instanceof Dict)) {\n          throw new FormatError(\"PageLabel is not a dictionary.\");\n        }\n\n        if (\n          labelDict.has(\"Type\") &&\n          !isName(labelDict.get(\"Type\"), \"PageLabel\")\n        ) {\n          throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n        }\n\n        if (labelDict.has(\"S\")) {\n          const s = labelDict.get(\"S\");\n          if (!(s instanceof Name)) {\n            throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n          }\n          style = s.name;\n        } else {\n          style = null;\n        }\n\n        if (labelDict.has(\"P\")) {\n          const p = labelDict.get(\"P\");\n          if (typeof p !== \"string\") {\n            throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n          }\n          prefix = stringToPDFString(p);\n        } else {\n          prefix = \"\";\n        }\n\n        if (labelDict.has(\"St\")) {\n          const st = labelDict.get(\"St\");\n          if (!(Number.isInteger(st) && st >= 1)) {\n            throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n          }\n          currentIndex = st;\n        } else {\n          currentIndex = 1;\n        }\n      }\n\n      switch (style) {\n        case \"D\":\n          currentLabel = currentIndex;\n          break;\n        case \"R\":\n        case \"r\":\n          currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n          break;\n        case \"A\":\n        case \"a\":\n          const LIMIT = 26; // Use only the characters A-Z, or a-z.\n          const A_UPPER_CASE = 0x41,\n            A_LOWER_CASE = 0x61;\n\n          const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n          const letterIndex = currentIndex - 1;\n          const character = String.fromCharCode(\n            baseCharCode + (letterIndex % LIMIT)\n          );\n          const charBuf = [];\n          for (let j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) {\n            charBuf.push(character);\n          }\n          currentLabel = charBuf.join(\"\");\n          break;\n        default:\n          if (style) {\n            throw new FormatError(\n              `Invalid style \"${style}\" in PageLabel dictionary.`\n            );\n          }\n          currentLabel = \"\";\n      }\n\n      pageLabels[i] = prefix + currentLabel;\n      currentIndex++;\n    }\n    return pageLabels;\n  }\n\n  get pageLayout() {\n    const obj = this._catDict.get(\"PageLayout\");\n    // Purposely use a non-standard default value, rather than 'SinglePage', to\n    // allow differentiating between `undefined` and /SinglePage since that does\n    // affect the Scroll mode (continuous/non-continuous) used in Adobe Reader.\n    let pageLayout = \"\";\n\n    if (obj instanceof Name) {\n      switch (obj.name) {\n        case \"SinglePage\":\n        case \"OneColumn\":\n        case \"TwoColumnLeft\":\n        case \"TwoColumnRight\":\n        case \"TwoPageLeft\":\n        case \"TwoPageRight\":\n          pageLayout = obj.name;\n      }\n    }\n    return shadow(this, \"pageLayout\", pageLayout);\n  }\n\n  get pageMode() {\n    const obj = this._catDict.get(\"PageMode\");\n    let pageMode = \"UseNone\"; // Default value.\n\n    if (obj instanceof Name) {\n      switch (obj.name) {\n        case \"UseNone\":\n        case \"UseOutlines\":\n        case \"UseThumbs\":\n        case \"FullScreen\":\n        case \"UseOC\":\n        case \"UseAttachments\":\n          pageMode = obj.name;\n      }\n    }\n    return shadow(this, \"pageMode\", pageMode);\n  }\n\n  get viewerPreferences() {\n    const obj = this._catDict.get(\"ViewerPreferences\");\n    if (!(obj instanceof Dict)) {\n      return shadow(this, \"viewerPreferences\", null);\n    }\n    let prefs = null;\n\n    for (const key of obj.getKeys()) {\n      const value = obj.get(key);\n      let prefValue;\n\n      switch (key) {\n        case \"HideToolbar\":\n        case \"HideMenubar\":\n        case \"HideWindowUI\":\n        case \"FitWindow\":\n        case \"CenterWindow\":\n        case \"DisplayDocTitle\":\n        case \"PickTrayByPDFSize\":\n          if (typeof value === \"boolean\") {\n            prefValue = value;\n          }\n          break;\n        case \"NonFullScreenPageMode\":\n          if (value instanceof Name) {\n            switch (value.name) {\n              case \"UseNone\":\n              case \"UseOutlines\":\n              case \"UseThumbs\":\n              case \"UseOC\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"UseNone\";\n            }\n          }\n          break;\n        case \"Direction\":\n          if (value instanceof Name) {\n            switch (value.name) {\n              case \"L2R\":\n              case \"R2L\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"L2R\";\n            }\n          }\n          break;\n        case \"ViewArea\":\n        case \"ViewClip\":\n        case \"PrintArea\":\n        case \"PrintClip\":\n          if (value instanceof Name) {\n            switch (value.name) {\n              case \"MediaBox\":\n              case \"CropBox\":\n              case \"BleedBox\":\n              case \"TrimBox\":\n              case \"ArtBox\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"CropBox\";\n            }\n          }\n          break;\n        case \"PrintScaling\":\n          if (value instanceof Name) {\n            switch (value.name) {\n              case \"None\":\n              case \"AppDefault\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"AppDefault\";\n            }\n          }\n          break;\n        case \"Duplex\":\n          if (value instanceof Name) {\n            switch (value.name) {\n              case \"Simplex\":\n              case \"DuplexFlipShortEdge\":\n              case \"DuplexFlipLongEdge\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"None\";\n            }\n          }\n          break;\n        case \"PrintPageRange\":\n          // The number of elements must be even.\n          if (Array.isArray(value) && value.length % 2 === 0) {\n            const isValid = value.every((page, i, arr) => {\n              return (\n                Number.isInteger(page) &&\n                page > 0 &&\n                (i === 0 || page >= arr[i - 1]) &&\n                page <= this.numPages\n              );\n            });\n            if (isValid) {\n              prefValue = value;\n            }\n          }\n          break;\n        case \"NumCopies\":\n          if (Number.isInteger(value) && value > 0) {\n            prefValue = value;\n          }\n          break;\n        default:\n          warn(`Ignoring non-standard key in ViewerPreferences: ${key}.`);\n          continue;\n      }\n\n      if (prefValue === undefined) {\n        warn(`Bad value, for key \"${key}\", in ViewerPreferences: ${value}.`);\n        continue;\n      }\n      if (!prefs) {\n        prefs = Object.create(null);\n      }\n      prefs[key] = prefValue;\n    }\n    return shadow(this, \"viewerPreferences\", prefs);\n  }\n\n  get openAction() {\n    const obj = this._catDict.get(\"OpenAction\");\n    const openAction = Object.create(null);\n\n    if (obj instanceof Dict) {\n      // Convert the OpenAction dictionary into a format that works with\n      // `parseDestDictionary`, to avoid having to re-implement those checks.\n      const destDict = new Dict(this.xref);\n      destDict.set(\"A\", obj);\n\n      const resultObj = { url: null, dest: null, action: null };\n      Catalog.parseDestDictionary({ destDict, resultObj });\n\n      if (Array.isArray(resultObj.dest)) {\n        openAction.dest = resultObj.dest;\n      } else if (resultObj.action) {\n        openAction.action = resultObj.action;\n      }\n    } else if (Array.isArray(obj)) {\n      openAction.dest = obj;\n    }\n    return shadow(\n      this,\n      \"openAction\",\n      objectSize(openAction) > 0 ? openAction : null\n    );\n  }\n\n  get attachments() {\n    const obj = this._catDict.get(\"Names\");\n    let attachments = null;\n\n    if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n      const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n      for (const [key, value] of nameTree.getAll()) {\n        const fs = new FileSpec(value, this.xref);\n        if (!attachments) {\n          attachments = Object.create(null);\n        }\n        attachments[stringToPDFString(key)] = fs.serializable;\n      }\n    }\n    return shadow(this, \"attachments\", attachments);\n  }\n\n  get xfaImages() {\n    const obj = this._catDict.get(\"Names\");\n    let xfaImages = null;\n\n    if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n      const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n      for (const [key, value] of nameTree.getAll()) {\n        if (!xfaImages) {\n          xfaImages = new Dict(this.xref);\n        }\n        xfaImages.set(key, value);\n      }\n    }\n    return shadow(this, \"xfaImages\", xfaImages);\n  }\n\n  _collectJavaScript() {\n    const obj = this._catDict.get(\"Names\");\n    let javaScript = null;\n\n    function appendIfJavaScriptDict(name, jsDict) {\n      if (!(jsDict instanceof Dict)) {\n        return;\n      }\n      if (!isName(jsDict.get(\"S\"), \"JavaScript\")) {\n        return;\n      }\n\n      let js = jsDict.get(\"JS\");\n      if (js instanceof BaseStream) {\n        js = js.getString();\n      } else if (typeof js !== \"string\") {\n        return;\n      }\n\n      if (javaScript === null) {\n        javaScript = new Map();\n      }\n      javaScript.set(name, stringToPDFString(js));\n    }\n\n    if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n      const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n      for (const [key, value] of nameTree.getAll()) {\n        appendIfJavaScriptDict(key, value);\n      }\n    }\n    // Append OpenAction \"JavaScript\" actions, if any, to the JavaScript map.\n    const openAction = this._catDict.get(\"OpenAction\");\n    if (openAction) {\n      appendIfJavaScriptDict(\"OpenAction\", openAction);\n    }\n\n    return javaScript;\n  }\n\n  get javaScript() {\n    const javaScript = this._collectJavaScript();\n    return shadow(\n      this,\n      \"javaScript\",\n      javaScript ? [...javaScript.values()] : null\n    );\n  }\n\n  get jsActions() {\n    const javaScript = this._collectJavaScript();\n    let actions = collectActions(\n      this.xref,\n      this._catDict,\n      DocumentActionEventType\n    );\n\n    if (javaScript) {\n      if (!actions) {\n        actions = Object.create(null);\n      }\n      for (const [key, val] of javaScript) {\n        if (key in actions) {\n          actions[key].push(val);\n        } else {\n          actions[key] = [val];\n        }\n      }\n    }\n    return shadow(this, \"jsActions\", actions);\n  }\n\n  fontFallback(id, handler) {\n    const promises = [];\n    this.fontCache.forEach(function (promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then(translatedFonts => {\n      for (const translatedFont of translatedFonts) {\n        if (translatedFont.loadedName === id) {\n          translatedFont.fallback(handler);\n          return;\n        }\n      }\n    });\n  }\n\n  cleanup(manuallyTriggered = false) {\n    clearGlobalCaches();\n    this.globalImageCache.clear(/* onlyData = */ manuallyTriggered);\n    this.pageKidsCountCache.clear();\n    this.pageIndexCache.clear();\n    this.nonBlendModesSet.clear();\n\n    const promises = [];\n    this.fontCache.forEach(function (promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then(translatedFonts => {\n      for (const { dict } of translatedFonts) {\n        delete dict.cacheKey;\n      }\n      this.fontCache.clear();\n      this.builtInCMapCache.clear();\n      this.standardFontDataCache.clear();\n    });\n  }\n\n  async getPageDict(pageIndex) {\n    const nodesToVisit = [this.toplevelPagesDict];\n    const visitedNodes = new RefSet();\n\n    const pagesRef = this._catDict.getRaw(\"Pages\");\n    if (pagesRef instanceof Ref) {\n      visitedNodes.put(pagesRef);\n    }\n    const xref = this.xref,\n      pageKidsCountCache = this.pageKidsCountCache,\n      pageIndexCache = this.pageIndexCache;\n    let currentPageIndex = 0;\n\n    while (nodesToVisit.length) {\n      const currentNode = nodesToVisit.pop();\n\n      if (currentNode instanceof Ref) {\n        const count = pageKidsCountCache.get(currentNode);\n        // Skip nodes where the page can't be.\n        if (count >= 0 && currentPageIndex + count <= pageIndex) {\n          currentPageIndex += count;\n          continue;\n        }\n        // Prevent circular references in the /Pages tree.\n        if (visitedNodes.has(currentNode)) {\n          throw new FormatError(\"Pages tree contains circular reference.\");\n        }\n        visitedNodes.put(currentNode);\n\n        const obj = await xref.fetchAsync(currentNode);\n        if (obj instanceof Dict) {\n          let type = obj.getRaw(\"Type\");\n          if (type instanceof Ref) {\n            type = await xref.fetchAsync(type);\n          }\n          if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n            // Cache the Page reference, since it can *greatly* improve\n            // performance by reducing redundant lookups in long documents\n            // where all nodes are found at *one* level of the tree.\n            if (!pageKidsCountCache.has(currentNode)) {\n              pageKidsCountCache.put(currentNode, 1);\n            }\n            // Help improve performance of the `getPageIndex` method.\n            if (!pageIndexCache.has(currentNode)) {\n              pageIndexCache.put(currentNode, currentPageIndex);\n            }\n\n            if (currentPageIndex === pageIndex) {\n              return [obj, currentNode];\n            }\n            currentPageIndex++;\n            continue;\n          }\n        }\n        nodesToVisit.push(obj);\n        continue;\n      }\n\n      // Must be a child page dictionary.\n      if (!(currentNode instanceof Dict)) {\n        throw new FormatError(\n          \"Page dictionary kid reference points to wrong type of object.\"\n        );\n      }\n      const { objId } = currentNode;\n\n      let count = currentNode.getRaw(\"Count\");\n      if (count instanceof Ref) {\n        count = await xref.fetchAsync(count);\n      }\n      if (Number.isInteger(count) && count >= 0) {\n        // Cache the Kids count, since it can reduce redundant lookups in\n        // documents where all nodes are found at *one* level of the tree.\n        if (objId && !pageKidsCountCache.has(objId)) {\n          pageKidsCountCache.put(objId, count);\n        }\n\n        // Skip nodes where the page can't be.\n        if (currentPageIndex + count <= pageIndex) {\n          currentPageIndex += count;\n          continue;\n        }\n      }\n\n      let kids = currentNode.getRaw(\"Kids\");\n      if (kids instanceof Ref) {\n        kids = await xref.fetchAsync(kids);\n      }\n      if (!Array.isArray(kids)) {\n        // Prevent errors in corrupt PDF documents that violate the\n        // specification by *inlining* Page dicts directly in the Kids\n        // array, rather than using indirect objects (fixes issue9540.pdf).\n        let type = currentNode.getRaw(\"Type\");\n        if (type instanceof Ref) {\n          type = await xref.fetchAsync(type);\n        }\n        if (isName(type, \"Page\") || !currentNode.has(\"Kids\")) {\n          if (currentPageIndex === pageIndex) {\n            return [currentNode, null];\n          }\n          currentPageIndex++;\n          continue;\n        }\n\n        throw new FormatError(\"Page dictionary kids object is not an array.\");\n      }\n\n      // Always check all `Kids` nodes, to avoid getting stuck in an empty\n      // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n      // and to ensure that we actually find the correct `Page` dict.\n      for (let last = kids.length - 1; last >= 0; last--) {\n        nodesToVisit.push(kids[last]);\n      }\n    }\n\n    throw new Error(`Page index ${pageIndex} not found.`);\n  }\n\n  /**\n   * Eagerly fetches the entire /Pages-tree; should ONLY be used as a fallback.\n   * @returns {Promise<Map>}\n   */\n  async getAllPageDicts(recoveryMode = false) {\n    const queue = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }];\n    const visitedNodes = new RefSet();\n\n    const pagesRef = this._catDict.getRaw(\"Pages\");\n    if (pagesRef instanceof Ref) {\n      visitedNodes.put(pagesRef);\n    }\n    const map = new Map(),\n      xref = this.xref,\n      pageIndexCache = this.pageIndexCache;\n    let pageIndex = 0;\n\n    function addPageDict(pageDict, pageRef) {\n      // Help improve performance of the `getPageIndex` method.\n      if (pageRef && !pageIndexCache.has(pageRef)) {\n        pageIndexCache.put(pageRef, pageIndex);\n      }\n\n      map.set(pageIndex++, [pageDict, pageRef]);\n    }\n    function addPageError(error) {\n      if (error instanceof XRefEntryException && !recoveryMode) {\n        throw error;\n      }\n\n      map.set(pageIndex++, [error, null]);\n    }\n\n    while (queue.length > 0) {\n      const queueItem = queue[queue.length - 1];\n      const { currentNode, posInKids } = queueItem;\n\n      let kids = currentNode.getRaw(\"Kids\");\n      if (kids instanceof Ref) {\n        try {\n          kids = await xref.fetchAsync(kids);\n        } catch (ex) {\n          addPageError(ex);\n          break;\n        }\n      }\n      if (!Array.isArray(kids)) {\n        addPageError(\n          new FormatError(\"Page dictionary kids object is not an array.\")\n        );\n        break;\n      }\n\n      if (posInKids >= kids.length) {\n        queue.pop();\n        continue;\n      }\n\n      const kidObj = kids[posInKids];\n      let obj;\n      if (kidObj instanceof Ref) {\n        // Prevent circular references in the /Pages tree.\n        if (visitedNodes.has(kidObj)) {\n          addPageError(\n            new FormatError(\"Pages tree contains circular reference.\")\n          );\n          break;\n        }\n        visitedNodes.put(kidObj);\n\n        try {\n          obj = await xref.fetchAsync(kidObj);\n        } catch (ex) {\n          addPageError(ex);\n          break;\n        }\n      } else {\n        // Prevent errors in corrupt PDF documents that violate the\n        // specification by *inlining* Page dicts directly in the Kids\n        // array, rather than using indirect objects (see issue9540.pdf).\n        obj = kidObj;\n      }\n      if (!(obj instanceof Dict)) {\n        addPageError(\n          new FormatError(\n            \"Page dictionary kid reference points to wrong type of object.\"\n          )\n        );\n        break;\n      }\n\n      let type = obj.getRaw(\"Type\");\n      if (type instanceof Ref) {\n        try {\n          type = await xref.fetchAsync(type);\n        } catch (ex) {\n          addPageError(ex);\n          break;\n        }\n      }\n      if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n        addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\n      } else {\n        queue.push({ currentNode: obj, posInKids: 0 });\n      }\n      queueItem.posInKids++;\n    }\n    return map;\n  }\n\n  getPageIndex(pageRef) {\n    const cachedPageIndex = this.pageIndexCache.get(pageRef);\n    if (cachedPageIndex !== undefined) {\n      return Promise.resolve(cachedPageIndex);\n    }\n\n    // The page tree nodes have the count of all the leaves below them. To get\n    // how many pages are before we just have to walk up the tree and keep\n    // adding the count of siblings to the left of the node.\n    const xref = this.xref;\n\n    function pagesBeforeRef(kidRef) {\n      let total = 0,\n        parentRef;\n\n      return xref\n        .fetchAsync(kidRef)\n        .then(function (node) {\n          if (\n            isRefsEqual(kidRef, pageRef) &&\n            !isDict(node, \"Page\") &&\n            !(node instanceof Dict && !node.has(\"Type\") && node.has(\"Contents\"))\n          ) {\n            throw new FormatError(\n              \"The reference does not point to a /Page dictionary.\"\n            );\n          }\n          if (!node) {\n            return null;\n          }\n          if (!(node instanceof Dict)) {\n            throw new FormatError(\"Node must be a dictionary.\");\n          }\n          parentRef = node.getRaw(\"Parent\");\n          return node.getAsync(\"Parent\");\n        })\n        .then(function (parent) {\n          if (!parent) {\n            return null;\n          }\n          if (!(parent instanceof Dict)) {\n            throw new FormatError(\"Parent must be a dictionary.\");\n          }\n          return parent.getAsync(\"Kids\");\n        })\n        .then(function (kids) {\n          if (!kids) {\n            return null;\n          }\n\n          const kidPromises = [];\n          let found = false;\n          for (let i = 0, ii = kids.length; i < ii; i++) {\n            const kid = kids[i];\n            if (!(kid instanceof Ref)) {\n              throw new FormatError(\"Kid must be a reference.\");\n            }\n            if (isRefsEqual(kid, kidRef)) {\n              found = true;\n              break;\n            }\n            kidPromises.push(\n              xref.fetchAsync(kid).then(function (obj) {\n                if (!(obj instanceof Dict)) {\n                  throw new FormatError(\"Kid node must be a dictionary.\");\n                }\n                if (obj.has(\"Count\")) {\n                  total += obj.get(\"Count\");\n                } else {\n                  // Page leaf node.\n                  total++;\n                }\n              })\n            );\n          }\n          if (!found) {\n            throw new FormatError(\"Kid reference not found in parent's kids.\");\n          }\n          return Promise.all(kidPromises).then(function () {\n            return [total, parentRef];\n          });\n        });\n    }\n\n    let total = 0;\n    const next = ref =>\n      pagesBeforeRef(ref).then(args => {\n        if (!args) {\n          this.pageIndexCache.put(pageRef, total);\n          return total;\n        }\n        const [count, parentRef] = args;\n        total += count;\n        return next(parentRef);\n      });\n\n    return next(pageRef);\n  }\n\n  /**\n   * @typedef ParseDestDictionaryParameters\n   * @property {Dict} destDict - The dictionary containing the destination.\n   * @property {Object} resultObj - The object where the parsed destination\n   *   properties will be placed.\n   * @property {string} [docBaseUrl] - The document base URL that is used when\n   *   attempting to recover valid absolute URLs from relative ones.\n   */\n\n  /**\n   * Helper function used to parse the contents of destination dictionaries.\n   * @param {ParseDestDictionaryParameters} params\n   */\n  static parseDestDictionary(params) {\n    const destDict = params.destDict;\n    if (!(destDict instanceof Dict)) {\n      warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n      return;\n    }\n    const resultObj = params.resultObj;\n    if (typeof resultObj !== \"object\") {\n      warn(\"parseDestDictionary: `resultObj` must be an object.\");\n      return;\n    }\n    const docBaseUrl = params.docBaseUrl || null;\n\n    let action = destDict.get(\"A\"),\n      url,\n      dest;\n    if (!(action instanceof Dict)) {\n      if (destDict.has(\"Dest\")) {\n        // A /Dest entry should *only* contain a Name or an Array, but some bad\n        // PDF generators ignore that and treat it as an /A entry.\n        action = destDict.get(\"Dest\");\n      } else {\n        action = destDict.get(\"AA\");\n        if (action instanceof Dict) {\n          if (action.has(\"D\")) {\n            // MouseDown\n            action = action.get(\"D\");\n          } else if (action.has(\"U\")) {\n            // MouseUp\n            action = action.get(\"U\");\n          }\n        }\n      }\n    }\n\n    if (action instanceof Dict) {\n      const actionType = action.get(\"S\");\n      if (!(actionType instanceof Name)) {\n        warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n        return;\n      }\n      const actionName = actionType.name;\n\n      switch (actionName) {\n        case \"ResetForm\":\n          const flags = action.get(\"Flags\");\n          const include = ((typeof flags === \"number\" ? flags : 0) & 1) === 0;\n          const fields = [];\n          const refs = [];\n          for (const obj of action.get(\"Fields\") || []) {\n            if (obj instanceof Ref) {\n              refs.push(obj.toString());\n            } else if (typeof obj === \"string\") {\n              fields.push(stringToPDFString(obj));\n            }\n          }\n          resultObj.resetForm = { fields, refs, include };\n          break;\n        case \"URI\":\n          url = action.get(\"URI\");\n          if (url instanceof Name) {\n            // Some bad PDFs do not put parentheses around relative URLs.\n            url = \"/\" + url.name;\n          }\n          // TODO: pdf spec mentions urls can be relative to a Base\n          // entry in the dictionary.\n          break;\n\n        case \"GoTo\":\n          dest = action.get(\"D\");\n          break;\n\n        case \"Launch\":\n        // We neither want, nor can, support arbitrary 'Launch' actions.\n        // However, in practice they are mostly used for linking to other PDF\n        // files, which we thus attempt to support (utilizing `docBaseUrl`).\n        /* falls through */\n\n        case \"GoToR\":\n          const urlDict = action.get(\"F\");\n          if (urlDict instanceof Dict) {\n            // We assume that we found a FileSpec dictionary\n            // and fetch the URL without checking any further.\n            url = urlDict.get(\"F\") || null;\n          } else if (typeof urlDict === \"string\") {\n            url = urlDict;\n          }\n\n          // NOTE: the destination is relative to the *remote* document.\n          let remoteDest = action.get(\"D\");\n          if (remoteDest) {\n            if (remoteDest instanceof Name) {\n              remoteDest = remoteDest.name;\n            }\n            if (typeof url === \"string\") {\n              const baseUrl = url.split(\"#\")[0];\n              if (typeof remoteDest === \"string\") {\n                url = baseUrl + \"#\" + remoteDest;\n              } else if (Array.isArray(remoteDest)) {\n                url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n              }\n            }\n          }\n          // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n          const newWindow = action.get(\"NewWindow\");\n          if (typeof newWindow === \"boolean\") {\n            resultObj.newWindow = newWindow;\n          }\n          break;\n\n        case \"Named\":\n          const namedAction = action.get(\"N\");\n          if (namedAction instanceof Name) {\n            resultObj.action = namedAction.name;\n          }\n          break;\n\n        case \"JavaScript\":\n          const jsAction = action.get(\"JS\");\n          let js;\n\n          if (jsAction instanceof BaseStream) {\n            js = jsAction.getString();\n          } else if (typeof jsAction === \"string\") {\n            js = jsAction;\n          }\n\n          const jsURL = js && recoverJsURL(stringToPDFString(js));\n          if (jsURL) {\n            url = jsURL.url;\n            resultObj.newWindow = jsURL.newWindow;\n            break;\n          }\n        /* falls through */\n        default:\n          if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n            // Don't bother the user with a warning for actions that require\n            // scripting support, since those will be handled separately.\n            break;\n          }\n          warn(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n          break;\n      }\n    } else if (destDict.has(\"Dest\")) {\n      // Simple destination.\n      dest = destDict.get(\"Dest\");\n    }\n\n    if (typeof url === \"string\") {\n      const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\n        addDefaultProtocol: true,\n        tryConvertEncoding: true,\n      });\n      if (absoluteUrl) {\n        resultObj.url = absoluteUrl.href;\n      }\n      resultObj.unsafeUrl = url;\n    }\n    if (dest) {\n      if (dest instanceof Name) {\n        dest = dest.name;\n      }\n      if (typeof dest === \"string\" || Array.isArray(dest)) {\n        resultObj.dest = dest;\n      }\n    }\n  }\n}\n\nexport { Catalog };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, RefSet } from \"./primitives.js\";\nimport { FormatError, unreachable, warn } from \"../shared/util.js\";\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n  constructor(root, xref, type) {\n    if (this.constructor === NameOrNumberTree) {\n      unreachable(\"Cannot initialize NameOrNumberTree.\");\n    }\n    this.root = root;\n    this.xref = xref;\n    this._type = type;\n  }\n\n  getAll() {\n    const map = new Map();\n    if (!this.root) {\n      return map;\n    }\n    const xref = this.xref;\n    // Reading Name/Number tree.\n    const processed = new RefSet();\n    processed.put(this.root);\n    const queue = [this.root];\n    while (queue.length > 0) {\n      const obj = xref.fetchIfRef(queue.shift());\n      if (!(obj instanceof Dict)) {\n        continue;\n      }\n      if (obj.has(\"Kids\")) {\n        const kids = obj.get(\"Kids\");\n        for (let i = 0, ii = kids.length; i < ii; i++) {\n          const kid = kids[i];\n          if (processed.has(kid)) {\n            throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n          }\n          queue.push(kid);\n          processed.put(kid);\n        }\n        continue;\n      }\n      const entries = obj.get(this._type);\n      if (!Array.isArray(entries)) {\n        continue;\n      }\n      for (let i = 0, ii = entries.length; i < ii; i += 2) {\n        map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\n      }\n    }\n    return map;\n  }\n\n  get(key) {\n    if (!this.root) {\n      return null;\n    }\n    const xref = this.xref;\n    let kidsOrEntries = xref.fetchIfRef(this.root);\n    let loopCount = 0;\n    const MAX_LEVELS = 10;\n\n    // Perform a binary search to quickly find the entry that\n    // contains the key we are looking for.\n    while (kidsOrEntries.has(\"Kids\")) {\n      if (++loopCount > MAX_LEVELS) {\n        warn(`Search depth limit reached for \"${this._type}\" tree.`);\n        return null;\n      }\n\n      const kids = kidsOrEntries.get(\"Kids\");\n      if (!Array.isArray(kids)) {\n        return null;\n      }\n\n      let l = 0,\n        r = kids.length - 1;\n      while (l <= r) {\n        const m = (l + r) >> 1;\n        const kid = xref.fetchIfRef(kids[m]);\n        const limits = kid.get(\"Limits\");\n\n        if (key < xref.fetchIfRef(limits[0])) {\n          r = m - 1;\n        } else if (key > xref.fetchIfRef(limits[1])) {\n          l = m + 1;\n        } else {\n          kidsOrEntries = xref.fetchIfRef(kids[m]);\n          break;\n        }\n      }\n      if (l > r) {\n        return null;\n      }\n    }\n\n    // If we get here, then we have found the right entry. Now go through the\n    // entries in the dictionary until we find the key we're looking for.\n    const entries = kidsOrEntries.get(this._type);\n    if (Array.isArray(entries)) {\n      // Perform a binary search to reduce the lookup time.\n      let l = 0,\n        r = entries.length - 2;\n      while (l <= r) {\n        // Check only even indices (0, 2, 4, ...) because the\n        // odd indices contain the actual data.\n        const tmp = (l + r) >> 1,\n          m = tmp + (tmp & 1);\n        const currentKey = xref.fetchIfRef(entries[m]);\n        if (key < currentKey) {\n          r = m - 2;\n        } else if (key > currentKey) {\n          l = m + 2;\n        } else {\n          return xref.fetchIfRef(entries[m + 1]);\n        }\n      }\n    }\n    return null;\n  }\n}\n\nclass NameTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Names\");\n  }\n}\n\nclass NumberTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Nums\");\n  }\n}\n\nexport { NameTree, NumberTree };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { clearPrimitiveCaches } from \"./primitives.js\";\nimport { clearUnicodeCaches } from \"./unicode.js\";\n\nfunction clearGlobalCaches() {\n  clearPrimitiveCaches();\n  clearUnicodeCaches();\n}\n\nexport { clearGlobalCaches };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToPDFString, warn } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { Dict } from \"./primitives.js\";\n\nfunction pickPlatformItem(dict) {\n  // Look for the filename in this order:\n  // UF, F, Unix, Mac, DOS\n  if (dict.has(\"UF\")) {\n    return dict.get(\"UF\");\n  } else if (dict.has(\"F\")) {\n    return dict.get(\"F\");\n  } else if (dict.has(\"Unix\")) {\n    return dict.get(\"Unix\");\n  } else if (dict.has(\"Mac\")) {\n    return dict.get(\"Mac\");\n  } else if (dict.has(\"DOS\")) {\n    return dict.get(\"DOS\");\n  }\n  return null;\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nclass FileSpec {\n  constructor(root, xref) {\n    if (!(root instanceof Dict)) {\n      return;\n    }\n    this.xref = xref;\n    this.root = root;\n    if (root.has(\"FS\")) {\n      this.fs = root.get(\"FS\");\n    }\n    this.description = root.has(\"Desc\")\n      ? stringToPDFString(root.get(\"Desc\"))\n      : \"\";\n    if (root.has(\"RF\")) {\n      warn(\"Related file specifications are not supported\");\n    }\n    this.contentAvailable = true;\n    if (!root.has(\"EF\")) {\n      this.contentAvailable = false;\n      warn(\"Non-embedded file specifications are not supported\");\n    }\n  }\n\n  get filename() {\n    if (!this._filename && this.root) {\n      const filename = pickPlatformItem(this.root) || \"unnamed\";\n      this._filename = stringToPDFString(filename)\n        .replace(/\\\\\\\\/g, \"\\\\\")\n        .replace(/\\\\\\//g, \"/\")\n        .replace(/\\\\/g, \"/\");\n    }\n    return this._filename;\n  }\n\n  get content() {\n    if (!this.contentAvailable) {\n      return null;\n    }\n    if (!this.contentRef && this.root) {\n      this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n    }\n    let content = null;\n    if (this.contentRef) {\n      const fileObj = this.xref.fetchIfRef(this.contentRef);\n      if (fileObj instanceof BaseStream) {\n        content = fileObj.getBytes();\n      } else {\n        warn(\n          \"Embedded file specification points to non-existing/invalid content\"\n        );\n      }\n    } else {\n      warn(\"Embedded file specification does not have a content\");\n    }\n    return content;\n  }\n\n  get serializable() {\n    return {\n      filename: this.filename,\n      content: this.content,\n    };\n  }\n}\n\nexport { FileSpec };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SimpleXMLParser } from \"./xml_parser.js\";\n\nclass MetadataParser {\n  constructor(data) {\n    // Ghostscript may produce invalid metadata, so try to repair that first.\n    data = this._repair(data);\n\n    // Convert the string to an XML document.\n    const parser = new SimpleXMLParser({ lowerCaseName: true });\n    const xmlDocument = parser.parseFromString(data);\n\n    this._metadataMap = new Map();\n    this._data = data;\n\n    if (xmlDocument) {\n      this._parse(xmlDocument);\n    }\n  }\n\n  _repair(data) {\n    // Start by removing any \"junk\" before the first tag (see issue 10395).\n    return data\n      .replace(/^[^<]+/, \"\")\n      .replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n        const bytes = codes\n          .replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n            return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n          })\n          .replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n            switch (name) {\n              case \"amp\":\n                return \"&\";\n              case \"apos\":\n                return \"'\";\n              case \"gt\":\n                return \">\";\n              case \"lt\":\n                return \"<\";\n              case \"quot\":\n                return '\"';\n            }\n            throw new Error(`_repair: ${name} isn't defined.`);\n          });\n\n        const charBuf = [];\n        for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n          const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n          if (\n            code >= /* Space = */ 32 &&\n            code < /* Delete = */ 127 &&\n            code !== /* '<' = */ 60 &&\n            code !== /* '>' = */ 62 &&\n            code !== /* '&' = */ 38\n          ) {\n            charBuf.push(String.fromCharCode(code));\n          } else {\n            charBuf.push(\n              \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\"\n            );\n          }\n        }\n        return \">\" + charBuf.join(\"\");\n      });\n  }\n\n  _getSequence(entry) {\n    const name = entry.nodeName;\n    if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n      return null;\n    }\n    return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n  }\n\n  _parseArray(entry) {\n    if (!entry.hasChildNodes()) {\n      return;\n    }\n    // Child must be a Bag (unordered array) or a Seq.\n    const [seqNode] = entry.childNodes;\n    const sequence = this._getSequence(seqNode) || [];\n\n    this._metadataMap.set(\n      entry.nodeName,\n      sequence.map(node => node.textContent.trim())\n    );\n  }\n\n  _parse(xmlDocument) {\n    let rdf = xmlDocument.documentElement;\n\n    if (rdf.nodeName !== \"rdf:rdf\") {\n      // Wrapped in <xmpmeta>\n      rdf = rdf.firstChild;\n      while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n        rdf = rdf.nextSibling;\n      }\n    }\n\n    if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n      return;\n    }\n\n    for (const desc of rdf.childNodes) {\n      if (desc.nodeName !== \"rdf:description\") {\n        continue;\n      }\n\n      for (const entry of desc.childNodes) {\n        const name = entry.nodeName;\n        switch (name) {\n          case \"#text\":\n            continue;\n          case \"dc:creator\":\n          case \"dc:subject\":\n            this._parseArray(entry);\n            continue;\n        }\n        this._metadataMap.set(name, entry.textContent.trim());\n      }\n    }\n  }\n\n  get serializable() {\n    return {\n      parsedData: this._metadataMap,\n      rawData: this._data,\n    };\n  }\n}\n\nexport { MetadataParser };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The code for XMLParserBase copied from\n// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts\n\nimport { encodeToXmlString } from \"./core_utils.js\";\n\nconst XMLParserErrorCode = {\n  NoError: 0,\n  EndOfDocument: -1,\n  UnterminatedCdat: -2,\n  UnterminatedXmlDeclaration: -3,\n  UnterminatedDoctypeDeclaration: -4,\n  UnterminatedComment: -5,\n  MalformedElement: -6,\n  OutOfMemory: -7,\n  UnterminatedAttributeValue: -8,\n  UnterminatedElement: -9,\n  ElementNeverBegun: -10,\n};\n\nfunction isWhitespace(s, index) {\n  const ch = s[index];\n  return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n  for (let i = 0, ii = s.length; i < ii; i++) {\n    if (!isWhitespace(s, i)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nclass XMLParserBase {\n  _resolveEntities(s) {\n    return s.replace(/&([^;]+);/g, (all, entity) => {\n      if (entity.substring(0, 2) === \"#x\") {\n        return String.fromCodePoint(parseInt(entity.substring(2), 16));\n      } else if (entity.substring(0, 1) === \"#\") {\n        return String.fromCodePoint(parseInt(entity.substring(1), 10));\n      }\n      switch (entity) {\n        case \"lt\":\n          return \"<\";\n        case \"gt\":\n          return \">\";\n        case \"amp\":\n          return \"&\";\n        case \"quot\":\n          return '\"';\n        case \"apos\":\n          return \"'\";\n      }\n      return this.onResolveEntity(entity);\n    });\n  }\n\n  _parseContent(s, start) {\n    const attributes = [];\n    let pos = start;\n\n    function skipWs() {\n      while (pos < s.length && isWhitespace(s, pos)) {\n        ++pos;\n      }\n    }\n\n    while (\n      pos < s.length &&\n      !isWhitespace(s, pos) &&\n      s[pos] !== \">\" &&\n      s[pos] !== \"/\"\n    ) {\n      ++pos;\n    }\n    const name = s.substring(start, pos);\n    skipWs();\n    while (\n      pos < s.length &&\n      s[pos] !== \">\" &&\n      s[pos] !== \"/\" &&\n      s[pos] !== \"?\"\n    ) {\n      skipWs();\n      let attrName = \"\",\n        attrValue = \"\";\n      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n        attrName += s[pos];\n        ++pos;\n      }\n      skipWs();\n      if (s[pos] !== \"=\") {\n        return null;\n      }\n      ++pos;\n      skipWs();\n      const attrEndChar = s[pos];\n      if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n        return null;\n      }\n      const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n      if (attrEndIndex < 0) {\n        return null;\n      }\n      attrValue = s.substring(pos, attrEndIndex);\n      attributes.push({\n        name: attrName,\n        value: this._resolveEntities(attrValue),\n      });\n      pos = attrEndIndex + 1;\n      skipWs();\n    }\n    return {\n      name,\n      attributes,\n      parsed: pos - start,\n    };\n  }\n\n  _parseProcessingInstruction(s, start) {\n    let pos = start;\n\n    function skipWs() {\n      while (pos < s.length && isWhitespace(s, pos)) {\n        ++pos;\n      }\n    }\n\n    while (\n      pos < s.length &&\n      !isWhitespace(s, pos) &&\n      s[pos] !== \">\" &&\n      s[pos] !== \"?\" &&\n      s[pos] !== \"/\"\n    ) {\n      ++pos;\n    }\n    const name = s.substring(start, pos);\n    skipWs();\n    const attrStart = pos;\n    while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n      ++pos;\n    }\n    const value = s.substring(attrStart, pos);\n    return {\n      name,\n      value,\n      parsed: pos - start,\n    };\n  }\n\n  parseXml(s) {\n    let i = 0;\n    while (i < s.length) {\n      const ch = s[i];\n      let j = i;\n      if (ch === \"<\") {\n        ++j;\n        const ch2 = s[j];\n        let q;\n        switch (ch2) {\n          case \"/\":\n            ++j;\n            q = s.indexOf(\">\", j);\n            if (q < 0) {\n              this.onError(XMLParserErrorCode.UnterminatedElement);\n              return;\n            }\n            this.onEndElement(s.substring(j, q));\n            j = q + 1;\n            break;\n          case \"?\":\n            ++j;\n            const pi = this._parseProcessingInstruction(s, j);\n            if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n              this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n              return;\n            }\n            this.onPi(pi.name, pi.value);\n            j += pi.parsed + 2;\n            break;\n          case \"!\":\n            if (s.substring(j + 1, j + 3) === \"--\") {\n              q = s.indexOf(\"-->\", j + 3);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedComment);\n                return;\n              }\n              this.onComment(s.substring(j + 3, q));\n              j = q + 3;\n            } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n              q = s.indexOf(\"]]>\", j + 8);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedCdat);\n                return;\n              }\n              this.onCdata(s.substring(j + 8, q));\n              j = q + 3;\n            } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n              const q2 = s.indexOf(\"[\", j + 8);\n              let complexDoctype = false;\n              q = s.indexOf(\">\", j + 8);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n                return;\n              }\n              if (q2 > 0 && q > q2) {\n                q = s.indexOf(\"]>\", j + 8);\n                if (q < 0) {\n                  this.onError(\n                    XMLParserErrorCode.UnterminatedDoctypeDeclaration\n                  );\n                  return;\n                }\n                complexDoctype = true;\n              }\n              const doctypeContent = s.substring(\n                j + 8,\n                q + (complexDoctype ? 1 : 0)\n              );\n              this.onDoctype(doctypeContent);\n              j = q + (complexDoctype ? 2 : 1);\n            } else {\n              this.onError(XMLParserErrorCode.MalformedElement);\n              return;\n            }\n            break;\n          default:\n            const content = this._parseContent(s, j);\n            if (content === null) {\n              this.onError(XMLParserErrorCode.MalformedElement);\n              return;\n            }\n            let isClosed = false;\n            if (\n              s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\"\n            ) {\n              isClosed = true;\n            } else if (\n              s.substring(j + content.parsed, j + content.parsed + 1) !== \">\"\n            ) {\n              this.onError(XMLParserErrorCode.UnterminatedElement);\n              return;\n            }\n            this.onBeginElement(content.name, content.attributes, isClosed);\n            j += content.parsed + (isClosed ? 2 : 1);\n            break;\n        }\n      } else {\n        while (j < s.length && s[j] !== \"<\") {\n          j++;\n        }\n        const text = s.substring(i, j);\n        this.onText(this._resolveEntities(text));\n      }\n      i = j;\n    }\n  }\n\n  onResolveEntity(name) {\n    return `&${name};`;\n  }\n\n  onPi(name, value) {}\n\n  onComment(text) {}\n\n  onCdata(text) {}\n\n  onDoctype(doctypeContent) {}\n\n  onText(text) {}\n\n  onBeginElement(name, attributes, isEmpty) {}\n\n  onEndElement(name) {}\n\n  onError(code) {}\n}\n\nclass SimpleDOMNode {\n  constructor(nodeName, nodeValue) {\n    this.nodeName = nodeName;\n    this.nodeValue = nodeValue;\n\n    Object.defineProperty(this, \"parentNode\", { value: null, writable: true });\n  }\n\n  get firstChild() {\n    return this.childNodes && this.childNodes[0];\n  }\n\n  get nextSibling() {\n    const childNodes = this.parentNode.childNodes;\n    if (!childNodes) {\n      return undefined;\n    }\n    const index = childNodes.indexOf(this);\n    if (index === -1) {\n      return undefined;\n    }\n    return childNodes[index + 1];\n  }\n\n  get textContent() {\n    if (!this.childNodes) {\n      return this.nodeValue || \"\";\n    }\n    return this.childNodes\n      .map(function (child) {\n        return child.textContent;\n      })\n      .join(\"\");\n  }\n\n  hasChildNodes() {\n    return this.childNodes && this.childNodes.length > 0;\n  }\n\n  /**\n   * Search a node in the tree with the given path\n   * foo.bar[nnn], i.e. find the nnn-th node named\n   * bar under a node named foo.\n   *\n   * @param {Array} paths - an array of objects as\n   * returned by {parseXFAPath}.\n   * @param {number} pos - the current position in\n   * the paths array.\n   * @returns {SimpleDOMNode} The node corresponding\n   * to the path or null if not found.\n   */\n  searchNode(paths, pos) {\n    if (pos >= paths.length) {\n      return this;\n    }\n\n    const component = paths[pos];\n    const stack = [];\n    let node = this;\n\n    while (true) {\n      if (component.name === node.nodeName) {\n        if (component.pos === 0) {\n          const res = node.searchNode(paths, pos + 1);\n          if (res !== null) {\n            return res;\n          }\n        } else if (stack.length === 0) {\n          return null;\n        } else {\n          const [parent] = stack.pop();\n          let siblingPos = 0;\n          for (const child of parent.childNodes) {\n            if (component.name === child.nodeName) {\n              if (siblingPos === component.pos) {\n                return child.searchNode(paths, pos + 1);\n              }\n              siblingPos++;\n            }\n          }\n          // We didn't find the correct sibling\n          // so just return the first found node\n          return node.searchNode(paths, pos + 1);\n        }\n      }\n\n      if (node.childNodes && node.childNodes.length !== 0) {\n        stack.push([node, 0]);\n        node = node.childNodes[0];\n      } else if (stack.length === 0) {\n        return null;\n      } else {\n        while (stack.length !== 0) {\n          const [parent, currentPos] = stack.pop();\n          const newPos = currentPos + 1;\n          if (newPos < parent.childNodes.length) {\n            stack.push([parent, newPos]);\n            node = parent.childNodes[newPos];\n            break;\n          }\n        }\n        if (stack.length === 0) {\n          return null;\n        }\n      }\n    }\n  }\n\n  dump(buffer) {\n    if (this.nodeName === \"#text\") {\n      buffer.push(encodeToXmlString(this.nodeValue));\n      return;\n    }\n\n    buffer.push(`<${this.nodeName}`);\n    if (this.attributes) {\n      for (const attribute of this.attributes) {\n        buffer.push(\n          ` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`\n        );\n      }\n    }\n    if (this.hasChildNodes()) {\n      buffer.push(\">\");\n      for (const child of this.childNodes) {\n        child.dump(buffer);\n      }\n      buffer.push(`</${this.nodeName}>`);\n    } else if (this.nodeValue) {\n      buffer.push(`>${encodeToXmlString(this.nodeValue)}</${this.nodeName}>`);\n    } else {\n      buffer.push(\"/>\");\n    }\n  }\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n  constructor({ hasAttributes = false, lowerCaseName = false }) {\n    super();\n    this._currentFragment = null;\n    this._stack = null;\n    this._errorCode = XMLParserErrorCode.NoError;\n    this._hasAttributes = hasAttributes;\n    this._lowerCaseName = lowerCaseName;\n  }\n\n  parseFromString(data) {\n    this._currentFragment = [];\n    this._stack = [];\n    this._errorCode = XMLParserErrorCode.NoError;\n\n    this.parseXml(data);\n\n    if (this._errorCode !== XMLParserErrorCode.NoError) {\n      return undefined; // return undefined on error\n    }\n\n    // We should only have one root.\n    const [documentElement] = this._currentFragment;\n    if (!documentElement) {\n      return undefined; // Return undefined if no root was found.\n    }\n    return { documentElement };\n  }\n\n  onText(text) {\n    if (isWhitespaceString(text)) {\n      return;\n    }\n    const node = new SimpleDOMNode(\"#text\", text);\n    this._currentFragment.push(node);\n  }\n\n  onCdata(text) {\n    const node = new SimpleDOMNode(\"#text\", text);\n    this._currentFragment.push(node);\n  }\n\n  onBeginElement(name, attributes, isEmpty) {\n    if (this._lowerCaseName) {\n      name = name.toLowerCase();\n    }\n    const node = new SimpleDOMNode(name);\n    node.childNodes = [];\n    if (this._hasAttributes) {\n      node.attributes = attributes;\n    }\n    this._currentFragment.push(node);\n    if (isEmpty) {\n      return;\n    }\n    this._stack.push(this._currentFragment);\n    this._currentFragment = node.childNodes;\n  }\n\n  onEndElement(name) {\n    this._currentFragment = this._stack.pop() || [];\n    const lastElement = this._currentFragment[this._currentFragment.length - 1];\n    if (!lastElement) {\n      return;\n    }\n    for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n      lastElement.childNodes[i].parentNode = lastElement;\n    }\n  }\n\n  onError(code) {\n    this._errorCode = code;\n  }\n}\n\nexport { SimpleDOMNode, SimpleXMLParser, XMLParserBase, XMLParserErrorCode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isName, Name, Ref } from \"./primitives.js\";\nimport { stringToPDFString, warn } from \"../shared/util.js\";\nimport { NumberTree } from \"./name_number_tree.js\";\n\nconst MAX_DEPTH = 40;\n\nconst StructElementType = {\n  PAGE_CONTENT: \"PAGE_CONTENT\",\n  STREAM_CONTENT: \"STREAM_CONTENT\",\n  OBJECT: \"OBJECT\",\n  ELEMENT: \"ELEMENT\",\n};\n\nclass StructTreeRoot {\n  constructor(rootDict) {\n    this.dict = rootDict;\n    this.roleMap = new Map();\n  }\n\n  init() {\n    this.readRoleMap();\n  }\n\n  readRoleMap() {\n    const roleMapDict = this.dict.get(\"RoleMap\");\n    if (!(roleMapDict instanceof Dict)) {\n      return;\n    }\n    roleMapDict.forEach((key, value) => {\n      if (!(value instanceof Name)) {\n        return;\n      }\n      this.roleMap.set(key, value.name);\n    });\n  }\n}\n\n/**\n * Instead of loading the whole tree we load just the page's relevant structure\n * elements, which means we need a wrapper structure to represent the tree.\n */\nclass StructElementNode {\n  constructor(tree, dict) {\n    this.tree = tree;\n    this.dict = dict;\n    this.kids = [];\n    this.parseKids();\n  }\n\n  get role() {\n    const nameObj = this.dict.get(\"S\");\n    const name = nameObj instanceof Name ? nameObj.name : \"\";\n    const { root } = this.tree;\n    if (root.roleMap.has(name)) {\n      return root.roleMap.get(name);\n    }\n    return name;\n  }\n\n  parseKids() {\n    let pageObjId = null;\n    const objRef = this.dict.getRaw(\"Pg\");\n    if (objRef instanceof Ref) {\n      pageObjId = objRef.toString();\n    }\n    const kids = this.dict.get(\"K\");\n    if (Array.isArray(kids)) {\n      for (const kid of kids) {\n        const element = this.parseKid(pageObjId, kid);\n        if (element) {\n          this.kids.push(element);\n        }\n      }\n    } else {\n      const element = this.parseKid(pageObjId, kids);\n      if (element) {\n        this.kids.push(element);\n      }\n    }\n  }\n\n  parseKid(pageObjId, kid) {\n    // A direct link to content, the integer is an mcid.\n    if (Number.isInteger(kid)) {\n      if (this.tree.pageDict.objId !== pageObjId) {\n        return null;\n      }\n\n      return new StructElement({\n        type: StructElementType.PAGE_CONTENT,\n        mcid: kid,\n        pageObjId,\n      });\n    }\n\n    // Find the dictionary for the kid.\n    let kidDict = null;\n    if (kid instanceof Ref) {\n      kidDict = this.dict.xref.fetch(kid);\n    } else if (kid instanceof Dict) {\n      kidDict = kid;\n    }\n    if (!kidDict) {\n      return null;\n    }\n    const pageRef = kidDict.getRaw(\"Pg\");\n    if (pageRef instanceof Ref) {\n      pageObjId = pageRef.toString();\n    }\n\n    const type =\n      kidDict.get(\"Type\") instanceof Name ? kidDict.get(\"Type\").name : null;\n    if (type === \"MCR\") {\n      if (this.tree.pageDict.objId !== pageObjId) {\n        return null;\n      }\n      return new StructElement({\n        type: StructElementType.STREAM_CONTENT,\n        refObjId:\n          kidDict.getRaw(\"Stm\") instanceof Ref\n            ? kidDict.getRaw(\"Stm\").toString()\n            : null,\n        pageObjId,\n        mcid: kidDict.get(\"MCID\"),\n      });\n    }\n\n    if (type === \"OBJR\") {\n      if (this.tree.pageDict.objId !== pageObjId) {\n        return null;\n      }\n      return new StructElement({\n        type: StructElementType.OBJECT,\n        refObjId:\n          kidDict.getRaw(\"Obj\") instanceof Ref\n            ? kidDict.getRaw(\"Obj\").toString()\n            : null,\n        pageObjId,\n      });\n    }\n\n    return new StructElement({\n      type: StructElementType.ELEMENT,\n      dict: kidDict,\n    });\n  }\n}\n\nclass StructElement {\n  constructor({\n    type,\n    dict = null,\n    mcid = null,\n    pageObjId = null,\n    refObjId = null,\n  }) {\n    this.type = type;\n    this.dict = dict;\n    this.mcid = mcid;\n    this.pageObjId = pageObjId;\n    this.refObjId = refObjId;\n    this.parentNode = null;\n  }\n}\n\nclass StructTreePage {\n  constructor(structTreeRoot, pageDict) {\n    this.root = structTreeRoot;\n    this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\n    this.pageDict = pageDict;\n    this.nodes = [];\n  }\n\n  parse() {\n    if (!this.root || !this.rootDict) {\n      return;\n    }\n\n    const parentTree = this.rootDict.get(\"ParentTree\");\n    if (!parentTree) {\n      return;\n    }\n    const id = this.pageDict.get(\"StructParents\");\n    if (!Number.isInteger(id)) {\n      return;\n    }\n    const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n    const parentArray = numberTree.get(id);\n    if (!Array.isArray(parentArray)) {\n      return;\n    }\n    const map = new Map();\n    for (const ref of parentArray) {\n      if (ref instanceof Ref) {\n        this.addNode(this.rootDict.xref.fetch(ref), map);\n      }\n    }\n  }\n\n  addNode(dict, map, level = 0) {\n    if (level > MAX_DEPTH) {\n      warn(\"StructTree MAX_DEPTH reached.\");\n      return null;\n    }\n\n    if (map.has(dict)) {\n      return map.get(dict);\n    }\n\n    const element = new StructElementNode(this, dict);\n    map.set(dict, element);\n\n    const parent = dict.get(\"P\");\n\n    if (!parent || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n      if (!this.addTopLevelNode(dict, element)) {\n        map.delete(dict);\n      }\n      return element;\n    }\n\n    const parentNode = this.addNode(parent, map, level + 1);\n    if (!parentNode) {\n      return element;\n    }\n    let save = false;\n    for (const kid of parentNode.kids) {\n      if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n        kid.parentNode = element;\n        save = true;\n      }\n    }\n    if (!save) {\n      map.delete(dict);\n    }\n    return element;\n  }\n\n  addTopLevelNode(dict, element) {\n    const obj = this.rootDict.get(\"K\");\n    if (!obj) {\n      return false;\n    }\n\n    if (obj instanceof Dict) {\n      if (obj.objId !== dict.objId) {\n        return false;\n      }\n      this.nodes[0] = element;\n      return true;\n    }\n\n    if (!Array.isArray(obj)) {\n      return true;\n    }\n    let save = false;\n    for (let i = 0; i < obj.length; i++) {\n      const kidRef = obj[i];\n      if (kidRef && kidRef.toString() === dict.objId) {\n        this.nodes[i] = element;\n        save = true;\n      }\n    }\n    return save;\n  }\n\n  /**\n   * Convert the tree structure into a simplifed object literal that can\n   * be sent to the main thread.\n   * @returns {Object}\n   */\n  get serializable() {\n    function nodeToSerializable(node, parent, level = 0) {\n      if (level > MAX_DEPTH) {\n        warn(\"StructTree too deep to be fully serialized.\");\n        return;\n      }\n      const obj = Object.create(null);\n      obj.role = node.role;\n      obj.children = [];\n      parent.children.push(obj);\n      const alt = node.dict.get(\"Alt\");\n      if (typeof alt === \"string\") {\n        obj.alt = stringToPDFString(alt);\n      }\n      const lang = node.dict.get(\"Lang\");\n      if (typeof lang === \"string\") {\n        obj.lang = stringToPDFString(lang);\n      }\n\n      for (const kid of node.kids) {\n        const kidElement =\n          kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n        if (kidElement) {\n          nodeToSerializable(kidElement, obj, level + 1);\n          continue;\n        } else if (\n          kid.type === StructElementType.PAGE_CONTENT ||\n          kid.type === StructElementType.STREAM_CONTENT\n        ) {\n          obj.children.push({\n            type: \"content\",\n            id: `page${kid.pageObjId}_mcid${kid.mcid}`,\n          });\n        } else if (kid.type === StructElementType.OBJECT) {\n          obj.children.push({\n            type: \"object\",\n            id: kid.refObjId,\n          });\n        }\n      }\n    }\n\n    const root = Object.create(null);\n    root.children = [];\n    root.role = \"Root\";\n    for (const child of this.nodes) {\n      if (!child) {\n        continue;\n      }\n      nodeToSerializable(child, root);\n    }\n    return root;\n  }\n}\n\nexport { StructTreePage, StructTreeRoot };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction mayHaveChildren(value) {\n  return (\n    value instanceof Ref ||\n    value instanceof Dict ||\n    value instanceof BaseStream ||\n    Array.isArray(value)\n  );\n}\n\nfunction addChildren(node, nodesToVisit) {\n  if (node instanceof Dict) {\n    node = node.getRawValues();\n  } else if (node instanceof BaseStream) {\n    node = node.dict.getRawValues();\n  } else if (!Array.isArray(node)) {\n    return;\n  }\n  for (const rawValue of node) {\n    if (mayHaveChildren(rawValue)) {\n      nodesToVisit.push(rawValue);\n    }\n  }\n}\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nclass ObjectLoader {\n  constructor(dict, keys, xref) {\n    this.dict = dict;\n    this.keys = keys;\n    this.xref = xref;\n    this.refSet = null;\n  }\n\n  async load() {\n    // Don't walk the graph if all the data is already loaded.\n    if (this.xref.stream.isDataLoaded) {\n      return undefined;\n    }\n\n    const { keys, dict } = this;\n    this.refSet = new RefSet();\n    // Setup the initial nodes to visit.\n    const nodesToVisit = [];\n    for (let i = 0, ii = keys.length; i < ii; i++) {\n      const rawValue = dict.getRaw(keys[i]);\n      // Skip nodes that are guaranteed to be empty.\n      if (rawValue !== undefined) {\n        nodesToVisit.push(rawValue);\n      }\n    }\n    return this._walk(nodesToVisit);\n  }\n\n  async _walk(nodesToVisit) {\n    const nodesToRevisit = [];\n    const pendingRequests = [];\n    // DFS walk of the object graph.\n    while (nodesToVisit.length) {\n      let currentNode = nodesToVisit.pop();\n\n      // Only references or chunked streams can cause missing data exceptions.\n      if (currentNode instanceof Ref) {\n        // Skip nodes that have already been visited.\n        if (this.refSet.has(currentNode)) {\n          continue;\n        }\n        try {\n          this.refSet.put(currentNode);\n          currentNode = this.xref.fetch(currentNode);\n        } catch (ex) {\n          if (!(ex instanceof MissingDataException)) {\n            warn(`ObjectLoader._walk - requesting all data: \"${ex}\".`);\n            this.refSet = null;\n\n            const { manager } = this.xref.stream;\n            return manager.requestAllChunks();\n          }\n          nodesToRevisit.push(currentNode);\n          pendingRequests.push({ begin: ex.begin, end: ex.end });\n        }\n      }\n      if (currentNode instanceof BaseStream) {\n        const baseStreams = currentNode.getBaseStreams();\n        if (baseStreams) {\n          let foundMissingData = false;\n          for (const stream of baseStreams) {\n            if (stream.isDataLoaded) {\n              continue;\n            }\n            foundMissingData = true;\n            pendingRequests.push({ begin: stream.start, end: stream.end });\n          }\n          if (foundMissingData) {\n            nodesToRevisit.push(currentNode);\n          }\n        }\n      }\n\n      addChildren(currentNode, nodesToVisit);\n    }\n\n    if (pendingRequests.length) {\n      await this.xref.stream.manager.requestRanges(pendingRequests);\n\n      for (const node of nodesToRevisit) {\n        // Remove any reference nodes from the current `RefSet` so they\n        // aren't skipped when we revist them.\n        if (node instanceof Ref) {\n          this.refSet.remove(node);\n        }\n      }\n      return this._walk(nodesToRevisit);\n    }\n    // Everything is loaded.\n    this.refSet = null;\n    return undefined;\n  }\n}\n\nexport { ObjectLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, escapeString, warn } from \"../shared/util.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { escapePDFName, parseXFAPath } from \"./core_utils.js\";\nimport { SimpleDOMNode, SimpleXMLParser } from \"./xml_parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\n\nfunction writeDict(dict, buffer, transform) {\n  buffer.push(\"<<\");\n  for (const key of dict.getKeys()) {\n    buffer.push(` /${escapePDFName(key)} `);\n    writeValue(dict.getRaw(key), buffer, transform);\n  }\n  buffer.push(\">>\");\n}\n\nfunction writeStream(stream, buffer, transform) {\n  writeDict(stream.dict, buffer, transform);\n  buffer.push(\" stream\\n\");\n  let string = stream.getString();\n  if (transform !== null) {\n    string = transform.encryptString(string);\n  }\n  buffer.push(string, \"\\nendstream\\n\");\n}\n\nfunction writeArray(array, buffer, transform) {\n  buffer.push(\"[\");\n  let first = true;\n  for (const val of array) {\n    if (!first) {\n      buffer.push(\" \");\n    } else {\n      first = false;\n    }\n    writeValue(val, buffer, transform);\n  }\n  buffer.push(\"]\");\n}\n\nfunction numberToString(value) {\n  if (Number.isInteger(value)) {\n    return value.toString();\n  }\n\n  const roundedValue = Math.round(value * 100);\n  if (roundedValue % 100 === 0) {\n    return (roundedValue / 100).toString();\n  }\n\n  if (roundedValue % 10 === 0) {\n    return value.toFixed(1);\n  }\n\n  return value.toFixed(2);\n}\n\nfunction writeValue(value, buffer, transform) {\n  if (value instanceof Name) {\n    buffer.push(`/${escapePDFName(value.name)}`);\n  } else if (value instanceof Ref) {\n    buffer.push(`${value.num} ${value.gen} R`);\n  } else if (Array.isArray(value)) {\n    writeArray(value, buffer, transform);\n  } else if (typeof value === \"string\") {\n    if (transform !== null) {\n      value = transform.encryptString(value);\n    }\n    buffer.push(`(${escapeString(value)})`);\n  } else if (typeof value === \"number\") {\n    buffer.push(numberToString(value));\n  } else if (typeof value === \"boolean\") {\n    buffer.push(value.toString());\n  } else if (value instanceof Dict) {\n    writeDict(value, buffer, transform);\n  } else if (value instanceof BaseStream) {\n    writeStream(value, buffer, transform);\n  } else if (value === null) {\n    buffer.push(\"null\");\n  } else {\n    warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n  }\n}\n\nfunction writeInt(number, size, offset, buffer) {\n  for (let i = size + offset - 1; i > offset - 1; i--) {\n    buffer[i] = number & 0xff;\n    number >>= 8;\n  }\n  return offset + size;\n}\n\nfunction writeString(string, offset, buffer) {\n  for (let i = 0, len = string.length; i < len; i++) {\n    buffer[offset + i] = string.charCodeAt(i) & 0xff;\n  }\n}\n\nfunction computeMD5(filesize, xrefInfo) {\n  const time = Math.floor(Date.now() / 1000);\n  const filename = xrefInfo.filename || \"\";\n  const md5Buffer = [time.toString(), filename, filesize.toString()];\n  let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n  for (const value of Object.values(xrefInfo.info)) {\n    md5Buffer.push(value);\n    md5BufferLen += value.length;\n  }\n\n  const array = new Uint8Array(md5BufferLen);\n  let offset = 0;\n  for (const str of md5Buffer) {\n    writeString(str, offset, array);\n    offset += str.length;\n  }\n  return bytesToString(calculateMD5(array));\n}\n\nfunction writeXFADataForAcroform(str, newRefs) {\n  const xml = new SimpleXMLParser({ hasAttributes: true }).parseFromString(str);\n\n  for (const { xfa } of newRefs) {\n    if (!xfa) {\n      continue;\n    }\n    const { path, value } = xfa;\n    if (!path) {\n      continue;\n    }\n    const node = xml.documentElement.searchNode(parseXFAPath(path), 0);\n    if (node) {\n      node.childNodes = [new SimpleDOMNode(\"#text\", value)];\n    } else {\n      warn(`Node not found for path: ${path}`);\n    }\n  }\n  const buffer = [];\n  xml.documentElement.dump(buffer);\n  return buffer.join(\"\");\n}\n\nfunction updateXFA({\n  xfaData,\n  xfaDatasetsRef,\n  hasXfaDatasetsEntry,\n  acroFormRef,\n  acroForm,\n  newRefs,\n  xref,\n  xrefInfo,\n}) {\n  if (xref === null) {\n    return;\n  }\n\n  if (!hasXfaDatasetsEntry) {\n    if (!acroFormRef) {\n      warn(\"XFA - Cannot save it\");\n      return;\n    }\n\n    // We've a XFA array which doesn't contain a datasets entry.\n    // So we'll update the AcroForm dictionary to have an XFA containing\n    // the datasets.\n    const oldXfa = acroForm.get(\"XFA\");\n    const newXfa = oldXfa.slice();\n    newXfa.splice(2, 0, \"datasets\");\n    newXfa.splice(3, 0, xfaDatasetsRef);\n\n    acroForm.set(\"XFA\", newXfa);\n\n    const encrypt = xref.encrypt;\n    let transform = null;\n    if (encrypt) {\n      transform = encrypt.createCipherTransform(\n        acroFormRef.num,\n        acroFormRef.gen\n      );\n    }\n\n    const buffer = [`${acroFormRef.num} ${acroFormRef.gen} obj\\n`];\n    writeDict(acroForm, buffer, transform);\n    buffer.push(\"\\n\");\n\n    acroForm.set(\"XFA\", oldXfa);\n\n    newRefs.push({ ref: acroFormRef, data: buffer.join(\"\") });\n  }\n\n  if (xfaData === null) {\n    const datasets = xref.fetchIfRef(xfaDatasetsRef);\n    xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);\n  }\n\n  const encrypt = xref.encrypt;\n  if (encrypt) {\n    const transform = encrypt.createCipherTransform(\n      xfaDatasetsRef.num,\n      xfaDatasetsRef.gen\n    );\n    xfaData = transform.encryptString(xfaData);\n  }\n  const data =\n    `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\\n` +\n    `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\\nstream\\n` +\n    xfaData +\n    \"\\nendstream\\nendobj\\n\";\n\n  newRefs.push({ ref: xfaDatasetsRef, data });\n}\n\nfunction incrementalUpdate({\n  originalData,\n  xrefInfo,\n  newRefs,\n  xref = null,\n  hasXfa = false,\n  xfaDatasetsRef = null,\n  hasXfaDatasetsEntry = false,\n  acroFormRef = null,\n  acroForm = null,\n  xfaData = null,\n}) {\n  if (hasXfa) {\n    updateXFA({\n      xfaData,\n      xfaDatasetsRef,\n      hasXfaDatasetsEntry,\n      acroFormRef,\n      acroForm,\n      newRefs,\n      xref,\n      xrefInfo,\n    });\n  }\n\n  const newXref = new Dict(null);\n  const refForXrefTable = xrefInfo.newRef;\n\n  let buffer, baseOffset;\n  const lastByte = originalData[originalData.length - 1];\n  if (lastByte === /* \\n */ 0x0a || lastByte === /* \\r */ 0x0d) {\n    buffer = [];\n    baseOffset = originalData.length;\n  } else {\n    // Avoid to concatenate %%EOF with an object definition\n    buffer = [\"\\n\"];\n    baseOffset = originalData.length + 1;\n  }\n\n  newXref.set(\"Size\", refForXrefTable.num + 1);\n  newXref.set(\"Prev\", xrefInfo.startXRef);\n  newXref.set(\"Type\", Name.get(\"XRef\"));\n\n  if (xrefInfo.rootRef !== null) {\n    newXref.set(\"Root\", xrefInfo.rootRef);\n  }\n  if (xrefInfo.infoRef !== null) {\n    newXref.set(\"Info\", xrefInfo.infoRef);\n  }\n  if (xrefInfo.encryptRef !== null) {\n    newXref.set(\"Encrypt\", xrefInfo.encryptRef);\n  }\n\n  // Add a ref for the new xref and sort them\n  newRefs.push({ ref: refForXrefTable, data: \"\" });\n  newRefs = newRefs.sort((a, b) => {\n    // compare the refs\n    return a.ref.num - b.ref.num;\n  });\n\n  const xrefTableData = [[0, 1, 0xffff]];\n  const indexes = [0, 1];\n  let maxOffset = 0;\n  for (const { ref, data } of newRefs) {\n    maxOffset = Math.max(maxOffset, baseOffset);\n    xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);\n    baseOffset += data.length;\n    indexes.push(ref.num, 1);\n    buffer.push(data);\n  }\n\n  newXref.set(\"Index\", indexes);\n\n  if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n    const md5 = computeMD5(baseOffset, xrefInfo);\n    newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n  }\n\n  const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);\n  const sizes = [1, offsetSize, 2];\n  const structSize = sizes[0] + sizes[1] + sizes[2];\n  const tableLength = structSize * xrefTableData.length;\n  newXref.set(\"W\", sizes);\n  newXref.set(\"Length\", tableLength);\n\n  buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\\n`);\n  writeDict(newXref, buffer, null);\n  buffer.push(\" stream\\n\");\n\n  const bufferLen = buffer.reduce((a, str) => a + str.length, 0);\n  const footer = `\\nendstream\\nendobj\\nstartxref\\n${baseOffset}\\n%%EOF\\n`;\n  const array = new Uint8Array(\n    originalData.length + bufferLen + tableLength + footer.length\n  );\n\n  // Original data\n  array.set(originalData);\n  let offset = originalData.length;\n\n  // New data\n  for (const str of buffer) {\n    writeString(str, offset, array);\n    offset += str.length;\n  }\n\n  // New xref table\n  for (const [type, objOffset, gen] of xrefTableData) {\n    offset = writeInt(type, sizes[0], offset, array);\n    offset = writeInt(objOffset, sizes[1], offset, array);\n    offset = writeInt(gen, sizes[2], offset, array);\n  }\n\n  // Add the footer\n  writeString(footer, offset, array);\n\n  return array;\n}\n\nexport { incrementalUpdate, writeDict };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FormatError,\n  isArrayEqual,\n  PasswordException,\n  PasswordResponses,\n  stringToBytes,\n  unreachable,\n  utf8StringToString,\n  warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Name } from \"./primitives.js\";\nimport { DecryptStream } from \"./decrypt_stream.js\";\n\nclass ARCFourCipher {\n  constructor(key) {\n    this.a = 0;\n    this.b = 0;\n    const s = new Uint8Array(256);\n    const keyLength = key.length;\n\n    for (let i = 0; i < 256; ++i) {\n      s[i] = i;\n    }\n    for (let i = 0, j = 0; i < 256; ++i) {\n      const tmp = s[i];\n      j = (j + tmp + key[i % keyLength]) & 0xff;\n      s[i] = s[j];\n      s[j] = tmp;\n    }\n    this.s = s;\n  }\n\n  encryptBlock(data) {\n    let a = this.a,\n      b = this.b;\n    const s = this.s;\n    const n = data.length;\n    const output = new Uint8Array(n);\n    for (let i = 0; i < n; ++i) {\n      a = (a + 1) & 0xff;\n      const tmp = s[a];\n      b = (b + tmp) & 0xff;\n      const tmp2 = s[b];\n      s[a] = tmp2;\n      s[b] = tmp;\n      output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\n    }\n    this.a = a;\n    this.b = b;\n    return output;\n  }\n\n  decryptBlock(data) {\n    return this.encryptBlock(data);\n  }\n\n  encrypt(data) {\n    return this.encryptBlock(data);\n  }\n}\n\nconst calculateMD5 = (function calculateMD5Closure() {\n  const r = new Uint8Array([\n    7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5,\n    9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11,\n    16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10,\n    15, 21,\n  ]);\n\n  const k = new Int32Array([\n    -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n    -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n    1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n    643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n    568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n    1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n    -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n    -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n    -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n    -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n    -145523070, -1120210379, 718787259, -343485551,\n  ]);\n\n  function hash(data, offset, length) {\n    let h0 = 1732584193,\n      h1 = -271733879,\n      h2 = -1732584194,\n      h3 = 271733878;\n    // pre-processing\n    const paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n    const padded = new Uint8Array(paddedLength);\n    let i, j;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    const n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = (length << 3) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    const w = new Int32Array(16);\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j, i += 4) {\n        w[j] =\n          padded[i] |\n          (padded[i + 1] << 8) |\n          (padded[i + 2] << 16) |\n          (padded[i + 3] << 24);\n      }\n      let a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        f,\n        g;\n      for (j = 0; j < 64; ++j) {\n        if (j < 16) {\n          f = (b & c) | (~b & d);\n          g = j;\n        } else if (j < 32) {\n          f = (d & b) | (~d & c);\n          g = (5 * j + 1) & 15;\n        } else if (j < 48) {\n          f = b ^ c ^ d;\n          g = (3 * j + 5) & 15;\n        } else {\n          f = c ^ (b | ~d);\n          g = (7 * j) & 15;\n        }\n        const tmp = d,\n          rotateArg = (a + f + k[j] + w[g]) | 0,\n          rotate = r[j];\n        d = c;\n        c = b;\n        b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n        a = tmp;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n    }\n    // prettier-ignore\n    return new Uint8Array([\n      h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n      h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n      h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n      h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\n\nclass Word64 {\n  constructor(highInteger, lowInteger) {\n    this.high = highInteger | 0;\n    this.low = lowInteger | 0;\n  }\n\n  and(word) {\n    this.high &= word.high;\n    this.low &= word.low;\n  }\n\n  xor(word) {\n    this.high ^= word.high;\n    this.low ^= word.low;\n  }\n\n  or(word) {\n    this.high |= word.high;\n    this.low |= word.low;\n  }\n\n  shiftRight(places) {\n    if (places >= 32) {\n      this.low = (this.high >>> (places - 32)) | 0;\n      this.high = 0;\n    } else {\n      this.low = (this.low >>> places) | (this.high << (32 - places));\n      this.high = (this.high >>> places) | 0;\n    }\n  }\n\n  shiftLeft(places) {\n    if (places >= 32) {\n      this.high = this.low << (places - 32);\n      this.low = 0;\n    } else {\n      this.high = (this.high << places) | (this.low >>> (32 - places));\n      this.low <<= places;\n    }\n  }\n\n  rotateRight(places) {\n    let low, high;\n    if (places & 32) {\n      high = this.low;\n      low = this.high;\n    } else {\n      low = this.low;\n      high = this.high;\n    }\n    places &= 31;\n    this.low = (low >>> places) | (high << (32 - places));\n    this.high = (high >>> places) | (low << (32 - places));\n  }\n\n  not() {\n    this.high = ~this.high;\n    this.low = ~this.low;\n  }\n\n  add(word) {\n    const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n    let highAdd = (this.high >>> 0) + (word.high >>> 0);\n    if (lowAdd > 0xffffffff) {\n      highAdd += 1;\n    }\n    this.low = lowAdd | 0;\n    this.high = highAdd | 0;\n  }\n\n  copyTo(bytes, offset) {\n    bytes[offset] = (this.high >>> 24) & 0xff;\n    bytes[offset + 1] = (this.high >> 16) & 0xff;\n    bytes[offset + 2] = (this.high >> 8) & 0xff;\n    bytes[offset + 3] = this.high & 0xff;\n    bytes[offset + 4] = (this.low >>> 24) & 0xff;\n    bytes[offset + 5] = (this.low >> 16) & 0xff;\n    bytes[offset + 6] = (this.low >> 8) & 0xff;\n    bytes[offset + 7] = this.low & 0xff;\n  }\n\n  assign(word) {\n    this.high = word.high;\n    this.low = word.low;\n  }\n}\n\nconst calculateSHA256 = (function calculateSHA256Closure() {\n  function rotr(x, n) {\n    return (x >>> n) | (x << (32 - n));\n  }\n\n  function ch(x, y, z) {\n    return (x & y) ^ (~x & z);\n  }\n\n  function maj(x, y, z) {\n    return (x & y) ^ (x & z) ^ (y & z);\n  }\n\n  function sigma(x) {\n    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n  }\n\n  function sigmaPrime(x) {\n    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n  }\n\n  function littleSigma(x) {\n    return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n  }\n\n  function littleSigmaPrime(x) {\n    return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\n  }\n\n  const k = [\n    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,\n    0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n    0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\n    0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n    0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n    0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,\n    0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\n    0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n    0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n  ];\n\n  function hash(data, offset, length) {\n    // initial hash values\n    let h0 = 0x6a09e667,\n      h1 = 0xbb67ae85,\n      h2 = 0x3c6ef372,\n      h3 = 0xa54ff53a,\n      h4 = 0x510e527f,\n      h5 = 0x9b05688c,\n      h6 = 0x1f83d9ab,\n      h7 = 0x5be0cd19;\n    // pre-processing\n    const paddedLength = Math.ceil((length + 9) / 64) * 64;\n    const padded = new Uint8Array(paddedLength);\n    let i, j;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    const n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length << 3) & 0xff;\n    const w = new Uint32Array(64);\n    // for each 512 bit block\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j) {\n        w[j] =\n          (padded[i] << 24) |\n          (padded[i + 1] << 16) |\n          (padded[i + 2] << 8) |\n          padded[i + 3];\n        i += 4;\n      }\n\n      for (j = 16; j < 64; ++j) {\n        w[j] =\n          (littleSigmaPrime(w[j - 2]) +\n            w[j - 7] +\n            littleSigma(w[j - 15]) +\n            w[j - 16]) |\n          0;\n      }\n      let a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        e = h4,\n        f = h5,\n        g = h6,\n        h = h7,\n        t1,\n        t2;\n      for (j = 0; j < 64; ++j) {\n        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n        t2 = sigma(a) + maj(a, b, c);\n        h = g;\n        g = f;\n        f = e;\n        e = (d + t1) | 0;\n        d = c;\n        c = b;\n        b = a;\n        a = (t1 + t2) | 0;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n      h4 = (h4 + e) | 0;\n      h5 = (h5 + f) | 0;\n      h6 = (h6 + g) | 0;\n      h7 = (h7 + h) | 0;\n    }\n    // prettier-ignore\n    return new Uint8Array([\n      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n      (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n      (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n      (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\n\nconst calculateSHA512 = (function calculateSHA512Closure() {\n  function ch(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.not();\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function maj(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.and(z);\n    result.xor(tmp);\n    tmp.assign(y);\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function sigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(28);\n    tmp.assign(x);\n    tmp.rotateRight(34);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(39);\n    result.xor(tmp);\n  }\n\n  function sigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(14);\n    tmp.assign(x);\n    tmp.rotateRight(18);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(41);\n    result.xor(tmp);\n  }\n\n  function littleSigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(1);\n    tmp.assign(x);\n    tmp.rotateRight(8);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(7);\n    result.xor(tmp);\n  }\n\n  function littleSigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(19);\n    tmp.assign(x);\n    tmp.rotateRight(61);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(6);\n    result.xor(tmp);\n  }\n\n  // prettier-ignore\n  const k = [\n    new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n    new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n    new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n    new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n    new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n    new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n    new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n    new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n    new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n    new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n    new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n    new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n    new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n    new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n    new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n    new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n    new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n    new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n    new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n    new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n    new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n    new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n    new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n    new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n    new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n    new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n    new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n    new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n    new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n    new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n    new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n    new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n    new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n    new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n    new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n    new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n    new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n    new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n    new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n    new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n  function hash(data, offset, length, mode384 = false) {\n    // initial hash values\n    let h0, h1, h2, h3, h4, h5, h6, h7;\n    if (!mode384) {\n      h0 = new Word64(0x6a09e667, 0xf3bcc908);\n      h1 = new Word64(0xbb67ae85, 0x84caa73b);\n      h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n      h4 = new Word64(0x510e527f, 0xade682d1);\n      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n      h7 = new Word64(0x5be0cd19, 0x137e2179);\n    } else {\n      // SHA384 is exactly the same\n      // except with different starting values and a trimmed result\n      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n      h1 = new Word64(0x629a292a, 0x367cd507);\n      h2 = new Word64(0x9159015a, 0x3070dd17);\n      h3 = new Word64(0x152fecd8, 0xf70e5939);\n      h4 = new Word64(0x67332667, 0xffc00b31);\n      h5 = new Word64(0x8eb44a87, 0x68581511);\n      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n      h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n    }\n\n    // pre-processing\n    const paddedLength = Math.ceil((length + 17) / 128) * 128;\n    const padded = new Uint8Array(paddedLength);\n    let i, j;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    const n = paddedLength - 16;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length << 3) & 0xff;\n\n    const w = new Array(80);\n    for (i = 0; i < 80; i++) {\n      w[i] = new Word64(0, 0);\n    }\n    let a = new Word64(0, 0),\n      b = new Word64(0, 0),\n      c = new Word64(0, 0);\n    let d = new Word64(0, 0),\n      e = new Word64(0, 0),\n      f = new Word64(0, 0);\n    let g = new Word64(0, 0),\n      h = new Word64(0, 0);\n    const t1 = new Word64(0, 0),\n      t2 = new Word64(0, 0);\n    const tmp1 = new Word64(0, 0),\n      tmp2 = new Word64(0, 0);\n    let tmp3;\n\n    // for each 1024 bit block\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j) {\n        w[j].high =\n          (padded[i] << 24) |\n          (padded[i + 1] << 16) |\n          (padded[i + 2] << 8) |\n          padded[i + 3];\n        w[j].low =\n          (padded[i + 4] << 24) |\n          (padded[i + 5] << 16) |\n          (padded[i + 6] << 8) |\n          padded[i + 7];\n        i += 8;\n      }\n      for (j = 16; j < 80; ++j) {\n        tmp3 = w[j];\n        littleSigmaPrime(tmp3, w[j - 2], tmp2);\n        tmp3.add(w[j - 7]);\n        littleSigma(tmp1, w[j - 15], tmp2);\n        tmp3.add(tmp1);\n        tmp3.add(w[j - 16]);\n      }\n\n      a.assign(h0);\n      b.assign(h1);\n      c.assign(h2);\n      d.assign(h3);\n      e.assign(h4);\n      f.assign(h5);\n      g.assign(h6);\n      h.assign(h7);\n      for (j = 0; j < 80; ++j) {\n        t1.assign(h);\n        sigmaPrime(tmp1, e, tmp2);\n        t1.add(tmp1);\n        ch(tmp1, e, f, g, tmp2);\n        t1.add(tmp1);\n        t1.add(k[j]);\n        t1.add(w[j]);\n\n        sigma(t2, a, tmp2);\n        maj(tmp1, a, b, c, tmp2);\n        t2.add(tmp1);\n\n        tmp3 = h;\n        h = g;\n        g = f;\n        f = e;\n        d.add(t1);\n        e = d;\n        d = c;\n        c = b;\n        b = a;\n        tmp3.assign(t1);\n        tmp3.add(t2);\n        a = tmp3;\n      }\n      h0.add(a);\n      h1.add(b);\n      h2.add(c);\n      h3.add(d);\n      h4.add(e);\n      h5.add(f);\n      h6.add(g);\n      h7.add(h);\n    }\n\n    let result;\n    if (!mode384) {\n      result = new Uint8Array(64);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n      h6.copyTo(result, 48);\n      h7.copyTo(result, 56);\n    } else {\n      result = new Uint8Array(48);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n    }\n    return result;\n  }\n\n  return hash;\n})();\n\nfunction calculateSHA384(data, offset, length) {\n  return calculateSHA512(data, offset, length, /* mode384 = */ true);\n}\n\nclass NullCipher {\n  decryptBlock(data) {\n    return data;\n  }\n\n  encrypt(data) {\n    return data;\n  }\n}\n\nclass AESBaseCipher {\n  constructor() {\n    if (this.constructor === AESBaseCipher) {\n      unreachable(\"Cannot initialize AESBaseCipher.\");\n    }\n\n    this._s = new Uint8Array([\n      0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n      0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n      0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n      0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n      0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n      0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n      0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n      0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n      0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n      0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n      0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n      0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n      0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n      0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n      0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n      0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n      0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n      0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n      0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n      0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n      0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n      0xb0, 0x54, 0xbb, 0x16,\n    ]);\n\n    this._inv_s = new Uint8Array([\n      0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n      0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n      0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n      0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n      0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n      0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n      0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n      0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n      0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n      0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n      0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n      0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n      0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n      0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n      0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n      0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n      0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n      0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n      0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n      0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n      0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n      0x55, 0x21, 0x0c, 0x7d,\n    ]);\n\n    this._mix = new Uint32Array([\n      0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n      0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n      0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n      0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n      0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n      0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n      0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n      0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n      0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n      0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n      0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n      0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n      0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n      0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n      0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n      0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n      0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n      0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n      0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n      0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n      0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n      0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n      0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n      0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n      0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n      0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n      0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n      0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n      0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n      0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n      0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n      0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n      0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n      0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n      0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n      0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n      0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n      0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n      0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n      0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n      0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n      0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n      0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n    ]);\n\n    this._mixCol = new Uint8Array(256);\n    for (let i = 0; i < 256; i++) {\n      if (i < 128) {\n        this._mixCol[i] = i << 1;\n      } else {\n        this._mixCol[i] = (i << 1) ^ 0x1b;\n      }\n    }\n\n    this.buffer = new Uint8Array(16);\n    this.bufferPosition = 0;\n  }\n\n  _expandKey(cipherKey) {\n    unreachable(\"Cannot call `_expandKey` on the base class\");\n  }\n\n  _decrypt(input, key) {\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n      // InvShiftRows\n      t = state[13];\n      state[13] = state[9];\n      state[9] = state[5];\n      state[5] = state[1];\n      state[1] = t;\n      t = state[14];\n      u = state[10];\n      state[14] = state[6];\n      state[10] = state[2];\n      state[6] = t;\n      state[2] = u;\n      t = state[15];\n      u = state[11];\n      v = state[7];\n      state[15] = state[3];\n      state[11] = t;\n      state[7] = u;\n      state[3] = v;\n      // InvSubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = this._inv_s[state[j]];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n      // InvMixColumns\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = this._mix[state[j]];\n        const s1 = this._mix[state[j + 1]];\n        const s2 = this._mix[state[j + 2]];\n        const s3 = this._mix[state[j + 3]];\n        t =\n          s0 ^\n          (s1 >>> 8) ^\n          (s1 << 24) ^\n          (s2 >>> 16) ^\n          (s2 << 16) ^\n          (s3 >>> 24) ^\n          (s3 << 8);\n        state[j] = (t >>> 24) & 0xff;\n        state[j + 1] = (t >> 16) & 0xff;\n        state[j + 2] = (t >> 8) & 0xff;\n        state[j + 3] = t & 0xff;\n      }\n    }\n    // InvShiftRows\n    t = state[13];\n    state[13] = state[9];\n    state[9] = state[5];\n    state[5] = state[1];\n    state[1] = t;\n    t = state[14];\n    u = state[10];\n    state[14] = state[6];\n    state[10] = state[2];\n    state[6] = t;\n    state[2] = u;\n    t = state[15];\n    u = state[11];\n    v = state[7];\n    state[15] = state[3];\n    state[11] = t;\n    state[7] = u;\n    state[3] = v;\n    for (let j = 0; j < 16; ++j) {\n      // InvSubBytes\n      state[j] = this._inv_s[state[j]];\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n    return state;\n  }\n\n  _encrypt(input, key) {\n    const s = this._s;\n\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    for (let j = 0; j < 16; ++j) {\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n\n    for (let i = 1; i < this._cyclesOfRepetition; i++) {\n      // SubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = s[state[j]];\n      }\n      // ShiftRows\n      v = state[1];\n      state[1] = state[5];\n      state[5] = state[9];\n      state[9] = state[13];\n      state[13] = v;\n      v = state[2];\n      u = state[6];\n      state[2] = state[10];\n      state[6] = state[14];\n      state[10] = v;\n      state[14] = u;\n      v = state[3];\n      u = state[7];\n      t = state[11];\n      state[3] = state[15];\n      state[7] = v;\n      state[11] = u;\n      state[15] = t;\n      // MixColumns\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = state[j + 0];\n        const s1 = state[j + 1];\n        const s2 = state[j + 2];\n        const s3 = state[j + 3];\n        t = s0 ^ s1 ^ s2 ^ s3;\n        state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n    }\n\n    // SubBytes\n    for (let j = 0; j < 16; ++j) {\n      state[j] = s[state[j]];\n    }\n    // ShiftRows\n    v = state[1];\n    state[1] = state[5];\n    state[5] = state[9];\n    state[9] = state[13];\n    state[13] = v;\n    v = state[2];\n    u = state[6];\n    state[2] = state[10];\n    state[6] = state[14];\n    state[10] = v;\n    state[14] = u;\n    v = state[3];\n    u = state[7];\n    t = state[11];\n    state[3] = state[15];\n    state[7] = v;\n    state[11] = u;\n    state[15] = t;\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    return state;\n  }\n\n  _decryptBlock2(data, finalize) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n    let iv = this.iv;\n\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n      // buffer is full, decrypting\n      const plain = this._decrypt(buffer, this._key);\n      // xor-ing the IV vector to get plain text\n      for (let j = 0; j < 16; ++j) {\n        plain[j] ^= iv[j];\n      }\n      iv = buffer;\n      result.push(plain);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    let outputLength = 16 * result.length;\n    if (finalize) {\n      // undo a padding that is described in RFC 2898\n      const lastBlock = result[result.length - 1];\n      let psLen = lastBlock[15];\n      if (psLen <= 16) {\n        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n          if (lastBlock[i] !== psLen) {\n            // Invalid padding, assume that the block has no padding.\n            psLen = 0;\n            break;\n          }\n        }\n        outputLength -= psLen;\n        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n      }\n    }\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n\n  decryptBlock(data, finalize, iv = null) {\n    const sourceLength = data.length;\n    const buffer = this.buffer;\n    let bufferLength = this.bufferPosition;\n    // If an IV is not supplied, wait for IV values. They are at the start\n    // of the stream.\n    if (iv) {\n      this.iv = iv;\n    } else {\n      for (\n        let i = 0;\n        bufferLength < 16 && i < sourceLength;\n        ++i, ++bufferLength\n      ) {\n        buffer[bufferLength] = data[i];\n      }\n      if (bufferLength < 16) {\n        // Need more data.\n        this.bufferLength = bufferLength;\n        return new Uint8Array(0);\n      }\n      this.iv = buffer;\n      data = data.subarray(16);\n    }\n    this.buffer = new Uint8Array(16);\n    this.bufferLength = 0;\n    // starting decryption\n    this.decryptBlock = this._decryptBlock2;\n    return this.decryptBlock(data, finalize);\n  }\n\n  encrypt(data, iv) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n\n    if (!iv) {\n      iv = new Uint8Array(16);\n    }\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n\n      for (let j = 0; j < 16; ++j) {\n        buffer[j] ^= iv[j];\n      }\n\n      // buffer is full, encrypting\n      const cipher = this._encrypt(buffer, this._key);\n      iv = cipher;\n      result.push(cipher);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    const outputLength = 16 * result.length;\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 10;\n    this._keySize = 160; // bits\n\n    this._rcon = new Uint8Array([\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n      0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n      0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n      0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n      0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n      0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n      0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n      0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n      0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n      0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n      0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n      0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n      0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d,\n    ]);\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 176;\n    const s = this._s;\n    const rcon = this._rcon;\n\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    for (let j = 16, i = 1; j < b; ++i) {\n      // RotWord\n      let t1 = result[j - 3];\n      let t2 = result[j - 2];\n      let t3 = result[j - 1];\n      let t4 = result[j - 4];\n      // SubWord\n      t1 = s[t1];\n      t2 = s[t2];\n      t3 = s[t3];\n      t4 = s[t4];\n      // Rcon\n      t1 ^= rcon[i];\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 16];\n        j++;\n        result[j] = t2 ^= result[j - 16];\n        j++;\n        result[j] = t3 ^= result[j - 16];\n        j++;\n        result[j] = t4 ^= result[j - 16];\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 14;\n    this._keySize = 224; // bits\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 240;\n    const s = this._s;\n\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    let r = 1;\n    let t1, t2, t3, t4;\n    for (let j = 32, i = 1; j < b; ++i) {\n      if (j % 32 === 16) {\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n      } else if (j % 32 === 0) {\n        // RotWord\n        t1 = result[j - 3];\n        t2 = result[j - 2];\n        t3 = result[j - 1];\n        t4 = result[j - 4];\n        // SubWord\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n        // Rcon\n        t1 ^= r;\n        if ((r <<= 1) >= 256) {\n          r = (r ^ 0x1b) & 0xff;\n        }\n      }\n\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 32];\n        j++;\n        result[j] = t2 ^= result[j - 32];\n        j++;\n        result[j] = t3 ^= result[j - 32];\n        j++;\n        result[j] = t4 ^= result[j - 32];\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nclass PDF17 {\n  checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n    const hashData = new Uint8Array(password.length + 56);\n    hashData.set(password, 0);\n    hashData.set(ownerValidationSalt, password.length);\n    hashData.set(userBytes, password.length + ownerValidationSalt.length);\n    const result = calculateSHA256(hashData, 0, hashData.length);\n    return isArrayEqual(result, ownerPassword);\n  }\n\n  checkUserPassword(password, userValidationSalt, userPassword) {\n    const hashData = new Uint8Array(password.length + 8);\n    hashData.set(password, 0);\n    hashData.set(userValidationSalt, password.length);\n    const result = calculateSHA256(hashData, 0, hashData.length);\n    return isArrayEqual(result, userPassword);\n  }\n\n  getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n    const hashData = new Uint8Array(password.length + 56);\n    hashData.set(password, 0);\n    hashData.set(ownerKeySalt, password.length);\n    hashData.set(userBytes, password.length + ownerKeySalt.length);\n    const key = calculateSHA256(hashData, 0, hashData.length);\n    const cipher = new AES256Cipher(key);\n    return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n  }\n\n  getUserKey(password, userKeySalt, userEncryption) {\n    const hashData = new Uint8Array(password.length + 8);\n    hashData.set(password, 0);\n    hashData.set(userKeySalt, password.length);\n    // `key` is the decryption key for the UE string.\n    const key = calculateSHA256(hashData, 0, hashData.length);\n    const cipher = new AES256Cipher(key);\n    return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n  }\n}\n\nconst PDF20 = (function PDF20Closure() {\n  function calculatePDF20Hash(password, input, userBytes) {\n    // This refers to Algorithm 2.B as defined in ISO 32000-2.\n    let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n    let e = [0];\n    let i = 0;\n    while (i < 64 || e[e.length - 1] > i - 32) {\n      const combinedLength = password.length + k.length + userBytes.length,\n        combinedArray = new Uint8Array(combinedLength);\n      let writeOffset = 0;\n      combinedArray.set(password, writeOffset);\n      writeOffset += password.length;\n      combinedArray.set(k, writeOffset);\n      writeOffset += k.length;\n      combinedArray.set(userBytes, writeOffset);\n\n      const k1 = new Uint8Array(combinedLength * 64);\n      for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n        k1.set(combinedArray, pos);\n      }\n      // AES128 CBC NO PADDING with first 16 bytes of k as the key\n      // and the second 16 as the iv.\n      const cipher = new AES128Cipher(k.subarray(0, 16));\n      e = cipher.encrypt(k1, k.subarray(16, 32));\n      // Now we have to take the first 16 bytes of an unsigned big endian\n      // integer and compute the remainder modulo 3. That is a fairly large\n      // number and JavaScript isn't going to handle that well, so we're using\n      // a trick that allows us to perform modulo math byte by byte.\n      let remainder = 0;\n      for (let z = 0; z < 16; z++) {\n        remainder *= 256 % 3;\n        remainder %= 3;\n        remainder += (e[z] >>> 0) % 3;\n        remainder %= 3;\n      }\n      if (remainder === 0) {\n        k = calculateSHA256(e, 0, e.length);\n      } else if (remainder === 1) {\n        k = calculateSHA384(e, 0, e.length);\n      } else if (remainder === 2) {\n        k = calculateSHA512(e, 0, e.length);\n      }\n      i++;\n    }\n    return k.subarray(0, 32);\n  }\n\n  // eslint-disable-next-line no-shadow\n  class PDF20 {\n    hash(password, concatBytes, userBytes) {\n      return calculatePDF20Hash(password, concatBytes, userBytes);\n    }\n\n    checkOwnerPassword(\n      password,\n      ownerValidationSalt,\n      userBytes,\n      ownerPassword\n    ) {\n      const hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      const result = calculatePDF20Hash(password, hashData, userBytes);\n      return isArrayEqual(result, ownerPassword);\n    }\n\n    checkUserPassword(password, userValidationSalt, userPassword) {\n      const hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      const result = calculatePDF20Hash(password, hashData, []);\n      return isArrayEqual(result, userPassword);\n    }\n\n    getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n      const hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      const key = calculatePDF20Hash(password, hashData, userBytes);\n      const cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    }\n\n    getUserKey(password, userKeySalt, userEncryption) {\n      const hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      // `key` is the decryption key for the UE string.\n      const key = calculatePDF20Hash(password, hashData, []);\n      const cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    }\n  }\n\n  return PDF20;\n})();\n\nclass CipherTransform {\n  constructor(stringCipherConstructor, streamCipherConstructor) {\n    this.StringCipherConstructor = stringCipherConstructor;\n    this.StreamCipherConstructor = streamCipherConstructor;\n  }\n\n  createStream(stream, length) {\n    const cipher = new this.StreamCipherConstructor();\n    return new DecryptStream(\n      stream,\n      length,\n      function cipherTransformDecryptStream(data, finalize) {\n        return cipher.decryptBlock(data, finalize);\n      }\n    );\n  }\n\n  decryptString(s) {\n    const cipher = new this.StringCipherConstructor();\n    let data = stringToBytes(s);\n    data = cipher.decryptBlock(data, true);\n    return bytesToString(data);\n  }\n\n  encryptString(s) {\n    const cipher = new this.StringCipherConstructor();\n    if (cipher instanceof AESBaseCipher) {\n      // Append some chars equal to \"16 - (M mod 16)\"\n      // where M is the string length (see section 7.6.2 in PDF specification)\n      // to have a final string where the length is a multiple of 16.\n      // Special note:\n      //   \"Note that the pad is present when M is evenly divisible by 16;\n      //   it contains 16 bytes of 0x10.\"\n      const strLen = s.length;\n      const pad = 16 - (strLen % 16);\n      s += String.fromCharCode(pad).repeat(pad);\n\n      // Generate an initialization vector\n      const iv = new Uint8Array(16);\n      if (typeof crypto !== \"undefined\") {\n        crypto.getRandomValues(iv);\n      } else {\n        for (let i = 0; i < 16; i++) {\n          iv[i] = Math.floor(256 * Math.random());\n        }\n      }\n\n      let data = stringToBytes(s);\n      data = cipher.encrypt(data, iv);\n\n      const buf = new Uint8Array(16 + data.length);\n      buf.set(iv);\n      buf.set(data, 16);\n\n      return bytesToString(buf);\n    }\n\n    let data = stringToBytes(s);\n    data = cipher.encrypt(data);\n    return bytesToString(data);\n  }\n}\n\nconst CipherTransformFactory = (function CipherTransformFactoryClosure() {\n  const defaultPasswordBytes = new Uint8Array([\n    0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56,\n    0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,\n    0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,\n  ]);\n\n  function createEncryptionKey20(\n    revision,\n    password,\n    ownerPassword,\n    ownerValidationSalt,\n    ownerKeySalt,\n    uBytes,\n    userPassword,\n    userValidationSalt,\n    userKeySalt,\n    ownerEncryption,\n    userEncryption,\n    perms\n  ) {\n    if (password) {\n      const passwordLength = Math.min(127, password.length);\n      password = password.subarray(0, passwordLength);\n    } else {\n      password = [];\n    }\n    let pdfAlgorithm;\n    if (revision === 6) {\n      pdfAlgorithm = new PDF20();\n    } else {\n      pdfAlgorithm = new PDF17();\n    }\n\n    if (\n      pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\n    ) {\n      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n    } else if (\n      password.length &&\n      pdfAlgorithm.checkOwnerPassword(\n        password,\n        ownerValidationSalt,\n        uBytes,\n        ownerPassword\n      )\n    ) {\n      return pdfAlgorithm.getOwnerKey(\n        password,\n        ownerKeySalt,\n        uBytes,\n        ownerEncryption\n      );\n    }\n\n    return null;\n  }\n\n  function prepareKeyData(\n    fileId,\n    password,\n    ownerPassword,\n    userPassword,\n    flags,\n    revision,\n    keyLength,\n    encryptMetadata\n  ) {\n    const hashDataSize = 40 + ownerPassword.length + fileId.length;\n    const hashData = new Uint8Array(hashDataSize);\n    let i = 0,\n      j,\n      n;\n    if (password) {\n      n = Math.min(32, password.length);\n      for (; i < n; ++i) {\n        hashData[i] = password[i];\n      }\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    // as now the padded password in the hashData[0..i]\n    for (j = 0, n = ownerPassword.length; j < n; ++j) {\n      hashData[i++] = ownerPassword[j];\n    }\n    hashData[i++] = flags & 0xff;\n    hashData[i++] = (flags >> 8) & 0xff;\n    hashData[i++] = (flags >> 16) & 0xff;\n    hashData[i++] = (flags >>> 24) & 0xff;\n    for (j = 0, n = fileId.length; j < n; ++j) {\n      hashData[i++] = fileId[j];\n    }\n    if (revision >= 4 && !encryptMetadata) {\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n    }\n    let hash = calculateMD5(hashData, 0, i);\n    const keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, keyLengthInBytes);\n      }\n    }\n    const encryptionKey = hash.subarray(0, keyLengthInBytes);\n    let cipher, checkData;\n\n    if (revision >= 3) {\n      for (i = 0; i < 32; ++i) {\n        hashData[i] = defaultPasswordBytes[i];\n      }\n      for (j = 0, n = fileId.length; j < n; ++j) {\n        hashData[i++] = fileId[j];\n      }\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n      n = encryptionKey.length;\n      const derivedKey = new Uint8Array(n);\n      for (j = 1; j <= 19; ++j) {\n        for (let k = 0; k < n; ++k) {\n          derivedKey[k] = encryptionKey[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        checkData = cipher.encryptBlock(checkData);\n      }\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    } else {\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(defaultPasswordBytes);\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    }\n    return encryptionKey;\n  }\n\n  function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n    const hashData = new Uint8Array(32);\n    let i = 0;\n    const n = Math.min(32, password.length);\n    for (; i < n; ++i) {\n      hashData[i] = password[i];\n    }\n    let j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    let hash = calculateMD5(hashData, 0, i);\n    const keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, hash.length);\n      }\n    }\n\n    let cipher, userPassword;\n    if (revision >= 3) {\n      userPassword = ownerPassword;\n      const derivedKey = new Uint8Array(keyLengthInBytes);\n      for (j = 19; j >= 0; j--) {\n        for (let k = 0; k < keyLengthInBytes; ++k) {\n          derivedKey[k] = hash[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        userPassword = cipher.encryptBlock(userPassword);\n      }\n    } else {\n      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n      userPassword = cipher.encryptBlock(ownerPassword);\n    }\n    return userPassword;\n  }\n\n  const identityName = Name.get(\"Identity\");\n\n  function buildObjectKey(num, gen, encryptionKey, isAes = false) {\n    const key = new Uint8Array(encryptionKey.length + 9);\n    const n = encryptionKey.length;\n    let i;\n    for (i = 0; i < n; ++i) {\n      key[i] = encryptionKey[i];\n    }\n    key[i++] = num & 0xff;\n    key[i++] = (num >> 8) & 0xff;\n    key[i++] = (num >> 16) & 0xff;\n    key[i++] = gen & 0xff;\n    key[i++] = (gen >> 8) & 0xff;\n    if (isAes) {\n      key[i++] = 0x73;\n      key[i++] = 0x41;\n      key[i++] = 0x6c;\n      key[i++] = 0x54;\n    }\n    const hash = calculateMD5(key, 0, i);\n    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n  }\n\n  function buildCipherConstructor(cf, name, num, gen, key) {\n    if (!(name instanceof Name)) {\n      throw new FormatError(\"Invalid crypt filter name.\");\n    }\n    const cryptFilter = cf.get(name.name);\n    let cfm;\n    if (cryptFilter !== null && cryptFilter !== undefined) {\n      cfm = cryptFilter.get(\"CFM\");\n    }\n    if (!cfm || cfm.name === \"None\") {\n      return function cipherTransformFactoryBuildCipherConstructorNone() {\n        return new NullCipher();\n      };\n    }\n    if (cfm.name === \"V2\") {\n      return function cipherTransformFactoryBuildCipherConstructorV2() {\n        return new ARCFourCipher(\n          buildObjectKey(num, gen, key, /* isAes = */ false)\n        );\n      };\n    }\n    if (cfm.name === \"AESV2\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n        return new AES128Cipher(\n          buildObjectKey(num, gen, key, /* isAes = */ true)\n        );\n      };\n    }\n    if (cfm.name === \"AESV3\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n        return new AES256Cipher(key);\n      };\n    }\n    throw new FormatError(\"Unknown crypto method\");\n  }\n\n  // eslint-disable-next-line no-shadow\n  class CipherTransformFactory {\n    constructor(dict, fileId, password) {\n      const filter = dict.get(\"Filter\");\n      if (!isName(filter, \"Standard\")) {\n        throw new FormatError(\"unknown encryption method\");\n      }\n      this.filterName = filter.name;\n      this.dict = dict;\n      const algorithm = dict.get(\"V\");\n      if (\n        !Number.isInteger(algorithm) ||\n        (algorithm !== 1 &&\n          algorithm !== 2 &&\n          algorithm !== 4 &&\n          algorithm !== 5)\n      ) {\n        throw new FormatError(\"unsupported encryption algorithm\");\n      }\n      this.algorithm = algorithm;\n      let keyLength = dict.get(\"Length\");\n      if (!keyLength) {\n        // Spec asks to rely on encryption dictionary's Length entry, however\n        // some PDFs don't have it. Trying to recover.\n        if (algorithm <= 3) {\n          // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n          keyLength = 40;\n        } else {\n          // Trying to find default handler -- it usually has Length.\n          const cfDict = dict.get(\"CF\");\n          const streamCryptoName = dict.get(\"StmF\");\n          if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\n            cfDict.suppressEncryption = true; // See comment below.\n            const handlerDict = cfDict.get(streamCryptoName.name);\n            keyLength = (handlerDict && handlerDict.get(\"Length\")) || 128;\n            if (keyLength < 40) {\n              // Sometimes it's incorrect value of bits, generators specify\n              // bytes.\n              keyLength <<= 3;\n            }\n          }\n        }\n      }\n      if (\n        !Number.isInteger(keyLength) ||\n        keyLength < 40 ||\n        keyLength % 8 !== 0\n      ) {\n        throw new FormatError(\"invalid key length\");\n      }\n\n      // prepare keys\n      const ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n      const userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n      const flags = dict.get(\"P\");\n      const revision = dict.get(\"R\");\n      // meaningful when V is 4 or 5\n      const encryptMetadata =\n        (algorithm === 4 || algorithm === 5) &&\n        dict.get(\"EncryptMetadata\") !== false;\n      this.encryptMetadata = encryptMetadata;\n\n      const fileIdBytes = stringToBytes(fileId);\n      let passwordBytes;\n      if (password) {\n        if (revision === 6) {\n          try {\n            password = utf8StringToString(password);\n          } catch (ex) {\n            warn(\n              \"CipherTransformFactory: \" +\n                \"Unable to convert UTF8 encoded password.\"\n            );\n          }\n        }\n        passwordBytes = stringToBytes(password);\n      }\n\n      let encryptionKey;\n      if (algorithm !== 5) {\n        encryptionKey = prepareKeyData(\n          fileIdBytes,\n          passwordBytes,\n          ownerPassword,\n          userPassword,\n          flags,\n          revision,\n          keyLength,\n          encryptMetadata\n        );\n      } else {\n        const ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(\n          32,\n          40\n        );\n        const ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n        const uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n        const userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(\n          32,\n          40\n        );\n        const userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n        const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n        const userEncryption = stringToBytes(dict.get(\"UE\"));\n        const perms = stringToBytes(dict.get(\"Perms\"));\n        encryptionKey = createEncryptionKey20(\n          revision,\n          passwordBytes,\n          ownerPassword,\n          ownerValidationSalt,\n          ownerKeySalt,\n          uBytes,\n          userPassword,\n          userValidationSalt,\n          userKeySalt,\n          ownerEncryption,\n          userEncryption,\n          perms\n        );\n      }\n      if (!encryptionKey && !password) {\n        throw new PasswordException(\n          \"No password given\",\n          PasswordResponses.NEED_PASSWORD\n        );\n      } else if (!encryptionKey && password) {\n        // Attempting use the password as an owner password\n        const decodedPassword = decodeUserPassword(\n          passwordBytes,\n          ownerPassword,\n          revision,\n          keyLength\n        );\n        encryptionKey = prepareKeyData(\n          fileIdBytes,\n          decodedPassword,\n          ownerPassword,\n          userPassword,\n          flags,\n          revision,\n          keyLength,\n          encryptMetadata\n        );\n      }\n\n      if (!encryptionKey) {\n        throw new PasswordException(\n          \"Incorrect Password\",\n          PasswordResponses.INCORRECT_PASSWORD\n        );\n      }\n\n      this.encryptionKey = encryptionKey;\n\n      if (algorithm >= 4) {\n        const cf = dict.get(\"CF\");\n        if (cf instanceof Dict) {\n          // The 'CF' dictionary itself should not be encrypted, and by setting\n          // `suppressEncryption` we can prevent an infinite loop inside of\n          // `XRef_fetchUncompressed` if the dictionary contains indirect\n          // objects (fixes issue7665.pdf).\n          cf.suppressEncryption = true;\n        }\n        this.cf = cf;\n        this.stmf = dict.get(\"StmF\") || identityName;\n        this.strf = dict.get(\"StrF\") || identityName;\n        this.eff = dict.get(\"EFF\") || this.stmf;\n      }\n    }\n\n    createCipherTransform(num, gen) {\n      if (this.algorithm === 4 || this.algorithm === 5) {\n        return new CipherTransform(\n          buildCipherConstructor(\n            this.cf,\n            this.stmf,\n            num,\n            gen,\n            this.encryptionKey\n          ),\n          buildCipherConstructor(\n            this.cf,\n            this.strf,\n            num,\n            gen,\n            this.encryptionKey\n          )\n        );\n      }\n      // algorithms 1 and 2\n      const key = buildObjectKey(\n        num,\n        gen,\n        this.encryptionKey,\n        /* isAes = */ false\n      );\n      const cipherConstructor = function buildCipherCipherConstructor() {\n        return new ARCFourCipher(key);\n      };\n      return new CipherTransform(cipherConstructor, cipherConstructor);\n    }\n  }\n\n  return CipherTransformFactory;\n})();\n\nexport {\n  AES128Cipher,\n  AES256Cipher,\n  ARCFourCipher,\n  calculateMD5,\n  calculateSHA256,\n  calculateSHA384,\n  calculateSHA512,\n  CipherTransformFactory,\n  PDF17,\n  PDF20,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nconst chunkSize = 512;\n\nclass DecryptStream extends DecodeStream {\n  constructor(str, maybeLength, decrypt) {\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n    this.decrypt = decrypt;\n    this.nextChunk = null;\n    this.initialized = false;\n  }\n\n  readBlock() {\n    let chunk;\n    if (this.initialized) {\n      chunk = this.nextChunk;\n    } else {\n      chunk = this.str.getBytes(chunkSize);\n      this.initialized = true;\n    }\n    if (!chunk || chunk.length === 0) {\n      this.eof = true;\n      return;\n    }\n    this.nextChunk = this.str.getBytes(chunkSize);\n    const hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n    const decrypt = this.decrypt;\n    chunk = decrypt(chunk, !hasMoreData);\n\n    let bufferLength = this.bufferLength;\n    const n = chunk.length,\n      buffer = this.ensureBuffer(bufferLength + n);\n    for (let i = 0; i < n; i++) {\n      buffer[bufferLength++] = chunk[i];\n    }\n    this.bufferLength = bufferLength;\n  }\n}\n\nexport { DecryptStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $appendChild,\n  $globalData,\n  $nodeName,\n  $text,\n  $toHTML,\n  $toPages,\n} from \"./xfa_object.js\";\nimport { Binder } from \"./bind.js\";\nimport { DataHandler } from \"./data.js\";\nimport { FontFinder } from \"./fonts.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\nimport { XFAParser } from \"./parser.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nclass XFAFactory {\n  constructor(data) {\n    try {\n      this.root = new XFAParser().parse(XFAFactory._createDocument(data));\n      const binder = new Binder(this.root);\n      this.form = binder.bind();\n      this.dataHandler = new DataHandler(this.root, binder.getData());\n      this.form[$globalData].template = this.form;\n    } catch (e) {\n      warn(`XFA - an error occurred during parsing and binding: ${e}`);\n    }\n  }\n\n  isValid() {\n    return this.root && this.form;\n  }\n\n  /**\n   * In order to avoid to block the event loop, the conversion\n   * into pages is made asynchronously.\n   */\n  _createPagesHelper() {\n    const iterator = this.form[$toPages]();\n    return new Promise((resolve, reject) => {\n      const nextIteration = () => {\n        try {\n          const value = iterator.next();\n          if (value.done) {\n            resolve(value.value);\n          } else {\n            setTimeout(nextIteration, 0);\n          }\n        } catch (e) {\n          reject(e);\n        }\n      };\n      setTimeout(nextIteration, 0);\n    });\n  }\n\n  async _createPages() {\n    try {\n      this.pages = await this._createPagesHelper();\n      this.dims = this.pages.children.map(c => {\n        const { width, height } = c.attributes.style;\n        return [0, 0, parseInt(width), parseInt(height)];\n      });\n    } catch (e) {\n      warn(`XFA - an error occurred during layout: ${e}`);\n    }\n  }\n\n  getBoundingBox(pageIndex) {\n    return this.dims[pageIndex];\n  }\n\n  async getNumPages() {\n    if (!this.pages) {\n      await this._createPages();\n    }\n    return this.dims.length;\n  }\n\n  setImages(images) {\n    this.form[$globalData].images = images;\n  }\n\n  setFonts(fonts) {\n    this.form[$globalData].fontFinder = new FontFinder(fonts);\n    const missingFonts = [];\n    for (let typeface of this.form[$globalData].usedTypefaces) {\n      typeface = stripQuotes(typeface);\n      const font = this.form[$globalData].fontFinder.find(typeface);\n      if (!font) {\n        missingFonts.push(typeface);\n      }\n    }\n\n    if (missingFonts.length > 0) {\n      return missingFonts;\n    }\n\n    return null;\n  }\n\n  appendFonts(fonts, reallyMissingFonts) {\n    this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\n  }\n\n  async getPages() {\n    if (!this.pages) {\n      await this._createPages();\n    }\n    const pages = this.pages;\n    this.pages = null;\n    return pages;\n  }\n\n  serializeData(storage) {\n    return this.dataHandler.serialize(storage);\n  }\n\n  static _createDocument(data) {\n    if (!data[\"/xdp:xdp\"]) {\n      return data[\"xdp:xdp\"];\n    }\n    return Object.values(data).join(\"\");\n  }\n\n  static getRichTextAsHtml(rc) {\n    if (!rc || typeof rc !== \"string\") {\n      return null;\n    }\n\n    try {\n      let root = new XFAParser(XhtmlNamespace, /* richText */ true).parse(rc);\n      if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n        // No body, so create one.\n        const newRoot = XhtmlNamespace.body({});\n        newRoot[$appendChild](root);\n        root = newRoot;\n      }\n\n      const result = root[$toHTML]();\n      if (!result.success) {\n        return null;\n      }\n\n      const { html } = result;\n      const { attributes } = html;\n      if (attributes) {\n        if (attributes.class) {\n          attributes.class = attributes.class.filter(\n            attr => !attr.startsWith(\"xfa\")\n          );\n        }\n        attributes.dir = \"auto\";\n      }\n\n      return { html, str: root[$text]() };\n    } catch (e) {\n      warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n    }\n    return null;\n  }\n}\n\nexport { XFAFactory };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInteger, getKeyword, HTMLResult } from \"./utils.js\";\nimport { shadow, utf8StringToString, warn } from \"../../shared/util.js\";\nimport { encodeToXmlString } from \"../core_utils.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { searchNode } from \"./som.js\";\n\n// We use these symbols to avoid name conflict between tags\n// and properties/methods names.\nconst $acceptWhitespace = Symbol();\nconst $addHTML = Symbol();\nconst $appendChild = Symbol();\nconst $childrenToHTML = Symbol();\nconst $clean = Symbol();\nconst $cleanPage = Symbol();\nconst $cleanup = Symbol();\nconst $clone = Symbol();\nconst $consumed = Symbol();\nconst $content = Symbol(\"content\");\nconst $data = Symbol(\"data\");\nconst $dump = Symbol();\nconst $extra = Symbol(\"extra\");\nconst $finalize = Symbol();\nconst $flushHTML = Symbol();\nconst $getAttributeIt = Symbol();\nconst $getAttributes = Symbol();\nconst $getAvailableSpace = Symbol();\nconst $getChildrenByClass = Symbol();\nconst $getChildrenByName = Symbol();\nconst $getChildrenByNameIt = Symbol();\nconst $getDataValue = Symbol();\nconst $getExtra = Symbol();\nconst $getRealChildrenByNameIt = Symbol();\nconst $getChildren = Symbol();\nconst $getContainedChildren = Symbol();\nconst $getNextPage = Symbol();\nconst $getSubformParent = Symbol();\nconst $getParent = Symbol();\nconst $getTemplateRoot = Symbol();\nconst $globalData = Symbol();\nconst $hasSettableValue = Symbol();\nconst $ids = Symbol();\nconst $indexOf = Symbol();\nconst $insertAt = Symbol();\nconst $isCDATAXml = Symbol();\nconst $isBindable = Symbol();\nconst $isDataValue = Symbol();\nconst $isDescendent = Symbol();\nconst $isNsAgnostic = Symbol();\nconst $isSplittable = Symbol();\nconst $isThereMoreWidth = Symbol();\nconst $isTransparent = Symbol();\nconst $isUsable = Symbol();\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nconst $nodeName = Symbol(\"nodeName\");\nconst $nsAttributes = Symbol();\nconst $onChild = Symbol();\nconst $onChildCheck = Symbol();\nconst $onText = Symbol();\nconst $pushGlyphs = Symbol();\nconst $popPara = Symbol();\nconst $pushPara = Symbol();\nconst $removeChild = Symbol();\nconst $root = Symbol(\"root\");\nconst $resolvePrototypes = Symbol();\nconst $searchNode = Symbol();\nconst $setId = Symbol();\nconst $setSetAttributes = Symbol();\nconst $setValue = Symbol();\nconst $tabIndex = Symbol();\nconst $text = Symbol();\nconst $toPages = Symbol();\nconst $toHTML = Symbol();\nconst $toString = Symbol();\nconst $toStyle = Symbol();\nconst $uid = Symbol(\"uid\");\n\nconst _applyPrototype = Symbol();\nconst _attributes = Symbol();\nconst _attributeNames = Symbol();\nconst _children = Symbol(\"_children\");\nconst _cloneAttribute = Symbol();\nconst _dataValue = Symbol();\nconst _defaultValue = Symbol();\nconst _filteredChildrenGenerator = Symbol();\nconst _getPrototype = Symbol();\nconst _getUnsetAttributes = Symbol();\nconst _hasChildren = Symbol();\nconst _max = Symbol();\nconst _options = Symbol();\nconst _parent = Symbol(\"parent\");\nconst _resolvePrototypesHelper = Symbol();\nconst _setAttributes = Symbol();\nconst _validator = Symbol();\n\nlet uid = 0;\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nclass XFAObject {\n  constructor(nsId, name, hasChildren = false) {\n    this[$namespaceId] = nsId;\n    this[$nodeName] = name;\n    this[_hasChildren] = hasChildren;\n    this[_parent] = null;\n    this[_children] = [];\n    this[$uid] = `${name}${uid++}`;\n    this[$globalData] = null;\n  }\n\n  [$onChild](child) {\n    if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n      return false;\n    }\n\n    const name = child[$nodeName];\n    const node = this[name];\n\n    if (node instanceof XFAObjectArray) {\n      if (node.push(child)) {\n        this[$appendChild](child);\n        return true;\n      }\n    } else {\n      // IRL it's possible to already have a node.\n      // So just replace it with the last version.\n      if (node !== null) {\n        this[$removeChild](node);\n      }\n      this[name] = child;\n      this[$appendChild](child);\n      return true;\n    }\n\n    let id = \"\";\n    if (this.id) {\n      id = ` (id: ${this.id})`;\n    } else if (this.name) {\n      id = ` (name: ${this.name} ${this.h.value})`;\n    }\n    warn(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n    return false;\n  }\n\n  [$onChildCheck](child) {\n    return (\n      this.hasOwnProperty(child[$nodeName]) &&\n      child[$namespaceId] === this[$namespaceId]\n    );\n  }\n\n  [$isNsAgnostic]() {\n    return false;\n  }\n\n  [$acceptWhitespace]() {\n    return false;\n  }\n\n  [$isCDATAXml]() {\n    return false;\n  }\n\n  [$isBindable]() {\n    return false;\n  }\n\n  [$popPara]() {\n    if (this.para) {\n      this[$getTemplateRoot]()[$extra].paraStack.pop();\n    }\n  }\n\n  [$pushPara]() {\n    this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n  }\n\n  [$setId](ids) {\n    if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n      ids.set(this.id, this);\n    }\n  }\n\n  [$getTemplateRoot]() {\n    return this[$globalData].template;\n  }\n\n  [$isSplittable]() {\n    return false;\n  }\n\n  /**\n     Return true if this node (typically a container)\n     can provide more width during layout.\n     The goal is to help to know what a descendant must\n     do in case of horizontal overflow.\n   */\n  [$isThereMoreWidth]() {\n    return false;\n  }\n\n  [$appendChild](child) {\n    child[_parent] = this;\n    this[_children].push(child);\n    if (!child[$globalData] && this[$globalData]) {\n      child[$globalData] = this[$globalData];\n    }\n  }\n\n  [$removeChild](child) {\n    const i = this[_children].indexOf(child);\n    this[_children].splice(i, 1);\n  }\n\n  [$hasSettableValue]() {\n    return this.hasOwnProperty(\"value\");\n  }\n\n  [$setValue](_) {}\n\n  [$onText](_) {}\n\n  [$finalize]() {}\n\n  [$clean](builder) {\n    delete this[_hasChildren];\n    if (this[$cleanup]) {\n      builder.clean(this[$cleanup]);\n      delete this[$cleanup];\n    }\n  }\n\n  [$indexOf](child) {\n    return this[_children].indexOf(child);\n  }\n\n  [$insertAt](i, child) {\n    child[_parent] = this;\n    this[_children].splice(i, 0, child);\n    if (!child[$globalData] && this[$globalData]) {\n      child[$globalData] = this[$globalData];\n    }\n  }\n\n  /**\n   * If true the element is transparent when searching a node using\n   * a SOM expression which means that looking for \"foo.bar\" in\n   * <... name=\"foo\"><toto><titi><... name=\"bar\"></titi></toto>...\n   * is fine because toto and titi are transparent.\n   */\n  [$isTransparent]() {\n    return !this.name;\n  }\n\n  [$lastAttribute]() {\n    return \"\";\n  }\n\n  [$text]() {\n    if (this[_children].length === 0) {\n      return this[$content];\n    }\n    return this[_children].map(c => c[$text]()).join(\"\");\n  }\n\n  get [_attributeNames]() {\n    // Lazily get attributes names\n    const proto = Object.getPrototypeOf(this);\n    if (!proto._attributes) {\n      const attributes = (proto._attributes = new Set());\n      for (const name of Object.getOwnPropertyNames(this)) {\n        if (\n          this[name] === null ||\n          this[name] instanceof XFAObject ||\n          this[name] instanceof XFAObjectArray\n        ) {\n          break;\n        }\n        attributes.add(name);\n      }\n    }\n    return shadow(this, _attributeNames, proto._attributes);\n  }\n\n  [$isDescendent](parent) {\n    let node = this;\n    while (node) {\n      if (node === parent) {\n        return true;\n      }\n      node = node[$getParent]();\n    }\n    return false;\n  }\n\n  [$getParent]() {\n    return this[_parent];\n  }\n\n  [$getSubformParent]() {\n    return this[$getParent]();\n  }\n\n  [$getChildren](name = null) {\n    if (!name) {\n      return this[_children];\n    }\n\n    return this[name];\n  }\n\n  [$dump]() {\n    const dumped = Object.create(null);\n    if (this[$content]) {\n      dumped.$content = this[$content];\n    }\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      const value = this[name];\n      if (value === null) {\n        continue;\n      }\n      if (value instanceof XFAObject) {\n        dumped[name] = value[$dump]();\n      } else if (value instanceof XFAObjectArray) {\n        if (!value.isEmpty()) {\n          dumped[name] = value.dump();\n        }\n      } else {\n        dumped[name] = value;\n      }\n    }\n\n    return dumped;\n  }\n\n  [$toStyle]() {\n    return null;\n  }\n\n  [$toHTML]() {\n    return HTMLResult.EMPTY;\n  }\n\n  *[$getContainedChildren]() {\n    // This function is overriden in Subform and SubformSet.\n    for (const node of this[$getChildren]()) {\n      yield node;\n    }\n  }\n\n  *[_filteredChildrenGenerator](filter, include) {\n    for (const node of this[$getContainedChildren]()) {\n      if (!filter || include === filter.has(node[$nodeName])) {\n        const availableSpace = this[$getAvailableSpace]();\n        const res = node[$toHTML](availableSpace);\n        if (!res.success) {\n          this[$extra].failingNode = node;\n        }\n        yield res;\n      }\n    }\n  }\n\n  [$flushHTML]() {\n    return null;\n  }\n\n  [$addHTML](html, bbox) {\n    this[$extra].children.push(html);\n  }\n\n  [$getAvailableSpace]() {}\n\n  [$childrenToHTML]({ filter = null, include = true }) {\n    if (!this[$extra].generator) {\n      this[$extra].generator = this[_filteredChildrenGenerator](\n        filter,\n        include\n      );\n    } else {\n      const availableSpace = this[$getAvailableSpace]();\n      const res = this[$extra].failingNode[$toHTML](availableSpace);\n      if (!res.success) {\n        return res;\n      }\n      if (res.html) {\n        this[$addHTML](res.html, res.bbox);\n      }\n      delete this[$extra].failingNode;\n    }\n\n    while (true) {\n      const gen = this[$extra].generator.next();\n      if (gen.done) {\n        break;\n      }\n      const res = gen.value;\n      if (!res.success) {\n        return res;\n      }\n      if (res.html) {\n        this[$addHTML](res.html, res.bbox);\n      }\n    }\n\n    this[$extra].generator = null;\n\n    return HTMLResult.EMPTY;\n  }\n\n  [$setSetAttributes](attributes) {\n    // Just keep set attributes because it can be used in a proto.\n    this[_setAttributes] = new Set(Object.keys(attributes));\n  }\n\n  /**\n   * Get attribute names which have been set in the proto but not in this.\n   */\n  [_getUnsetAttributes](protoAttributes) {\n    const allAttr = this[_attributeNames];\n    const setAttr = this[_setAttributes];\n    return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\n  }\n\n  /**\n   * Update the node with properties coming from a prototype and apply\n   * this function recursivly to all children.\n   */\n  [$resolvePrototypes](ids, ancestors = new Set()) {\n    for (const child of this[_children]) {\n      child[_resolvePrototypesHelper](ids, ancestors);\n    }\n  }\n\n  [_resolvePrototypesHelper](ids, ancestors) {\n    const proto = this[_getPrototype](ids, ancestors);\n    if (proto) {\n      // _applyPrototype will apply $resolvePrototypes with correct ancestors\n      // to avoid infinite loop.\n      this[_applyPrototype](proto, ids, ancestors);\n    } else {\n      this[$resolvePrototypes](ids, ancestors);\n    }\n  }\n\n  [_getPrototype](ids, ancestors) {\n    const { use, usehref } = this;\n    if (!use && !usehref) {\n      return null;\n    }\n\n    let proto = null;\n    let somExpression = null;\n    let id = null;\n    let ref = use;\n\n    // If usehref and use are non-empty then use usehref.\n    if (usehref) {\n      ref = usehref;\n      // Href can be one of the following:\n      // - #ID\n      // - URI#ID\n      // - #som(expression)\n      // - URI#som(expression)\n      // - URI\n      // For now we don't handle URI other than \".\" (current document).\n      if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n        somExpression = usehref.slice(\"#som(\".length, usehref.length - 1);\n      } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n        somExpression = usehref.slice(\".#som(\".length, usehref.length - 1);\n      } else if (usehref.startsWith(\"#\")) {\n        id = usehref.slice(1);\n      } else if (usehref.startsWith(\".#\")) {\n        id = usehref.slice(2);\n      }\n    } else if (use.startsWith(\"#\")) {\n      id = use.slice(1);\n    } else {\n      somExpression = use;\n    }\n\n    this.use = this.usehref = \"\";\n    if (id) {\n      proto = ids.get(id);\n    } else {\n      proto = searchNode(\n        ids.get($root),\n        this,\n        somExpression,\n        true /* = dotDotAllowed */,\n        false /* = useCache */\n      );\n      if (proto) {\n        proto = proto[0];\n      }\n    }\n\n    if (!proto) {\n      warn(`XFA - Invalid prototype reference: ${ref}.`);\n      return null;\n    }\n\n    if (proto[$nodeName] !== this[$nodeName]) {\n      warn(\n        `XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`\n      );\n      return null;\n    }\n\n    if (ancestors.has(proto)) {\n      // We've a cycle so break it.\n      warn(`XFA - Cycle detected in prototypes use.`);\n      return null;\n    }\n\n    ancestors.add(proto);\n\n    // The prototype can have a \"use\" attribute itself.\n    const protoProto = proto[_getPrototype](ids, ancestors);\n    if (protoProto) {\n      proto[_applyPrototype](protoProto, ids, ancestors);\n    }\n\n    // The prototype can have a child which itself has a \"use\" property.\n    proto[$resolvePrototypes](ids, ancestors);\n\n    ancestors.delete(proto);\n\n    return proto;\n  }\n\n  [_applyPrototype](proto, ids, ancestors) {\n    if (ancestors.has(proto)) {\n      // We've a cycle so break it.\n      warn(`XFA - Cycle detected in prototypes use.`);\n      return;\n    }\n\n    if (!this[$content] && proto[$content]) {\n      this[$content] = proto[$content];\n    }\n\n    const newAncestors = new Set(ancestors);\n    newAncestors.add(proto);\n\n    for (const unsetAttrName of this[_getUnsetAttributes](\n      proto[_setAttributes]\n    )) {\n      this[unsetAttrName] = proto[unsetAttrName];\n      if (this[_setAttributes]) {\n        this[_setAttributes].add(unsetAttrName);\n      }\n    }\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (this[_attributeNames].has(name)) {\n        continue;\n      }\n      const value = this[name];\n      const protoValue = proto[name];\n\n      if (value instanceof XFAObjectArray) {\n        for (const child of value[_children]) {\n          child[_resolvePrototypesHelper](ids, ancestors);\n        }\n\n        for (\n          let i = value[_children].length, ii = protoValue[_children].length;\n          i < ii;\n          i++\n        ) {\n          const child = proto[_children][i][$clone]();\n          if (value.push(child)) {\n            child[_parent] = this;\n            this[_children].push(child);\n            child[_resolvePrototypesHelper](ids, ancestors);\n          } else {\n            // No need to continue: other nodes will be rejected.\n            break;\n          }\n        }\n        continue;\n      }\n\n      if (value !== null) {\n        value[$resolvePrototypes](ids, ancestors);\n        if (protoValue) {\n          // protoValue must be treated as a prototype for value.\n          value[_applyPrototype](protoValue, ids, ancestors);\n        }\n        continue;\n      }\n\n      if (protoValue !== null) {\n        const child = protoValue[$clone]();\n        child[_parent] = this;\n        this[name] = child;\n        this[_children].push(child);\n        child[_resolvePrototypesHelper](ids, ancestors);\n      }\n    }\n  }\n\n  static [_cloneAttribute](obj) {\n    if (Array.isArray(obj)) {\n      return obj.map(x => XFAObject[_cloneAttribute](x));\n    }\n    if (typeof obj === \"object\" && obj !== null) {\n      return Object.assign({}, obj);\n    }\n    return obj;\n  }\n\n  [$clone]() {\n    const clone = Object.create(Object.getPrototypeOf(this));\n    for (const $symbol of Object.getOwnPropertySymbols(this)) {\n      try {\n        clone[$symbol] = this[$symbol];\n      } catch (_) {\n        shadow(clone, $symbol, this[$symbol]);\n      }\n    }\n    clone[$uid] = `${clone[$nodeName]}${uid++}`;\n    clone[_children] = [];\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (this[_attributeNames].has(name)) {\n        clone[name] = XFAObject[_cloneAttribute](this[name]);\n        continue;\n      }\n      const value = this[name];\n      if (value instanceof XFAObjectArray) {\n        clone[name] = new XFAObjectArray(value[_max]);\n      } else {\n        clone[name] = null;\n      }\n    }\n\n    for (const child of this[_children]) {\n      const name = child[$nodeName];\n      const clonedChild = child[$clone]();\n      clone[_children].push(clonedChild);\n      clonedChild[_parent] = clone;\n      if (clone[name] === null) {\n        clone[name] = clonedChild;\n      } else {\n        clone[name][_children].push(clonedChild);\n      }\n    }\n\n    return clone;\n  }\n\n  [$getChildren](name = null) {\n    if (!name) {\n      return this[_children];\n    }\n\n    return this[_children].filter(c => c[$nodeName] === name);\n  }\n\n  [$getChildrenByClass](name) {\n    return this[name];\n  }\n\n  [$getChildrenByName](name, allTransparent, first = true) {\n    return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n  }\n\n  *[$getChildrenByNameIt](name, allTransparent, first = true) {\n    if (name === \"parent\") {\n      yield this[_parent];\n      return;\n    }\n\n    for (const child of this[_children]) {\n      if (child[$nodeName] === name) {\n        yield child;\n      }\n\n      if (child.name === name) {\n        yield child;\n      }\n\n      if (allTransparent || child[$isTransparent]()) {\n        yield* child[$getChildrenByNameIt](name, allTransparent, false);\n      }\n    }\n\n    if (first && this[_attributeNames].has(name)) {\n      yield new XFAAttribute(this, name, this[name]);\n    }\n  }\n}\n\nclass XFAObjectArray {\n  constructor(max = Infinity) {\n    this[_max] = max;\n    this[_children] = [];\n  }\n\n  push(child) {\n    const len = this[_children].length;\n    if (len <= this[_max]) {\n      this[_children].push(child);\n      return true;\n    }\n    warn(\n      `XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`\n    );\n    return false;\n  }\n\n  isEmpty() {\n    return this[_children].length === 0;\n  }\n\n  dump() {\n    return this[_children].length === 1\n      ? this[_children][0][$dump]()\n      : this[_children].map(x => x[$dump]());\n  }\n\n  [$clone]() {\n    const clone = new XFAObjectArray(this[_max]);\n    clone[_children] = this[_children].map(c => c[$clone]());\n    return clone;\n  }\n\n  get children() {\n    return this[_children];\n  }\n\n  clear() {\n    this[_children].length = 0;\n  }\n}\n\nclass XFAAttribute {\n  constructor(node, name, value) {\n    this[_parent] = node;\n    this[$nodeName] = name;\n    this[$content] = value;\n    this[$consumed] = false;\n    this[$uid] = `attribute${uid++}`;\n  }\n\n  [$getParent]() {\n    return this[_parent];\n  }\n\n  [$isDataValue]() {\n    return true;\n  }\n\n  [$getDataValue]() {\n    return this[$content].trim();\n  }\n\n  [$setValue](value) {\n    value = value.value || \"\";\n    this[$content] = value.toString();\n  }\n\n  [$text]() {\n    return this[$content];\n  }\n\n  [$isDescendent](parent) {\n    return this[_parent] === parent || this[_parent][$isDescendent](parent);\n  }\n}\n\nclass XmlObject extends XFAObject {\n  constructor(nsId, name, attributes = {}) {\n    super(nsId, name);\n    this[$content] = \"\";\n    this[_dataValue] = null;\n    if (name !== \"#text\") {\n      const map = new Map();\n      this[_attributes] = map;\n      for (const [attrName, value] of Object.entries(attributes)) {\n        map.set(attrName, new XFAAttribute(this, attrName, value));\n      }\n      if (attributes.hasOwnProperty($nsAttributes)) {\n        // XFA attributes.\n        const dataNode = attributes[$nsAttributes].xfa.dataNode;\n        if (dataNode !== undefined) {\n          if (dataNode === \"dataGroup\") {\n            this[_dataValue] = false;\n          } else if (dataNode === \"dataValue\") {\n            this[_dataValue] = true;\n          }\n        }\n      }\n    }\n    this[$consumed] = false;\n  }\n\n  [$toString](buf) {\n    const tagName = this[$nodeName];\n    if (tagName === \"#text\") {\n      buf.push(encodeToXmlString(this[$content]));\n      return;\n    }\n    const utf8TagName = utf8StringToString(tagName);\n    const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n    buf.push(`<${prefix}${utf8TagName}`);\n    for (const [name, value] of this[_attributes].entries()) {\n      const utf8Name = utf8StringToString(name);\n      buf.push(` ${utf8Name}=\"${encodeToXmlString(value[$content])}\"`);\n    }\n    if (this[_dataValue] !== null) {\n      if (this[_dataValue]) {\n        buf.push(` xfa:dataNode=\"dataValue\"`);\n      } else {\n        buf.push(` xfa:dataNode=\"dataGroup\"`);\n      }\n    }\n    if (!this[$content] && this[_children].length === 0) {\n      buf.push(\"/>\");\n      return;\n    }\n\n    buf.push(\">\");\n    if (this[$content]) {\n      if (typeof this[$content] === \"string\") {\n        buf.push(encodeToXmlString(this[$content]));\n      } else {\n        this[$content][$toString](buf);\n      }\n    } else {\n      for (const child of this[_children]) {\n        child[$toString](buf);\n      }\n    }\n    buf.push(`</${prefix}${utf8TagName}>`);\n  }\n\n  [$onChild](child) {\n    if (this[$content]) {\n      const node = new XmlObject(this[$namespaceId], \"#text\");\n      this[$appendChild](node);\n      node[$content] = this[$content];\n      this[$content] = \"\";\n    }\n    this[$appendChild](child);\n    return true;\n  }\n\n  [$onText](str) {\n    this[$content] += str;\n  }\n\n  [$finalize]() {\n    if (this[$content] && this[_children].length > 0) {\n      const node = new XmlObject(this[$namespaceId], \"#text\");\n      this[$appendChild](node);\n      node[$content] = this[$content];\n      delete this[$content];\n    }\n  }\n\n  [$toHTML]() {\n    if (this[$nodeName] === \"#text\") {\n      return HTMLResult.success({\n        name: \"#text\",\n        value: this[$content],\n      });\n    }\n\n    return HTMLResult.EMPTY;\n  }\n\n  [$getChildren](name = null) {\n    if (!name) {\n      return this[_children];\n    }\n\n    return this[_children].filter(c => c[$nodeName] === name);\n  }\n\n  [$getAttributes]() {\n    return this[_attributes];\n  }\n\n  [$getChildrenByClass](name) {\n    const value = this[_attributes].get(name);\n    if (value !== undefined) {\n      return value;\n    }\n    return this[$getChildren](name);\n  }\n\n  *[$getChildrenByNameIt](name, allTransparent) {\n    const value = this[_attributes].get(name);\n    if (value) {\n      yield value;\n    }\n\n    for (const child of this[_children]) {\n      if (child[$nodeName] === name) {\n        yield child;\n      }\n\n      if (allTransparent) {\n        yield* child[$getChildrenByNameIt](name, allTransparent);\n      }\n    }\n  }\n\n  *[$getAttributeIt](name, skipConsumed) {\n    const value = this[_attributes].get(name);\n    if (value && (!skipConsumed || !value[$consumed])) {\n      yield value;\n    }\n    for (const child of this[_children]) {\n      yield* child[$getAttributeIt](name, skipConsumed);\n    }\n  }\n\n  *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n    for (const child of this[_children]) {\n      if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n        yield child;\n      }\n\n      if (allTransparent) {\n        yield* child[$getRealChildrenByNameIt](\n          name,\n          allTransparent,\n          skipConsumed\n        );\n      }\n    }\n  }\n\n  [$isDataValue]() {\n    if (this[_dataValue] === null) {\n      return (\n        this[_children].length === 0 ||\n        this[_children][0][$namespaceId] === NamespaceIds.xhtml.id\n      );\n    }\n    return this[_dataValue];\n  }\n\n  [$getDataValue]() {\n    if (this[_dataValue] === null) {\n      if (this[_children].length === 0) {\n        return this[$content].trim();\n      }\n      if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\n        return this[_children][0][$text]().trim();\n      }\n      return null;\n    }\n    return this[$content].trim();\n  }\n\n  [$setValue](value) {\n    value = value.value || \"\";\n    this[$content] = value.toString();\n  }\n\n  [$dump](hasNS = false) {\n    const dumped = Object.create(null);\n    if (hasNS) {\n      dumped.$ns = this[$namespaceId];\n    }\n    if (this[$content]) {\n      dumped.$content = this[$content];\n    }\n    dumped.$name = this[$nodeName];\n\n    dumped.children = [];\n    for (const child of this[_children]) {\n      dumped.children.push(child[$dump](hasNS));\n    }\n\n    dumped.attributes = Object.create(null);\n    for (const [name, value] of this[_attributes]) {\n      dumped.attributes[name] = value[$content];\n    }\n\n    return dumped;\n  }\n}\n\nclass ContentObject extends XFAObject {\n  constructor(nsId, name) {\n    super(nsId, name);\n    this[$content] = \"\";\n  }\n\n  [$onText](text) {\n    this[$content] += text;\n  }\n\n  [$finalize]() {}\n}\n\nclass OptionObject extends ContentObject {\n  constructor(nsId, name, options) {\n    super(nsId, name);\n    this[_options] = options;\n  }\n\n  [$finalize]() {\n    this[$content] = getKeyword({\n      data: this[$content],\n      defaultValue: this[_options][0],\n      validate: k => this[_options].includes(k),\n    });\n  }\n\n  [$clean](builder) {\n    super[$clean](builder);\n    delete this[_options];\n  }\n}\n\nclass StringObject extends ContentObject {\n  [$finalize]() {\n    this[$content] = this[$content].trim();\n  }\n}\n\nclass IntegerObject extends ContentObject {\n  constructor(nsId, name, defaultValue, validator) {\n    super(nsId, name);\n    this[_defaultValue] = defaultValue;\n    this[_validator] = validator;\n  }\n\n  [$finalize]() {\n    this[$content] = getInteger({\n      data: this[$content],\n      defaultValue: this[_defaultValue],\n      validate: this[_validator],\n    });\n  }\n\n  [$clean](builder) {\n    super[$clean](builder);\n    delete this[_defaultValue];\n    delete this[_validator];\n  }\n}\n\nclass Option01 extends IntegerObject {\n  constructor(nsId, name) {\n    super(nsId, name, 0, n => n === 1);\n  }\n}\n\nclass Option10 extends IntegerObject {\n  constructor(nsId, name) {\n    super(nsId, name, 1, n => n === 0);\n  }\n}\n\nexport {\n  $acceptWhitespace,\n  $addHTML,\n  $appendChild,\n  $childrenToHTML,\n  $clean,\n  $cleanPage,\n  $cleanup,\n  $clone,\n  $consumed,\n  $content,\n  $data,\n  $dump,\n  $extra,\n  $finalize,\n  $flushHTML,\n  $getAttributeIt,\n  $getAttributes,\n  $getAvailableSpace,\n  $getChildren,\n  $getChildrenByClass,\n  $getChildrenByName,\n  $getChildrenByNameIt,\n  $getContainedChildren,\n  $getDataValue,\n  $getExtra,\n  $getNextPage,\n  $getParent,\n  $getRealChildrenByNameIt,\n  $getSubformParent,\n  $getTemplateRoot,\n  $globalData,\n  $hasSettableValue,\n  $ids,\n  $indexOf,\n  $insertAt,\n  $isBindable,\n  $isCDATAXml,\n  $isDataValue,\n  $isDescendent,\n  $isNsAgnostic,\n  $isSplittable,\n  $isThereMoreWidth,\n  $isTransparent,\n  $isUsable,\n  $namespaceId,\n  $nodeName,\n  $nsAttributes,\n  $onChild,\n  $onChildCheck,\n  $onText,\n  $popPara,\n  $pushGlyphs,\n  $pushPara,\n  $removeChild,\n  $resolvePrototypes,\n  $root,\n  $searchNode,\n  $setId,\n  $setSetAttributes,\n  $setValue,\n  $tabIndex,\n  $text,\n  $toHTML,\n  $toPages,\n  $toString,\n  $toStyle,\n  $uid,\n  ContentObject,\n  IntegerObject,\n  Option01,\n  Option10,\n  OptionObject,\n  StringObject,\n  XFAAttribute,\n  XFAObject,\n  XFAObjectArray,\n  XmlObject,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { shadow } from \"../../shared/util.js\";\n\nconst dimConverters = {\n  pt: x => x,\n  cm: x => (x / 2.54) * 72,\n  mm: x => (x / (10 * 2.54)) * 72,\n  in: x => x * 72,\n  px: x => x,\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\n\nfunction stripQuotes(str) {\n  if (str.startsWith(\"'\") || str.startsWith('\"')) {\n    return str.slice(1, str.length - 1);\n  }\n  return str;\n}\n\nfunction getInteger({ data, defaultValue, validate }) {\n  if (!data) {\n    return defaultValue;\n  }\n  data = data.trim();\n  const n = parseInt(data, 10);\n  if (!isNaN(n) && validate(n)) {\n    return n;\n  }\n  return defaultValue;\n}\n\nfunction getFloat({ data, defaultValue, validate }) {\n  if (!data) {\n    return defaultValue;\n  }\n  data = data.trim();\n  const n = parseFloat(data);\n  if (!isNaN(n) && validate(n)) {\n    return n;\n  }\n  return defaultValue;\n}\n\nfunction getKeyword({ data, defaultValue, validate }) {\n  if (!data) {\n    return defaultValue;\n  }\n  data = data.trim();\n  if (validate(data)) {\n    return data;\n  }\n  return defaultValue;\n}\n\nfunction getStringOption(data, options) {\n  return getKeyword({\n    data,\n    defaultValue: options[0],\n    validate: k => options.includes(k),\n  });\n}\n\nfunction getMeasurement(str, def = \"0\") {\n  def = def || \"0\";\n  if (!str) {\n    return getMeasurement(def);\n  }\n  const match = str.trim().match(measurementPattern);\n  if (!match) {\n    return getMeasurement(def);\n  }\n  const [, valueStr, unit] = match;\n  const value = parseFloat(valueStr);\n  if (isNaN(value)) {\n    return getMeasurement(def);\n  }\n\n  if (value === 0) {\n    return 0;\n  }\n\n  const conv = dimConverters[unit];\n  if (conv) {\n    return conv(value);\n  }\n\n  return value;\n}\n\nfunction getRatio(data) {\n  if (!data) {\n    return { num: 1, den: 1 };\n  }\n  const ratio = data\n    .trim()\n    .split(/\\s*:\\s*/)\n    .map(x => parseFloat(x))\n    .filter(x => !isNaN(x));\n  if (ratio.length === 1) {\n    ratio.push(1);\n  }\n\n  if (ratio.length === 0) {\n    return { num: 1, den: 1 };\n  }\n\n  const [num, den] = ratio;\n  return { num, den };\n}\n\nfunction getRelevant(data) {\n  if (!data) {\n    return [];\n  }\n  return data\n    .trim()\n    .split(/\\s+/)\n    .map(e => {\n      return {\n        excluded: e[0] === \"-\",\n        viewname: e.substring(1),\n      };\n    });\n}\n\nfunction getColor(data, def = [0, 0, 0]) {\n  let [r, g, b] = def;\n  if (!data) {\n    return { r, g, b };\n  }\n  const color = data\n    .trim()\n    .split(/\\s*,\\s*/)\n    .map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255))\n    .map(c => (isNaN(c) ? 0 : c));\n\n  if (color.length < 3) {\n    return { r, g, b };\n  }\n\n  [r, g, b] = color;\n  return { r, g, b };\n}\n\nfunction getBBox(data) {\n  const def = -1;\n  if (!data) {\n    return { x: def, y: def, width: def, height: def };\n  }\n  const bbox = data\n    .trim()\n    .split(/\\s*,\\s*/)\n    .map(m => getMeasurement(m, \"-1\"));\n  if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n    return { x: def, y: def, width: def, height: def };\n  }\n\n  const [x, y, width, height] = bbox;\n  return { x, y, width, height };\n}\n\nclass HTMLResult {\n  static get FAILURE() {\n    return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n  }\n\n  static get EMPTY() {\n    return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n  }\n\n  constructor(success, html, bbox, breakNode) {\n    this.success = success;\n    this.html = html;\n    this.bbox = bbox;\n    this.breakNode = breakNode;\n  }\n\n  isBreak() {\n    return !!this.breakNode;\n  }\n\n  static breakNode(node) {\n    return new HTMLResult(false, null, null, node);\n  }\n\n  static success(html, bbox = null) {\n    return new HTMLResult(true, html, bbox, null);\n  }\n}\n\nexport {\n  getBBox,\n  getColor,\n  getFloat,\n  getInteger,\n  getKeyword,\n  getMeasurement,\n  getRatio,\n  getRelevant,\n  getStringOption,\n  HTMLResult,\n  stripQuotes,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst $buildXFAObject = Symbol();\n\nconst NamespaceIds = {\n  config: {\n    id: 0,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\"),\n  },\n  connectionSet: {\n    id: 1,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\"),\n  },\n  datasets: {\n    id: 2,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\"),\n  },\n  form: {\n    id: 3,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\"),\n  },\n  localeSet: {\n    id: 4,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\"),\n  },\n  pdf: {\n    id: 5,\n    check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\",\n  },\n  signature: {\n    id: 6,\n    check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\",\n  },\n  sourceSet: {\n    id: 7,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\"),\n  },\n  stylesheet: {\n    id: 8,\n    check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\",\n  },\n  template: {\n    id: 9,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\"),\n  },\n  xdc: {\n    id: 10,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\"),\n  },\n  xdp: {\n    id: 11,\n    check: ns => ns === \"http://ns.adobe.com/xdp/\",\n  },\n  xfdf: {\n    id: 12,\n    check: ns => ns === \"http://ns.adobe.com/xfdf/\",\n  },\n  xhtml: {\n    id: 13,\n    check: ns => ns === \"http://www.w3.org/1999/xhtml\",\n  },\n  xmpmeta: {\n    id: 14,\n    check: ns => ns === \"http://ns.adobe.com/xmpmeta/\",\n  },\n};\n\nexport { $buildXFAObject, NamespaceIds };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $appendChild,\n  $getChildren,\n  $getChildrenByClass,\n  $getChildrenByName,\n  $getParent,\n  $namespaceId,\n  XFAObject,\n  XFAObjectArray,\n  XmlObject,\n} from \"./xfa_object.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n  dot: 0,\n  dotDot: 1,\n  dotHash: 2,\n  dotBracket: 3,\n  dotParen: 4,\n};\n\nconst shortcuts = new Map([\n  [\"$data\", (root, current) => (root.datasets ? root.datasets.data : root)],\n  [\n    \"$record\",\n    (root, current) =>\n      (root.datasets ? root.datasets.data : root)[$getChildren]()[0],\n  ],\n  [\"$template\", (root, current) => root.template],\n  [\"$connectionSet\", (root, current) => root.connectionSet],\n  [\"$form\", (root, current) => root.form],\n  [\"$layout\", (root, current) => root.layout],\n  [\"$host\", (root, current) => root.host],\n  [\"$dataWindow\", (root, current) => root.dataWindow],\n  [\"$event\", (root, current) => root.event],\n  [\"!\", (root, current) => root.datasets],\n  [\"$xfa\", (root, current) => root],\n  [\"xfa\", (root, current) => root],\n  [\"$\", (root, current) => current],\n]);\n\nconst somCache = new WeakMap();\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction parseIndex(index) {\n  index = index.trim();\n  if (index === \"*\") {\n    return Infinity;\n  }\n  return parseInt(index, 10) || 0;\n}\n\n// For now expressions containaing .[...] or .(...) are not\n// evaluated so don't parse them.\n// TODO: implement that stuff and the remove the noExpr param.\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n  let match = expr.match(namePattern);\n  if (!match) {\n    return null;\n  }\n\n  let [name] = match;\n  const parsed = [\n    {\n      name,\n      cacheName: \".\" + name,\n      index: 0,\n      js: null,\n      formCalc: null,\n      operator: operators.dot,\n    },\n  ];\n\n  let pos = name.length;\n\n  while (pos < expr.length) {\n    const spos = pos;\n    const char = expr.charAt(pos++);\n    if (char === \"[\") {\n      match = expr.slice(pos).match(indexPattern);\n      if (!match) {\n        warn(\"XFA - Invalid index in SOM expression\");\n        return null;\n      }\n      parsed[parsed.length - 1].index = parseIndex(match[0]);\n      pos += match[0].length + 1;\n      continue;\n    }\n\n    let operator;\n    switch (expr.charAt(pos)) {\n      case \".\":\n        if (!dotDotAllowed) {\n          return null;\n        }\n        pos++;\n        operator = operators.dotDot;\n        break;\n      case \"#\":\n        pos++;\n        operator = operators.dotHash;\n        break;\n      case \"[\":\n        if (noExpr) {\n          warn(\n            \"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\"\n          );\n          return null;\n        }\n        // TODO: FormCalc expression so need to use the parser\n        operator = operators.dotBracket;\n        break;\n      case \"(\":\n        if (noExpr) {\n          warn(\n            \"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\"\n          );\n          return null;\n        }\n        // TODO:\n        // Javascript expression: should be a boolean operation with a path\n        // so maybe we can have our own parser for that stuff or\n        // maybe use the formcalc one.\n        operator = operators.dotParen;\n        break;\n      default:\n        operator = operators.dot;\n        break;\n    }\n\n    match = expr.slice(pos).match(namePattern);\n    if (!match) {\n      break;\n    }\n\n    [name] = match;\n    pos += name.length;\n    parsed.push({\n      name,\n      cacheName: expr.slice(spos, pos),\n      operator,\n      index: 0,\n      js: null,\n      formCalc: null,\n    });\n  }\n  return parsed;\n}\n\nfunction searchNode(\n  root,\n  container,\n  expr,\n  dotDotAllowed = true,\n  useCache = true\n) {\n  const parsed = parseExpression(expr, dotDotAllowed);\n  if (!parsed) {\n    return null;\n  }\n\n  const fn = shortcuts.get(parsed[0].name);\n  let i = 0;\n  let isQualified;\n  if (fn) {\n    isQualified = true;\n    root = [fn(root, container)];\n    i = 1;\n  } else {\n    isQualified = container === null;\n    root = [container || root];\n  }\n\n  for (let ii = parsed.length; i < ii; i++) {\n    const { name, cacheName, operator, index } = parsed[i];\n    const nodes = [];\n    for (const node of root) {\n      if (!(node instanceof XFAObject)) {\n        continue;\n      }\n\n      let children, cached;\n\n      if (useCache) {\n        cached = somCache.get(node);\n        if (!cached) {\n          cached = new Map();\n          somCache.set(node, cached);\n        }\n        children = cached.get(cacheName);\n      }\n\n      if (!children) {\n        switch (operator) {\n          case operators.dot:\n            children = node[$getChildrenByName](name, false);\n            break;\n          case operators.dotDot:\n            children = node[$getChildrenByName](name, true);\n            break;\n          case operators.dotHash:\n            children = node[$getChildrenByClass](name);\n            if (children instanceof XFAObjectArray) {\n              children = children.children;\n            } else {\n              children = [children];\n            }\n            break;\n          default:\n            break;\n        }\n        if (useCache) {\n          cached.set(cacheName, children);\n        }\n      }\n\n      if (children.length > 0) {\n        nodes.push(children);\n      }\n    }\n\n    if (nodes.length === 0 && !isQualified && i === 0) {\n      // We've an unqualified expression and we didn't find anything\n      // so look at container and siblings of container and so on.\n      // http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=114\n      const parent = container[$getParent]();\n      container = parent;\n      if (!container) {\n        return null;\n      }\n      i = -1;\n      root = [container];\n      continue;\n    }\n\n    if (isFinite(index)) {\n      root = nodes.filter(node => index < node.length).map(node => node[index]);\n    } else {\n      root = nodes.reduce((acc, node) => acc.concat(node), []);\n    }\n  }\n\n  if (root.length === 0) {\n    return null;\n  }\n\n  return root;\n}\n\nfunction createNodes(root, path) {\n  let node = null;\n  for (const { name, index } of path) {\n    for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) {\n      const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\n      node = new XmlObject(nsId, name);\n      root[$appendChild](node);\n    }\n\n    root = node;\n  }\n  return node;\n}\n\nfunction createDataNode(root, container, expr) {\n  const parsed = parseExpression(expr);\n  if (!parsed) {\n    return null;\n  }\n\n  if (parsed.some(x => x.operator === operators.dotDot)) {\n    return null;\n  }\n\n  const fn = shortcuts.get(parsed[0].name);\n  let i = 0;\n  if (fn) {\n    root = fn(root, container);\n    i = 1;\n  } else {\n    root = container || root;\n  }\n\n  for (let ii = parsed.length; i < ii; i++) {\n    const { name, operator, index } = parsed[i];\n    if (!isFinite(index)) {\n      parsed[i].index = 0;\n      return createNodes(root, parsed.slice(i));\n    }\n\n    let children;\n    switch (operator) {\n      case operators.dot:\n        children = root[$getChildrenByName](name, false);\n        break;\n      case operators.dotDot:\n        children = root[$getChildrenByName](name, true);\n        break;\n      case operators.dotHash:\n        children = root[$getChildrenByClass](name);\n        if (children instanceof XFAObjectArray) {\n          children = children.children;\n        } else {\n          children = [children];\n        }\n        break;\n      default:\n        break;\n    }\n\n    if (children.length === 0) {\n      return createNodes(root, parsed.slice(i));\n    }\n\n    if (index < children.length) {\n      const child = children[index];\n      if (!(child instanceof XFAObject)) {\n        warn(`XFA - Cannot create a node.`);\n        return null;\n      }\n      root = child;\n    } else {\n      parsed[i].index = index - children.length;\n      return createNodes(root, parsed.slice(i));\n    }\n  }\n  return null;\n}\n\nexport { createDataNode, searchNode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $appendChild,\n  $clone,\n  $consumed,\n  $content,\n  $data,\n  $finalize,\n  $getAttributeIt,\n  $getChildren,\n  $getDataValue,\n  $getParent,\n  $getRealChildrenByNameIt,\n  $hasSettableValue,\n  $indexOf,\n  $insertAt,\n  $isBindable,\n  $isDataValue,\n  $isDescendent,\n  $namespaceId,\n  $nodeName,\n  $removeChild,\n  $setValue,\n  $text,\n  XFAAttribute,\n  XFAObjectArray,\n  XmlObject,\n} from \"./xfa_object.js\";\nimport { BindItems, Field, Items, SetProperty, Text } from \"./template.js\";\nimport { createDataNode, searchNode } from \"./som.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction createText(content) {\n  const node = new Text({});\n  node[$content] = content;\n  return node;\n}\n\nclass Binder {\n  constructor(root) {\n    this.root = root;\n    this.datasets = root.datasets;\n    if (root.datasets && root.datasets.data) {\n      this.data = root.datasets.data;\n    } else {\n      this.data = new XmlObject(NamespaceIds.datasets.id, \"data\");\n    }\n    this.emptyMerge = this.data[$getChildren]().length === 0;\n\n    this.root.form = this.form = root.template[$clone]();\n  }\n\n  _isConsumeData() {\n    return !this.emptyMerge && this._mergeMode;\n  }\n\n  _isMatchTemplate() {\n    return !this._isConsumeData();\n  }\n\n  bind() {\n    this._bindElement(this.form, this.data);\n    return this.form;\n  }\n\n  getData() {\n    return this.data;\n  }\n\n  _bindValue(formNode, data, picture) {\n    // Nodes must have the same \"type\": container or value.\n    // Here we make the link between form node and\n    // data node (through $data property): we'll use it\n    // to save form data.\n\n    formNode[$data] = data;\n    if (formNode[$hasSettableValue]()) {\n      if (data[$isDataValue]()) {\n        const value = data[$getDataValue]();\n        // TODO: use picture.\n        formNode[$setValue](createText(value));\n      } else if (\n        formNode instanceof Field &&\n        formNode.ui &&\n        formNode.ui.choiceList &&\n        formNode.ui.choiceList.open === \"multiSelect\"\n      ) {\n        const value = data[$getChildren]()\n          .map(child => child[$content].trim())\n          .join(\"\\n\");\n        formNode[$setValue](createText(value));\n      } else if (this._isConsumeData()) {\n        warn(`XFA - Nodes haven't the same type.`);\n      }\n    } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\n      this._bindElement(formNode, data);\n    } else {\n      warn(`XFA - Nodes haven't the same type.`);\n    }\n  }\n\n  _findDataByNameToConsume(name, isValue, dataNode, global) {\n    if (!name) {\n      return null;\n    }\n\n    // Firstly, we try to find a node with the given name:\n    //  - in dataNode;\n    //  - if not found, then in parent;\n    //  - and if not in found, then in grand-parent.\n    let generator, match;\n    for (let i = 0; i < 3; i++) {\n      generator = dataNode[$getRealChildrenByNameIt](\n        name,\n        /* allTransparent = */ false,\n        /* skipConsumed = */ true\n      );\n      // Try to find a match of the same kind.\n      while (true) {\n        match = generator.next().value;\n        if (!match) {\n          break;\n        }\n\n        if (isValue === match[$isDataValue]()) {\n          return match;\n        }\n      }\n      if (\n        dataNode[$namespaceId] === NamespaceIds.datasets.id &&\n        dataNode[$nodeName] === \"data\"\n      ) {\n        break;\n      }\n      dataNode = dataNode[$getParent]();\n    }\n\n    if (!global) {\n      return null;\n    }\n\n    // Secondly, if global try to find it just under the root of datasets\n    // (which is the location of global variables).\n    generator = this.data[$getRealChildrenByNameIt](\n      name,\n      /* allTransparent = */ true,\n      /* skipConsumed = */ false\n    );\n\n    match = generator.next().value;\n    if (match) {\n      return match;\n    }\n\n    // Thirdly, try to find it in attributes.\n    generator = this.data[$getAttributeIt](name, /* skipConsumed = */ true);\n    match = generator.next().value;\n    if (match && match[$isDataValue]()) {\n      return match;\n    }\n\n    return null;\n  }\n\n  _setProperties(formNode, dataNode) {\n    // For example:\n    // <field name=\"LastName\" ...>\n    //   <setProperty ref=\"$data.Main.Style.NameFont\" target=\"font.typeface\"/>\n    //   <setProperty ref=\"$data.Main.Style.NameSize\" target=\"font.size\"/>\n    //   <setProperty ref=\"$data.Main.Help.LastName\" target=\"assist.toolTip\"/>\n    // </field>\n\n    if (!formNode.hasOwnProperty(\"setProperty\")) {\n      return;\n    }\n\n    for (const { ref, target, connection } of formNode.setProperty.children) {\n      if (connection) {\n        // TODO: evaluate if we should implement this feature.\n        // Skip for security reasons.\n        continue;\n      }\n      if (!ref) {\n        continue;\n      }\n\n      const nodes = searchNode(\n        this.root,\n        dataNode,\n        ref,\n        false /* = dotDotAllowed */,\n        false /* = useCache */\n      );\n      if (!nodes) {\n        warn(`XFA - Invalid reference: ${ref}.`);\n        continue;\n      }\n      const [node] = nodes;\n\n      if (!node[$isDescendent](this.data)) {\n        warn(`XFA - Invalid node: must be a data node.`);\n        continue;\n      }\n\n      const targetNodes = searchNode(\n        this.root,\n        formNode,\n        target,\n        false /* = dotDotAllowed */,\n        false /* = useCache */\n      );\n      if (!targetNodes) {\n        warn(`XFA - Invalid target: ${target}.`);\n        continue;\n      }\n      const [targetNode] = targetNodes;\n\n      if (!targetNode[$isDescendent](formNode)) {\n        warn(`XFA - Invalid target: must be a property or subproperty.`);\n        continue;\n      }\n\n      const targetParent = targetNode[$getParent]();\n      if (\n        targetNode instanceof SetProperty ||\n        targetParent instanceof SetProperty\n      ) {\n        warn(\n          `XFA - Invalid target: cannot be a setProperty or one of its properties.`\n        );\n        continue;\n      }\n\n      if (\n        targetNode instanceof BindItems ||\n        targetParent instanceof BindItems\n      ) {\n        warn(\n          `XFA - Invalid target: cannot be a bindItems or one of its properties.`\n        );\n        continue;\n      }\n\n      const content = node[$text]();\n      const name = targetNode[$nodeName];\n\n      if (targetNode instanceof XFAAttribute) {\n        const attrs = Object.create(null);\n        attrs[name] = content;\n        const obj = Reflect.construct(\n          Object.getPrototypeOf(targetParent).constructor,\n          [attrs]\n        );\n        targetParent[name] = obj[name];\n        continue;\n      }\n\n      if (!targetNode.hasOwnProperty($content)) {\n        warn(`XFA - Invalid node to use in setProperty`);\n        continue;\n      }\n\n      targetNode[$data] = node;\n      targetNode[$content] = content;\n      targetNode[$finalize]();\n    }\n  }\n\n  _bindItems(formNode, dataNode) {\n    // For example:\n    // <field name=\"CardName\"...>\n    //   <bindItems ref=\"$data.main.ccs.cc[*]\" labelRef=\"uiname\"\n    //              valueRef=\"token\"/>\n    //   <ui><choiceList/></ui>\n    // </field>\n\n    if (\n      !formNode.hasOwnProperty(\"items\") ||\n      !formNode.hasOwnProperty(\"bindItems\") ||\n      formNode.bindItems.isEmpty()\n    ) {\n      return;\n    }\n\n    for (const item of formNode.items.children) {\n      formNode[$removeChild](item);\n    }\n\n    formNode.items.clear();\n\n    const labels = new Items({});\n    const values = new Items({});\n\n    formNode[$appendChild](labels);\n    formNode.items.push(labels);\n\n    formNode[$appendChild](values);\n    formNode.items.push(values);\n\n    for (const { ref, labelRef, valueRef, connection } of formNode.bindItems\n      .children) {\n      if (connection) {\n        // TODO: evaluate if we should implement this feature.\n        // Skip for security reasons.\n        continue;\n      }\n      if (!ref) {\n        continue;\n      }\n\n      const nodes = searchNode(\n        this.root,\n        dataNode,\n        ref,\n        false /* = dotDotAllowed */,\n        false /* = useCache */\n      );\n      if (!nodes) {\n        warn(`XFA - Invalid reference: ${ref}.`);\n        continue;\n      }\n      for (const node of nodes) {\n        if (!node[$isDescendent](this.datasets)) {\n          warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n          continue;\n        }\n\n        const labelNodes = searchNode(\n          this.root,\n          node,\n          labelRef,\n          true /* = dotDotAllowed */,\n          false /* = useCache */\n        );\n        if (!labelNodes) {\n          warn(`XFA - Invalid label: ${labelRef}.`);\n          continue;\n        }\n        const [labelNode] = labelNodes;\n\n        if (!labelNode[$isDescendent](this.datasets)) {\n          warn(`XFA - Invalid label: must be a datasets child.`);\n          continue;\n        }\n\n        const valueNodes = searchNode(\n          this.root,\n          node,\n          valueRef,\n          true /* = dotDotAllowed */,\n          false /* = useCache */\n        );\n        if (!valueNodes) {\n          warn(`XFA - Invalid value: ${valueRef}.`);\n          continue;\n        }\n        const [valueNode] = valueNodes;\n\n        if (!valueNode[$isDescendent](this.datasets)) {\n          warn(`XFA - Invalid value: must be a datasets child.`);\n          continue;\n        }\n\n        const label = createText(labelNode[$text]());\n        const value = createText(valueNode[$text]());\n\n        labels[$appendChild](label);\n        labels.text.push(label);\n\n        values[$appendChild](value);\n        values.text.push(value);\n      }\n    }\n  }\n\n  _bindOccurrences(formNode, matches, picture) {\n    // Insert nodes which are not in the template but reflect\n    // what we've in data tree.\n\n    let baseClone;\n    if (matches.length > 1) {\n      // Clone before binding to avoid bad state.\n      baseClone = formNode[$clone]();\n      baseClone[$removeChild](baseClone.occur);\n      baseClone.occur = null;\n    }\n\n    this._bindValue(formNode, matches[0], picture);\n    this._setProperties(formNode, matches[0]);\n    this._bindItems(formNode, matches[0]);\n\n    if (matches.length === 1) {\n      return;\n    }\n\n    const parent = formNode[$getParent]();\n    const name = formNode[$nodeName];\n    const pos = parent[$indexOf](formNode);\n\n    for (let i = 1, ii = matches.length; i < ii; i++) {\n      const match = matches[i];\n      const clone = baseClone[$clone]();\n      parent[name].push(clone);\n      parent[$insertAt](pos + i, clone);\n\n      this._bindValue(clone, match, picture);\n      this._setProperties(clone, match);\n      this._bindItems(clone, match);\n    }\n  }\n\n  _createOccurrences(formNode) {\n    if (!this.emptyMerge) {\n      return;\n    }\n\n    const { occur } = formNode;\n    if (!occur || occur.initial <= 1) {\n      return;\n    }\n\n    const parent = formNode[$getParent]();\n    const name = formNode[$nodeName];\n\n    if (!(parent[name] instanceof XFAObjectArray)) {\n      return;\n    }\n\n    let currentNumber;\n    if (formNode.name) {\n      currentNumber = parent[name].children.filter(\n        e => e.name === formNode.name\n      ).length;\n    } else {\n      currentNumber = parent[name].children.length;\n    }\n\n    const pos = parent[$indexOf](formNode) + 1;\n    const ii = occur.initial - currentNumber;\n    if (ii) {\n      const nodeClone = formNode[$clone]();\n      nodeClone[$removeChild](nodeClone.occur);\n      nodeClone.occur = null;\n      parent[name].push(nodeClone);\n      parent[$insertAt](pos, nodeClone);\n\n      for (let i = 1; i < ii; i++) {\n        const clone = nodeClone[$clone]();\n        parent[name].push(clone);\n        parent[$insertAt](pos + i, clone);\n      }\n    }\n  }\n\n  _getOccurInfo(formNode) {\n    const { name, occur } = formNode;\n    if (!occur || !name) {\n      return [1, 1];\n    }\n    const max = occur.max === -1 ? Infinity : occur.max;\n    return [occur.min, max];\n  }\n\n  _setAndBind(formNode, dataNode) {\n    this._setProperties(formNode, dataNode);\n    this._bindItems(formNode, dataNode);\n    this._bindElement(formNode, dataNode);\n  }\n\n  _bindElement(formNode, dataNode) {\n    // Some nodes can be useless because min=0 so remove them\n    // after the loop to avoid bad things.\n\n    const uselessNodes = [];\n\n    this._createOccurrences(formNode);\n\n    for (const child of formNode[$getChildren]()) {\n      if (child[$data]) {\n        // Already bound.\n        continue;\n      }\n\n      if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n        this._mergeMode = child.mergeMode === \"consumeData\";\n\n        // XFA specs p. 182:\n        // The highest-level subform and the data node representing\n        // the current record are special; they are always\n        // bound even if their names don't match.\n        const dataChildren = dataNode[$getChildren]();\n        if (dataChildren.length > 0) {\n          this._bindOccurrences(child, [dataChildren[0]], null);\n        } else if (this.emptyMerge) {\n          const nsId =\n            dataNode[$namespaceId] === NS_DATASETS\n              ? -1\n              : dataNode[$namespaceId];\n          const dataChild = (child[$data] = new XmlObject(\n            nsId,\n            child.name || \"root\"\n          ));\n          dataNode[$appendChild](dataChild);\n          this._bindElement(child, dataChild);\n        }\n        continue;\n      }\n\n      if (!child[$isBindable]()) {\n        // The node cannot contain some new data so there is nothing\n        // to create in the data node.\n        continue;\n      }\n\n      let global = false;\n      let picture = null;\n      let ref = null;\n      let match = null;\n      if (child.bind) {\n        switch (child.bind.match) {\n          case \"none\":\n            this._setAndBind(child, dataNode);\n            continue;\n          case \"global\":\n            global = true;\n            break;\n          case \"dataRef\":\n            if (!child.bind.ref) {\n              warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\n              this._setAndBind(child, dataNode);\n              continue;\n            }\n            ref = child.bind.ref;\n            break;\n          default:\n            break;\n        }\n        if (child.bind.picture) {\n          picture = child.bind.picture[$content];\n        }\n      }\n\n      const [min, max] = this._getOccurInfo(child);\n\n      if (ref) {\n        // Don't use a cache for searching: nodes can change during binding.\n        match = searchNode(\n          this.root,\n          dataNode,\n          ref,\n          true /* = dotDotAllowed */,\n          false /* = useCache */\n        );\n        if (match === null) {\n          // Nothing found: we must create some nodes in data in order\n          // to have something to match with the given expression.\n          // See http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=199\n          match = createDataNode(this.data, dataNode, ref);\n          if (!match) {\n            // For example if the node contains a .(...) then it isn't\n            // findable.\n            // TODO: remove this when .(...) is implemented.\n            continue;\n          }\n          if (this._isConsumeData()) {\n            match[$consumed] = true;\n          }\n\n          // Don't bind the value in newly created node because it's empty.\n          this._setAndBind(child, match);\n          continue;\n        } else {\n          if (this._isConsumeData()) {\n            // Filter out consumed nodes.\n            match = match.filter(node => !node[$consumed]);\n          }\n          if (match.length > max) {\n            match = match.slice(0, max);\n          } else if (match.length === 0) {\n            match = null;\n          }\n          if (match && this._isConsumeData()) {\n            match.forEach(node => {\n              node[$consumed] = true;\n            });\n          }\n        }\n      } else {\n        if (!child.name) {\n          this._setAndBind(child, dataNode);\n          continue;\n        }\n        if (this._isConsumeData()) {\n          // In consumeData mode, search for the next node with the given name.\n          // occurs.max gives us the max number of node to match.\n          const matches = [];\n          while (matches.length < max) {\n            const found = this._findDataByNameToConsume(\n              child.name,\n              child[$hasSettableValue](),\n              dataNode,\n              global\n            );\n\n            if (!found) {\n              break;\n            }\n            found[$consumed] = true;\n            matches.push(found);\n          }\n          match = matches.length > 0 ? matches : null;\n        } else {\n          // If we've an empty merge, there are no reason\n          // to make multiple bind so skip consumed nodes.\n          match = dataNode[$getRealChildrenByNameIt](\n            child.name,\n            /* allTransparent = */ false,\n            /* skipConsumed = */ this.emptyMerge\n          ).next().value;\n          if (!match) {\n            // If there is no match (no data) and `min === 0` then\n            // the container is entirely excluded.\n            // https://www.pdfa.org/norm-refs/XFA-3_3.pdf#G12.1428332\n            if (min === 0) {\n              uselessNodes.push(child);\n              continue;\n            }\n            // We're in matchTemplate mode so create a node in data to reflect\n            // what we've in template.\n            const nsId =\n              dataNode[$namespaceId] === NS_DATASETS\n                ? -1\n                : dataNode[$namespaceId];\n            match = child[$data] = new XmlObject(nsId, child.name);\n            if (this.emptyMerge) {\n              match[$consumed] = true;\n            }\n            dataNode[$appendChild](match);\n\n            // Don't bind the value in newly created node because it's empty.\n            this._setAndBind(child, match);\n            continue;\n          }\n          if (this.emptyMerge) {\n            match[$consumed] = true;\n          }\n          match = [match];\n        }\n      }\n\n      if (match) {\n        this._bindOccurrences(child, match, picture);\n      } else if (min > 0) {\n        this._setAndBind(child, dataNode);\n      } else {\n        uselessNodes.push(child);\n      }\n    }\n\n    uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n  }\n}\n\nexport { Binder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $acceptWhitespace,\n  $addHTML,\n  $appendChild,\n  $childrenToHTML,\n  $clean,\n  $cleanPage,\n  $content,\n  $data,\n  $extra,\n  $finalize,\n  $flushHTML,\n  $getAvailableSpace,\n  $getChildren,\n  $getContainedChildren,\n  $getExtra,\n  $getNextPage,\n  $getParent,\n  $getSubformParent,\n  $getTemplateRoot,\n  $globalData,\n  $hasSettableValue,\n  $ids,\n  $isBindable,\n  $isCDATAXml,\n  $isSplittable,\n  $isThereMoreWidth,\n  $isTransparent,\n  $isUsable,\n  $namespaceId,\n  $nodeName,\n  $onChild,\n  $onText,\n  $popPara,\n  $pushPara,\n  $removeChild,\n  $searchNode,\n  $setSetAttributes,\n  $setValue,\n  $tabIndex,\n  $text,\n  $toHTML,\n  $toPages,\n  $toStyle,\n  $uid,\n  ContentObject,\n  Option01,\n  OptionObject,\n  StringObject,\n  XFAObject,\n  XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n  addHTML,\n  checkDimensions,\n  flushHTML,\n  getAvailableSpace,\n} from \"./layout.js\";\nimport {\n  computeBbox,\n  createWrapper,\n  fixDimensions,\n  fixTextIndent,\n  fixURL,\n  isPrintOnly,\n  layoutClass,\n  layoutNode,\n  measureToString,\n  setAccess,\n  setFontFamily,\n  setMinMaxDimensions,\n  setPara,\n  toStyle,\n} from \"./html_utils.js\";\nimport {\n  getBBox,\n  getColor,\n  getFloat,\n  getInteger,\n  getKeyword,\n  getMeasurement,\n  getRatio,\n  getRelevant,\n  getStringOption,\n  HTMLResult,\n} from \"./utils.js\";\nimport { stringToBytes, Util, warn } from \"../../shared/util.js\";\nimport { getMetrics } from \"./fonts.js\";\nimport { recoverJsURL } from \"../core_utils.js\";\nimport { searchNode } from \"./som.js\";\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\n// In case of lr-tb (and rl-tb) layouts, we try:\n//  - to put the container at the end of a line\n//  - and if it fails we try on the next line.\n// If both tries failed then it's up to the parent\n// to handle the situation.\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\n\n// It's possible to have a bug in the layout and so as\n// a consequence we could loop for ever in Template::toHTML()\n// so in order to avoid that (and avoid a OOM crash) we break\n// the loop after having MAX_EMPTY_PAGES empty pages.\nconst MAX_EMPTY_PAGES = 3;\n\n// Default value to start with for the tabIndex property.\nconst DEFAULT_TAB_INDEX = 5000;\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n// Allowed mime types for images\nconst MIMES = new Set([\n  \"image/gif\",\n  \"image/jpeg\",\n  \"image/jpg\",\n  \"image/pjpeg\",\n  \"image/png\",\n  \"image/apng\",\n  \"image/x-png\",\n  \"image/bmp\",\n  \"image/x-ms-bmp\",\n  \"image/tiff\",\n  \"image/tif\",\n  \"application/octet-stream\",\n]);\n\nconst IMAGES_HEADERS = [\n  [[0x42, 0x4d], \"image/bmp\"],\n  [[0xff, 0xd8, 0xff], \"image/jpeg\"],\n  [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"],\n  [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"],\n  [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"],\n  [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"],\n];\n\nfunction getBorderDims(node) {\n  if (!node || !node.border) {\n    return { w: 0, h: 0 };\n  }\n\n  const borderExtra = node.border[$getExtra]();\n  if (!borderExtra) {\n    return { w: 0, h: 0 };\n  }\n\n  return {\n    w:\n      borderExtra.widths[0] +\n      borderExtra.widths[2] +\n      borderExtra.insets[0] +\n      borderExtra.insets[2],\n    h:\n      borderExtra.widths[1] +\n      borderExtra.widths[3] +\n      borderExtra.insets[1] +\n      borderExtra.insets[3],\n  };\n}\n\nfunction hasMargin(node) {\n  return (\n    node.margin &&\n    (node.margin.topInset ||\n      node.margin.rightInset ||\n      node.margin.bottomInset ||\n      node.margin.leftInset)\n  );\n}\n\nfunction _setValue(templateNode, value) {\n  if (!templateNode.value) {\n    const nodeValue = new Value({});\n    templateNode[$appendChild](nodeValue);\n    templateNode.value = nodeValue;\n  }\n  templateNode.value[$setValue](value);\n}\n\nfunction* getContainedChildren(node) {\n  for (const child of node[$getChildren]()) {\n    if (child instanceof SubformSet) {\n      yield* child[$getContainedChildren]();\n      continue;\n    }\n    yield child;\n  }\n}\n\nfunction setTabIndex(node) {\n  while (node) {\n    if (!node.traversal) {\n      node[$tabIndex] = node[$getParent]()[$tabIndex];\n      return;\n    }\n\n    if (node[$tabIndex]) {\n      return;\n    }\n\n    let next = null;\n    for (const child of node.traversal[$getChildren]()) {\n      if (child.operation === \"next\") {\n        next = child;\n        break;\n      }\n    }\n\n    if (!next || !next.ref) {\n      node[$tabIndex] = node[$getParent]()[$tabIndex];\n      return;\n    }\n\n    const root = node[$getTemplateRoot]();\n    node[$tabIndex] = ++root[$tabIndex];\n\n    const ref = root[$searchNode](next.ref, node);\n    if (!ref) {\n      return;\n    }\n\n    node = ref[0];\n  }\n}\n\nfunction applyAssist(obj, attributes) {\n  const assist = obj.assist;\n  if (assist) {\n    const assistTitle = assist[$toHTML]();\n    if (assistTitle) {\n      attributes.title = assistTitle;\n    }\n    const role = assist.role;\n    const match = role.match(HEADING_PATTERN);\n    if (match) {\n      const ariaRole = \"heading\";\n      const ariaLevel = match[1];\n      attributes.role = ariaRole;\n      attributes[\"aria-level\"] = ariaLevel;\n    }\n  }\n  // XXX: We could end up in a situation where the obj has a heading role and\n  // is also a table. For now prioritize the table role.\n  if (obj.layout === \"table\") {\n    attributes.role = \"table\";\n  } else if (obj.layout === \"row\") {\n    attributes.role = \"row\";\n  } else {\n    const parent = obj[$getParent]();\n    if (parent.layout === \"row\") {\n      if (parent.assist && parent.assist.role === \"TH\") {\n        attributes.role = \"columnheader\";\n      } else {\n        attributes.role = \"cell\";\n      }\n    }\n  }\n}\n\nfunction ariaLabel(obj) {\n  if (!obj.assist) {\n    return null;\n  }\n  const assist = obj.assist;\n  if (assist.speak && assist.speak[$content] !== \"\") {\n    return assist.speak[$content];\n  }\n  if (assist.toolTip) {\n    return assist.toolTip[$content];\n  }\n  // TODO: support finding the related caption element. See xfa_bug1718037.pdf\n  // for an example.\n  return null;\n}\n\nfunction valueToHtml(value) {\n  return HTMLResult.success({\n    name: \"div\",\n    attributes: {\n      class: [\"xfaRich\"],\n      style: Object.create(null),\n    },\n    children: [\n      {\n        name: \"span\",\n        attributes: {\n          style: Object.create(null),\n        },\n        value,\n      },\n    ],\n  });\n}\n\nfunction setFirstUnsplittable(node) {\n  const root = node[$getTemplateRoot]();\n  if (root[$extra].firstUnsplittable === null) {\n    root[$extra].firstUnsplittable = node;\n    root[$extra].noLayoutFailure = true;\n  }\n}\n\nfunction unsetFirstUnsplittable(node) {\n  const root = node[$getTemplateRoot]();\n  if (root[$extra].firstUnsplittable === node) {\n    root[$extra].noLayoutFailure = false;\n  }\n}\n\nfunction handleBreak(node) {\n  if (node[$extra]) {\n    return false;\n  }\n\n  node[$extra] = Object.create(null);\n\n  if (node.targetType === \"auto\") {\n    return false;\n  }\n\n  const root = node[$getTemplateRoot]();\n  let target = null;\n  if (node.target) {\n    target = root[$searchNode](node.target, node[$getParent]());\n    if (!target) {\n      return false;\n    }\n    target = target[0];\n  }\n\n  const { currentPageArea, currentContentArea } = root[$extra];\n\n  if (node.targetType === \"pageArea\") {\n    if (!(target instanceof PageArea)) {\n      target = null;\n    }\n\n    if (node.startNew) {\n      node[$extra].target = target || currentPageArea;\n      return true;\n    } else if (target && target !== currentPageArea) {\n      node[$extra].target = target;\n      return true;\n    }\n\n    return false;\n  }\n\n  if (!(target instanceof ContentArea)) {\n    target = null;\n  }\n\n  const pageArea = target && target[$getParent]();\n\n  let index;\n  let nextPageArea = pageArea;\n  if (node.startNew) {\n    // startNew === 1 so we must create a new container (pageArea or\n    // contentArea).\n    if (target) {\n      const contentAreas = pageArea.contentArea.children;\n      const indexForCurrent = contentAreas.indexOf(currentContentArea);\n      const indexForTarget = contentAreas.indexOf(target);\n      if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n        // The next container is after the current container so\n        // we can stay on the same page.\n        nextPageArea = null;\n      }\n      index = indexForTarget - 1;\n    } else {\n      index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n    }\n  } else if (target && target !== currentContentArea) {\n    const contentAreas = pageArea.contentArea.children;\n    index = contentAreas.indexOf(target) - 1;\n    nextPageArea = pageArea === currentPageArea ? null : pageArea;\n  } else {\n    return false;\n  }\n\n  node[$extra].target = nextPageArea;\n  node[$extra].index = index;\n  return true;\n}\n\nfunction handleOverflow(node, extraNode, space) {\n  const root = node[$getTemplateRoot]();\n  const saved = root[$extra].noLayoutFailure;\n  const savedMethod = extraNode[$getSubformParent];\n\n  // Replace $getSubformParent to emulate that extraNode is just\n  // under node.\n  extraNode[$getSubformParent] = () => node;\n\n  root[$extra].noLayoutFailure = true;\n  const res = extraNode[$toHTML](space);\n  node[$addHTML](res.html, res.bbox);\n  root[$extra].noLayoutFailure = saved;\n  extraNode[$getSubformParent] = savedMethod;\n}\n\nclass AppearanceFilter extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"appearanceFilter\");\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Arc extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"arc\", /* hasChildren = */ true);\n    this.circular = getInteger({\n      data: attributes.circular,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.startAngle = getFloat({\n      data: attributes.startAngle,\n      defaultValue: 0,\n      validate: x => true,\n    });\n    this.sweepAngle = getFloat({\n      data: attributes.sweepAngle,\n      defaultValue: 360,\n      validate: x => true,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.edge = null;\n    this.fill = null;\n  }\n\n  [$toHTML]() {\n    const edge = this.edge ? this.edge : new Edge({});\n    const edgeStyle = edge[$toStyle]();\n    const style = Object.create(null);\n    if (this.fill && this.fill.presence === \"visible\") {\n      Object.assign(style, this.fill[$toStyle]());\n    } else {\n      style.fill = \"transparent\";\n    }\n    style.strokeWidth = measureToString(\n      edge.presence === \"visible\" ? edge.thickness : 0\n    );\n    style.stroke = edgeStyle.color;\n    let arc;\n    const attributes = {\n      xmlns: SVG_NS,\n      style: {\n        width: \"100%\",\n        height: \"100%\",\n        overflow: \"visible\",\n      },\n    };\n\n    if (this.sweepAngle === 360) {\n      arc = {\n        name: \"ellipse\",\n        attributes: {\n          xmlns: SVG_NS,\n          cx: \"50%\",\n          cy: \"50%\",\n          rx: \"50%\",\n          ry: \"50%\",\n          style,\n        },\n      };\n    } else {\n      const startAngle = (this.startAngle * Math.PI) / 180;\n      const sweepAngle = (this.sweepAngle * Math.PI) / 180;\n      const largeArc = this.sweepAngle > 180 ? 1 : 0;\n      const [x1, y1, x2, y2] = [\n        50 * (1 + Math.cos(startAngle)),\n        50 * (1 - Math.sin(startAngle)),\n        50 * (1 + Math.cos(startAngle + sweepAngle)),\n        50 * (1 - Math.sin(startAngle + sweepAngle)),\n      ];\n\n      arc = {\n        name: \"path\",\n        attributes: {\n          xmlns: SVG_NS,\n          d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n          vectorEffect: \"non-scaling-stroke\",\n          style,\n        },\n      };\n\n      Object.assign(attributes, {\n        viewBox: \"0 0 100 100\",\n        preserveAspectRatio: \"none\",\n      });\n    }\n\n    const svg = {\n      name: \"svg\",\n      children: [arc],\n      attributes,\n    };\n\n    const parent = this[$getParent]()[$getParent]();\n    if (hasMargin(parent)) {\n      return HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          style: {\n            display: \"inline\",\n            width: \"100%\",\n            height: \"100%\",\n          },\n        },\n        children: [svg],\n      });\n    }\n\n    svg.attributes.style.position = \"absolute\";\n    return HTMLResult.success(svg);\n  }\n}\n\nclass Area extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"area\", /* hasChildren = */ true);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1,\n    });\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.desc = null;\n    this.extras = null;\n    this.area = new XFAObjectArray();\n    this.draw = new XFAObjectArray();\n    this.exObject = new XFAObjectArray();\n    this.exclGroup = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n    this.subformSet = new XFAObjectArray();\n  }\n\n  *[$getContainedChildren]() {\n    // This function is overriden in order to fake that subforms under\n    // this set are in fact under parent subform.\n    yield* getContainedChildren(this);\n  }\n\n  [$isTransparent]() {\n    return true;\n  }\n\n  [$isBindable]() {\n    return true;\n  }\n\n  [$addHTML](html, bbox) {\n    const [x, y, w, h] = bbox;\n    this[$extra].width = Math.max(this[$extra].width, x + w);\n    this[$extra].height = Math.max(this[$extra].height, y + h);\n\n    this[$extra].children.push(html);\n  }\n\n  [$getAvailableSpace]() {\n    return this[$extra].availableSpace;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    const style = toStyle(this, \"position\");\n    const attributes = {\n      style,\n      id: this[$uid],\n      class: [\"xfaArea\"],\n    };\n\n    if (isPrintOnly(this)) {\n      attributes.class.push(\"xfaPrintOnly\");\n    }\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    const children = [];\n    this[$extra] = {\n      children,\n      width: 0,\n      height: 0,\n      availableSpace,\n    };\n\n    const result = this[$childrenToHTML]({\n      filter: new Set([\n        \"area\",\n        \"draw\",\n        \"field\",\n        \"exclGroup\",\n        \"subform\",\n        \"subformSet\",\n      ]),\n      include: true,\n    });\n\n    if (!result.success) {\n      if (result.isBreak()) {\n        return result;\n      }\n      // Nothing to propose for the element which doesn't fit the\n      // available space.\n      delete this[$extra];\n      return HTMLResult.FAILURE;\n    }\n\n    style.width = measureToString(this[$extra].width);\n    style.height = measureToString(this[$extra].height);\n\n    const html = {\n      name: \"div\",\n      attributes,\n      children,\n    };\n\n    const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n    delete this[$extra];\n\n    return HTMLResult.success(html, bbox);\n  }\n}\n\nclass Assist extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"assist\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.role = attributes.role || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.speak = null;\n    this.toolTip = null;\n  }\n\n  [$toHTML]() {\n    return this.toolTip && this.toolTip[$content]\n      ? this.toolTip[$content]\n      : null;\n  }\n}\n\nclass Barcode extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"barcode\", /* hasChildren = */ true);\n    this.charEncoding = getKeyword({\n      data: attributes.charEncoding\n        ? attributes.charEncoding.toLowerCase()\n        : \"\",\n      defaultValue: \"\",\n      validate: k =>\n        [\n          \"utf-8\",\n          \"big-five\",\n          \"fontspecific\",\n          \"gbk\",\n          \"gb-18030\",\n          \"gb-2312\",\n          \"ksc-5601\",\n          \"none\",\n          \"shift-jis\",\n          \"ucs-2\",\n          \"utf-16\",\n        ].includes(k) || k.match(/iso-8859-\\d{2}/),\n    });\n    this.checksum = getStringOption(attributes.checksum, [\n      \"none\",\n      \"1mod10\",\n      \"1mod10_1mod11\",\n      \"2mod10\",\n      \"auto\",\n    ]);\n    this.dataColumnCount = getInteger({\n      data: attributes.dataColumnCount,\n      defaultValue: -1,\n      validate: x => x >= 0,\n    });\n    this.dataLength = getInteger({\n      data: attributes.dataLength,\n      defaultValue: -1,\n      validate: x => x >= 0,\n    });\n    this.dataPrep = getStringOption(attributes.dataPrep, [\n      \"none\",\n      \"flateCompress\",\n    ]);\n    this.dataRowCount = getInteger({\n      data: attributes.dataRowCount,\n      defaultValue: -1,\n      validate: x => x >= 0,\n    });\n    this.endChar = attributes.endChar || \"\";\n    this.errorCorrectionLevel = getInteger({\n      data: attributes.errorCorrectionLevel,\n      defaultValue: -1,\n      validate: x => x >= 0 && x <= 8,\n    });\n    this.id = attributes.id || \"\";\n    this.moduleHeight = getMeasurement(attributes.moduleHeight, \"5mm\");\n    this.moduleWidth = getMeasurement(attributes.moduleWidth, \"0.25mm\");\n    this.printCheckDigit = getInteger({\n      data: attributes.printCheckDigit,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\n    this.startChar = attributes.startChar || \"\";\n    this.textLocation = getStringOption(attributes.textLocation, [\n      \"below\",\n      \"above\",\n      \"aboveEmbedded\",\n      \"belowEmbedded\",\n      \"none\",\n    ]);\n    this.truncate = getInteger({\n      data: attributes.truncate,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.type = getStringOption(\n      attributes.type ? attributes.type.toLowerCase() : \"\",\n      [\n        \"aztec\",\n        \"codabar\",\n        \"code2of5industrial\",\n        \"code2of5interleaved\",\n        \"code2of5matrix\",\n        \"code2of5standard\",\n        \"code3of9\",\n        \"code3of9extended\",\n        \"code11\",\n        \"code49\",\n        \"code93\",\n        \"code128\",\n        \"code128a\",\n        \"code128b\",\n        \"code128c\",\n        \"code128sscc\",\n        \"datamatrix\",\n        \"ean8\",\n        \"ean8add2\",\n        \"ean8add5\",\n        \"ean13\",\n        \"ean13add2\",\n        \"ean13add5\",\n        \"ean13pwcd\",\n        \"fim\",\n        \"logmars\",\n        \"maxicode\",\n        \"msi\",\n        \"pdf417\",\n        \"pdf417macro\",\n        \"plessey\",\n        \"postauscust2\",\n        \"postauscust3\",\n        \"postausreplypaid\",\n        \"postausstandard\",\n        \"postukrm4scc\",\n        \"postusdpbc\",\n        \"postusimb\",\n        \"postusstandard\",\n        \"postus5zip\",\n        \"qrcode\",\n        \"rfid\",\n        \"rss14\",\n        \"rss14expanded\",\n        \"rss14limited\",\n        \"rss14stacked\",\n        \"rss14stackedomni\",\n        \"rss14truncated\",\n        \"telepen\",\n        \"ucc128\",\n        \"ucc128random\",\n        \"ucc128sscc\",\n        \"upca\",\n        \"upcaadd2\",\n        \"upcaadd5\",\n        \"upcapwcd\",\n        \"upce\",\n        \"upceadd2\",\n        \"upceadd5\",\n        \"upcean2\",\n        \"upcean5\",\n        \"upsmaxicode\",\n      ]\n    );\n    this.upsMode = getStringOption(attributes.upsMode, [\n      \"usCarrier\",\n      \"internationalCarrier\",\n      \"secureSymbol\",\n      \"standardSymbol\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\n    this.encrypt = null;\n    this.extras = null;\n  }\n}\n\nclass Bind extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"bind\", /* hasChildren = */ true);\n    this.match = getStringOption(attributes.match, [\n      \"once\",\n      \"dataRef\",\n      \"global\",\n      \"none\",\n    ]);\n    this.ref = attributes.ref || \"\";\n    this.picture = null;\n  }\n}\n\nclass BindItems extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"bindItems\");\n    this.connection = attributes.connection || \"\";\n    this.labelRef = attributes.labelRef || \"\";\n    this.ref = attributes.ref || \"\";\n    this.valueRef = attributes.valueRef || \"\";\n  }\n}\n\nclass Bookend extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"bookend\");\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass BooleanElement extends Option01 {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"boolean\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n  }\n}\n\nclass Border extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"border\", /* hasChildren = */ true);\n    this.break = getStringOption(attributes.break, [\"close\", \"open\"]);\n    this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.corner = new XFAObjectArray(4);\n    this.edge = new XFAObjectArray(4);\n    this.extras = null;\n    this.fill = null;\n    this.margin = null;\n  }\n\n  [$getExtra]() {\n    if (!this[$extra]) {\n      const edges = this.edge.children.slice();\n      if (edges.length < 4) {\n        const defaultEdge = edges[edges.length - 1] || new Edge({});\n        for (let i = edges.length; i < 4; i++) {\n          edges.push(defaultEdge);\n        }\n      }\n\n      const widths = edges.map(edge => edge.thickness);\n      const insets = [0, 0, 0, 0];\n      if (this.margin) {\n        insets[0] = this.margin.topInset;\n        insets[1] = this.margin.rightInset;\n        insets[2] = this.margin.bottomInset;\n        insets[3] = this.margin.leftInset;\n      }\n      this[$extra] = { widths, insets, edges };\n    }\n    return this[$extra];\n  }\n\n  [$toStyle]() {\n    // TODO: incomplete (hand).\n    const { edges } = this[$getExtra]();\n    const edgeStyles = edges.map(node => {\n      const style = node[$toStyle]();\n      style.color = style.color || \"#000000\";\n      return style;\n    });\n\n    const style = Object.create(null);\n    if (this.margin) {\n      Object.assign(style, this.margin[$toStyle]());\n    }\n\n    if (this.fill && this.fill.presence === \"visible\") {\n      Object.assign(style, this.fill[$toStyle]());\n    }\n\n    if (this.corner.children.some(node => node.radius !== 0)) {\n      const cornerStyles = this.corner.children.map(node => node[$toStyle]());\n      if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n        const last = cornerStyles[cornerStyles.length - 1];\n        for (let i = cornerStyles.length; i < 4; i++) {\n          cornerStyles.push(last);\n        }\n      }\n\n      style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n    }\n\n    switch (this.presence) {\n      case \"invisible\":\n      case \"hidden\":\n        style.borderStyle = \"\";\n        break;\n      case \"inactive\":\n        style.borderStyle = \"none\";\n        break;\n      default:\n        style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n        break;\n    }\n\n    style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n    style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n\n    return style;\n  }\n}\n\nclass Break extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"break\", /* hasChildren = */ true);\n    this.after = getStringOption(attributes.after, [\n      \"auto\",\n      \"contentArea\",\n      \"pageArea\",\n      \"pageEven\",\n      \"pageOdd\",\n    ]);\n    this.afterTarget = attributes.afterTarget || \"\";\n    this.before = getStringOption(attributes.before, [\n      \"auto\",\n      \"contentArea\",\n      \"pageArea\",\n      \"pageEven\",\n      \"pageOdd\",\n    ]);\n    this.beforeTarget = attributes.beforeTarget || \"\";\n    this.bookendLeader = attributes.bookendLeader || \"\";\n    this.bookendTrailer = attributes.bookendTrailer || \"\";\n    this.id = attributes.id || \"\";\n    this.overflowLeader = attributes.overflowLeader || \"\";\n    this.overflowTarget = attributes.overflowTarget || \"\";\n    this.overflowTrailer = attributes.overflowTrailer || \"\";\n    this.startNew = getInteger({\n      data: attributes.startNew,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n}\n\nclass BreakAfter extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"breakAfter\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.startNew = getInteger({\n      data: attributes.startNew,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.target = attributes.target || \"\";\n    this.targetType = getStringOption(attributes.targetType, [\n      \"auto\",\n      \"contentArea\",\n      \"pageArea\",\n    ]);\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.script = null;\n  }\n}\n\nclass BreakBefore extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"breakBefore\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.startNew = getInteger({\n      data: attributes.startNew,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.target = attributes.target || \"\";\n    this.targetType = getStringOption(attributes.targetType, [\n      \"auto\",\n      \"contentArea\",\n      \"pageArea\",\n    ]);\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.script = null;\n  }\n\n  [$toHTML](availableSpace) {\n    this[$extra] = {};\n    return HTMLResult.FAILURE;\n  }\n}\n\nclass Button extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"button\", /* hasChildren = */ true);\n    this.highlight = getStringOption(attributes.highlight, [\n      \"inverted\",\n      \"none\",\n      \"outline\",\n      \"push\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: highlight.\n\n    const parent = this[$getParent]();\n    const grandpa = parent[$getParent]();\n    const htmlButton = {\n      name: \"button\",\n      attributes: {\n        id: this[$uid],\n        class: [\"xfaButton\"],\n        style: {},\n      },\n      children: [],\n    };\n\n    for (const event of grandpa.event.children) {\n      // if (true) break;\n      if (event.activity !== \"click\" || !event.script) {\n        continue;\n      }\n      const jsURL = recoverJsURL(event.script[$content]);\n      if (!jsURL) {\n        continue;\n      }\n      const href = fixURL(jsURL.url);\n      if (!href) {\n        continue;\n      }\n\n      // we've an url so generate a <a>\n      htmlButton.children.push({\n        name: \"a\",\n        attributes: {\n          id: \"link\" + this[$uid],\n          href,\n          newWindow: jsURL.newWindow,\n          class: [\"xfaLink\"],\n          style: {},\n        },\n        children: [],\n      });\n    }\n\n    return HTMLResult.success(htmlButton);\n  }\n}\n\nclass Calculate extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"calculate\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.override = getStringOption(attributes.override, [\n      \"disabled\",\n      \"error\",\n      \"ignore\",\n      \"warning\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.message = null;\n    this.script = null;\n  }\n}\n\nclass Caption extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"caption\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.placement = getStringOption(attributes.placement, [\n      \"left\",\n      \"bottom\",\n      \"inline\",\n      \"right\",\n      \"top\",\n    ]);\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.reserve = Math.ceil(getMeasurement(attributes.reserve));\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.font = null;\n    this.margin = null;\n    this.para = null;\n    this.value = null;\n  }\n\n  [$setValue](value) {\n    _setValue(this, value);\n  }\n\n  [$getExtra](availableSpace) {\n    if (!this[$extra]) {\n      let { width, height } = availableSpace;\n      switch (this.placement) {\n        case \"left\":\n        case \"right\":\n        case \"inline\":\n          width = this.reserve <= 0 ? width : this.reserve;\n          break;\n        case \"top\":\n        case \"bottom\":\n          height = this.reserve <= 0 ? height : this.reserve;\n          break;\n      }\n\n      this[$extra] = layoutNode(this, { width, height });\n    }\n    return this[$extra];\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    if (!this.value) {\n      return HTMLResult.EMPTY;\n    }\n\n    this[$pushPara]();\n    const value = this.value[$toHTML](availableSpace).html;\n\n    if (!value) {\n      this[$popPara]();\n      return HTMLResult.EMPTY;\n    }\n\n    const savedReserve = this.reserve;\n    if (this.reserve <= 0) {\n      const { w, h } = this[$getExtra](availableSpace);\n      switch (this.placement) {\n        case \"left\":\n        case \"right\":\n        case \"inline\":\n          this.reserve = w;\n          break;\n        case \"top\":\n        case \"bottom\":\n          this.reserve = h;\n          break;\n      }\n    }\n\n    const children = [];\n    if (typeof value === \"string\") {\n      children.push({\n        name: \"#text\",\n        value,\n      });\n    } else {\n      children.push(value);\n    }\n\n    const style = toStyle(this, \"font\", \"margin\", \"visibility\");\n    switch (this.placement) {\n      case \"left\":\n      case \"right\":\n        if (this.reserve > 0) {\n          style.width = measureToString(this.reserve);\n        }\n        break;\n      case \"top\":\n      case \"bottom\":\n        if (this.reserve > 0) {\n          style.height = measureToString(this.reserve);\n        }\n        break;\n    }\n\n    setPara(this, null, value);\n    this[$popPara]();\n\n    this.reserve = savedReserve;\n\n    return HTMLResult.success({\n      name: \"div\",\n      attributes: {\n        style,\n        class: [\"xfaCaption\"],\n      },\n      children,\n    });\n  }\n}\n\nclass Certificate extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"certificate\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Certificates extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"certificates\", /* hasChildren = */ true);\n    this.credentialServerPolicy = getStringOption(\n      attributes.credentialServerPolicy,\n      [\"optional\", \"required\"]\n    );\n    this.id = attributes.id || \"\";\n    this.url = attributes.url || \"\";\n    this.urlPolicy = attributes.urlPolicy || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.encryption = null;\n    this.issuers = null;\n    this.keyUsage = null;\n    this.oids = null;\n    this.signing = null;\n    this.subjectDNs = null;\n  }\n}\n\nclass CheckButton extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"checkButton\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.mark = getStringOption(attributes.mark, [\n      \"default\",\n      \"check\",\n      \"circle\",\n      \"cross\",\n      \"diamond\",\n      \"square\",\n      \"star\",\n    ]);\n    this.shape = getStringOption(attributes.shape, [\"square\", \"round\"]);\n    this.size = getMeasurement(attributes.size, \"10pt\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: border, shape and mark.\n\n    const style = toStyle(\"margin\");\n    const size = measureToString(this.size);\n\n    style.width = style.height = size;\n\n    let type;\n    let className;\n    let groupId;\n    const field = this[$getParent]()[$getParent]();\n    const items =\n      (field.items.children.length &&\n        field.items.children[0][$toHTML]().html) ||\n      [];\n    const exportedValue = {\n      on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n      off: (items[1] !== undefined ? items[1] : \"off\").toString(),\n    };\n\n    const value = (field.value && field.value[$text]()) || \"off\";\n    const checked = value === exportedValue.on || undefined;\n    const container = field[$getSubformParent]();\n    const fieldId = field[$uid];\n    let dataId;\n\n    if (container instanceof ExclGroup) {\n      groupId = container[$uid];\n      type = \"radio\";\n      className = \"xfaRadio\";\n      dataId = (container[$data] && container[$data][$uid]) || container[$uid];\n    } else {\n      type = \"checkbox\";\n      className = \"xfaCheckbox\";\n      dataId = (field[$data] && field[$data][$uid]) || field[$uid];\n    }\n\n    const input = {\n      name: \"input\",\n      attributes: {\n        class: [className],\n        style,\n        fieldId,\n        dataId,\n        type,\n        checked,\n        xfaOn: exportedValue.on,\n        xfaOff: exportedValue.off,\n        \"aria-label\": ariaLabel(field),\n      },\n    };\n\n    if (groupId) {\n      input.attributes.name = groupId;\n    }\n\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"],\n      },\n      children: [input],\n    });\n  }\n}\n\nclass ChoiceList extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"choiceList\", /* hasChildren = */ true);\n    this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n    this.id = attributes.id || \"\";\n    this.open = getStringOption(attributes.open, [\n      \"userControl\",\n      \"always\",\n      \"multiSelect\",\n      \"onEntry\",\n    ]);\n    this.textEntry = getInteger({\n      data: attributes.textEntry,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    const style = toStyle(this, \"border\", \"margin\");\n    const ui = this[$getParent]();\n    const field = ui[$getParent]();\n    const fontSize = (field.font && field.font.size) || 10;\n    const optionStyle = {\n      fontSize: `calc(${fontSize}px * var(--zoom-factor))`,\n    };\n    const children = [];\n\n    if (field.items.children.length > 0) {\n      const items = field.items;\n      let displayedIndex = 0;\n      let saveIndex = 0;\n      if (items.children.length === 2) {\n        displayedIndex = items.children[0].save;\n        saveIndex = 1 - displayedIndex;\n      }\n      const displayed = items.children[displayedIndex][$toHTML]().html;\n      const values = items.children[saveIndex][$toHTML]().html;\n\n      let selected = false;\n      const value = (field.value && field.value[$text]()) || \"\";\n      for (let i = 0, ii = displayed.length; i < ii; i++) {\n        const option = {\n          name: \"option\",\n          attributes: {\n            value: values[i] || displayed[i],\n            style: optionStyle,\n          },\n          value: displayed[i],\n        };\n        if (values[i] === value) {\n          option.attributes.selected = selected = true;\n        }\n        children.push(option);\n      }\n\n      if (!selected) {\n        children.splice(0, 0, {\n          name: \"option\",\n          attributes: {\n            hidden: true,\n            selected: true,\n          },\n          value: \" \",\n        });\n      }\n    }\n\n    const selectAttributes = {\n      class: [\"xfaSelect\"],\n      fieldId: field[$uid],\n      dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n      style,\n      \"aria-label\": ariaLabel(field),\n    };\n\n    if (this.open === \"multiSelect\") {\n      selectAttributes.multiple = true;\n    }\n\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"],\n      },\n      children: [\n        {\n          name: \"select\",\n          children,\n          attributes: selectAttributes,\n        },\n      ],\n    });\n  }\n}\n\nclass Color extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"color\", /* hasChildren = */ true);\n    this.cSpace = getStringOption(attributes.cSpace, [\"SRGB\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.value = attributes.value ? getColor(attributes.value) : \"\";\n    this.extras = null;\n  }\n\n  [$hasSettableValue]() {\n    return false;\n  }\n\n  [$toStyle]() {\n    return this.value\n      ? Util.makeHexColor(this.value.r, this.value.g, this.value.b)\n      : null;\n  }\n}\n\nclass Comb extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"comb\");\n    this.id = attributes.id || \"\";\n    this.numberOfCells = getInteger({\n      data: attributes.numberOfCells,\n      defaultValue: 0,\n      validate: x => x >= 0,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Connect extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"connect\", /* hasChildren = */ true);\n    this.connection = attributes.connection || \"\";\n    this.id = attributes.id || \"\";\n    this.ref = attributes.ref || \"\";\n    this.usage = getStringOption(attributes.usage, [\n      \"exportAndImport\",\n      \"exportOnly\",\n      \"importOnly\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.picture = null;\n  }\n}\n\nclass ContentArea extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"contentArea\", /* hasChildren = */ true);\n    this.h = getMeasurement(attributes.h);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = getMeasurement(attributes.w);\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.desc = null;\n    this.extras = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    const left = measureToString(this.x);\n    const top = measureToString(this.y);\n\n    const style = {\n      left,\n      top,\n      width: measureToString(this.w),\n      height: measureToString(this.h),\n    };\n\n    const classNames = [\"xfaContentarea\"];\n\n    if (isPrintOnly(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    return HTMLResult.success({\n      name: \"div\",\n      children: [],\n      attributes: {\n        style,\n        class: classNames,\n        id: this[$uid],\n      },\n    });\n  }\n}\n\nclass Corner extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"corner\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.inverted = getInteger({\n      data: attributes.inverted,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.join = getStringOption(attributes.join, [\"square\", \"round\"]);\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.radius = getMeasurement(attributes.radius);\n    this.stroke = getStringOption(attributes.stroke, [\n      \"solid\",\n      \"dashDot\",\n      \"dashDotDot\",\n      \"dashed\",\n      \"dotted\",\n      \"embossed\",\n      \"etched\",\n      \"lowered\",\n      \"raised\",\n    ]);\n    this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [$toStyle]() {\n    // In using CSS it's only possible to handle radius\n    // (at least with basic css).\n    // Is there a real use (interest ?) of all these properties ?\n    // Maybe it's possible to implement them using svg and border-image...\n    // TODO: implement all the missing properties.\n    const style = toStyle(this, \"visibility\");\n    style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n    return style;\n  }\n}\n\nclass DateElement extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"date\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    const date = this[$content].trim();\n    this[$content] = date ? new Date(date) : null;\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n  }\n}\n\nclass DateTime extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"dateTime\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    const date = this[$content].trim();\n    this[$content] = date ? new Date(date) : null;\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n  }\n}\n\nclass DateTimeEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"dateTimeEdit\", /* hasChildren = */ true);\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n      \"auto\",\n      \"off\",\n      \"on\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.picker = getStringOption(attributes.picker, [\"host\", \"none\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.comb = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    // When the picker is host we should use type=date for the input\n    // but we need to put the buttons outside the text-field.\n    const style = toStyle(this, \"border\", \"font\", \"margin\");\n    const field = this[$getParent]()[$getParent]();\n    const html = {\n      name: \"input\",\n      attributes: {\n        type: \"text\",\n        fieldId: field[$uid],\n        dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n        class: [\"xfaTextfield\"],\n        style,\n        \"aria-label\": ariaLabel(field),\n      },\n    };\n\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"],\n      },\n      children: [html],\n    });\n  }\n}\n\nclass Decimal extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"decimal\");\n    this.fracDigits = getInteger({\n      data: attributes.fracDigits,\n      defaultValue: 2,\n      validate: x => true,\n    });\n    this.id = attributes.id || \"\";\n    this.leadDigits = getInteger({\n      data: attributes.leadDigits,\n      defaultValue: -1,\n      validate: x => true,\n    });\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    const number = parseFloat(this[$content].trim());\n    this[$content] = isNaN(number) ? null : number;\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(\n      this[$content] !== null ? this[$content].toString() : \"\"\n    );\n  }\n}\n\nclass DefaultUi extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"defaultUi\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n}\n\nclass Desc extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"desc\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n}\n\nclass DigestMethod extends OptionObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"digestMethod\", [\n      \"\",\n      \"SHA1\",\n      \"SHA256\",\n      \"SHA512\",\n      \"RIPEMD160\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass DigestMethods extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"digestMethods\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.digestMethod = new XFAObjectArray();\n  }\n}\n\nclass Draw extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"draw\", /* hasChildren = */ true);\n    this.anchorType = getStringOption(attributes.anchorType, [\n      \"topLeft\",\n      \"bottomCenter\",\n      \"bottomLeft\",\n      \"bottomRight\",\n      \"middleCenter\",\n      \"middleLeft\",\n      \"middleRight\",\n      \"topCenter\",\n      \"topRight\",\n    ]);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1,\n    });\n    this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n    this.hAlign = getStringOption(attributes.hAlign, [\n      \"left\",\n      \"center\",\n      \"justify\",\n      \"justifyAll\",\n      \"radix\",\n      \"right\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.locale = attributes.locale || \"\";\n    this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n    this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n    this.minH = getMeasurement(attributes.minH, \"0pt\");\n    this.minW = getMeasurement(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.rotate = getInteger({\n      data: attributes.rotate,\n      defaultValue: 0,\n      validate: x => x % 90 === 0,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.assist = null;\n    this.border = null;\n    this.caption = null;\n    this.desc = null;\n    this.extras = null;\n    this.font = null;\n    this.keep = null;\n    this.margin = null;\n    this.para = null;\n    this.traversal = null;\n    this.ui = null;\n    this.value = null;\n    this.setProperty = new XFAObjectArray();\n  }\n\n  [$setValue](value) {\n    _setValue(this, value);\n  }\n\n  [$toHTML](availableSpace) {\n    setTabIndex(this);\n\n    if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n      return HTMLResult.EMPTY;\n    }\n\n    fixDimensions(this);\n    this[$pushPara]();\n\n    // If at least one dimension is missing and we've a text\n    // then we can guess it in laying out the text.\n    const savedW = this.w;\n    const savedH = this.h;\n    const { w, h, isBroken } = layoutNode(this, availableSpace);\n    if (w && this.w === \"\") {\n      // If the parent layout is lr-tb with a w=100 and we already have a child\n      // which takes 90 on the current line.\n      // If we have a text with a length (in px) equal to 100 then it'll be\n      // splitted into almost 10 chunks: so it won't be nice.\n      // So if we've potentially more width to provide in some parent containers\n      // let's increase it to give a chance to have a better rendering.\n      if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n        this[$popPara]();\n        return HTMLResult.FAILURE;\n      }\n\n      this.w = w;\n    }\n    if (h && this.h === \"\") {\n      this.h = h;\n    }\n\n    setFirstUnsplittable(this);\n    if (!checkDimensions(this, availableSpace)) {\n      this.w = savedW;\n      this.h = savedH;\n      this[$popPara]();\n      return HTMLResult.FAILURE;\n    }\n    unsetFirstUnsplittable(this);\n\n    const style = toStyle(\n      this,\n      \"font\",\n      \"hAlign\",\n      \"dimensions\",\n      \"position\",\n      \"presence\",\n      \"rotate\",\n      \"anchorType\",\n      \"border\",\n      \"margin\"\n    );\n\n    setMinMaxDimensions(this, style);\n\n    if (style.margin) {\n      style.padding = style.margin;\n      delete style.margin;\n    }\n\n    const classNames = [\"xfaDraw\"];\n    if (this.font) {\n      classNames.push(\"xfaFont\");\n    }\n    if (isPrintOnly(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    const attributes = {\n      style,\n      id: this[$uid],\n      class: classNames,\n    };\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    const html = {\n      name: \"div\",\n      attributes,\n      children: [],\n    };\n\n    applyAssist(this, attributes);\n\n    const bbox = computeBbox(this, html, availableSpace);\n\n    const value = this.value ? this.value[$toHTML](availableSpace).html : null;\n    if (value === null) {\n      this.w = savedW;\n      this.h = savedH;\n      this[$popPara]();\n      return HTMLResult.success(createWrapper(this, html), bbox);\n    }\n\n    html.children.push(value);\n    setPara(this, style, value);\n\n    this.w = savedW;\n    this.h = savedH;\n\n    this[$popPara]();\n    return HTMLResult.success(createWrapper(this, html), bbox);\n  }\n}\n\nclass Edge extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"edge\", /* hasChildren = */ true);\n    this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n    this.id = attributes.id || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.stroke = getStringOption(attributes.stroke, [\n      \"solid\",\n      \"dashDot\",\n      \"dashDotDot\",\n      \"dashed\",\n      \"dotted\",\n      \"embossed\",\n      \"etched\",\n      \"lowered\",\n      \"raised\",\n    ]);\n    this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [$toStyle]() {\n    // TODO: dashDot & dashDotDot.\n    const style = toStyle(this, \"visibility\");\n    Object.assign(style, {\n      linecap: this.cap,\n      width: measureToString(this.thickness),\n      color: this.color ? this.color[$toStyle]() : \"#000000\",\n      style: \"\",\n    });\n\n    if (this.presence !== \"visible\") {\n      style.style = \"none\";\n    } else {\n      switch (this.stroke) {\n        case \"solid\":\n          style.style = \"solid\";\n          break;\n        case \"dashDot\":\n          style.style = \"dashed\";\n          break;\n        case \"dashDotDot\":\n          style.style = \"dashed\";\n          break;\n        case \"dashed\":\n          style.style = \"dashed\";\n          break;\n        case \"dotted\":\n          style.style = \"dotted\";\n          break;\n        case \"embossed\":\n          style.style = \"ridge\";\n          break;\n        case \"etched\":\n          style.style = \"groove\";\n          break;\n        case \"lowered\":\n          style.style = \"inset\";\n          break;\n        case \"raised\":\n          style.style = \"outset\";\n          break;\n      }\n    }\n    return style;\n  }\n}\n\nclass Encoding extends OptionObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encoding\", [\n      \"adbe.x509.rsa_sha1\",\n      \"adbe.pkcs7.detached\",\n      \"adbe.pkcs7.sha1\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Encodings extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encodings\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.encoding = new XFAObjectArray();\n  }\n}\n\nclass Encrypt extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encrypt\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = null;\n  }\n}\n\nclass EncryptData extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryptData\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.operation = getStringOption(attributes.operation, [\n      \"encrypt\",\n      \"decrypt\",\n    ]);\n    this.target = attributes.target || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.filter = null;\n    this.manifest = null;\n  }\n}\n\nclass Encryption extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryption\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = new XFAObjectArray();\n  }\n}\n\nclass EncryptionMethod extends OptionObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryptionMethod\", [\n      \"\",\n      \"AES256-CBC\",\n      \"TRIPLEDES-CBC\",\n      \"AES128-CBC\",\n      \"AES192-CBC\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass EncryptionMethods extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryptionMethods\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.encryptionMethod = new XFAObjectArray();\n  }\n}\n\nclass Event extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"event\", /* hasChildren = */ true);\n    this.activity = getStringOption(attributes.activity, [\n      \"click\",\n      \"change\",\n      \"docClose\",\n      \"docReady\",\n      \"enter\",\n      \"exit\",\n      \"full\",\n      \"indexChange\",\n      \"initialize\",\n      \"mouseDown\",\n      \"mouseEnter\",\n      \"mouseExit\",\n      \"mouseUp\",\n      \"postExecute\",\n      \"postOpen\",\n      \"postPrint\",\n      \"postSave\",\n      \"postSign\",\n      \"postSubmit\",\n      \"preExecute\",\n      \"preOpen\",\n      \"prePrint\",\n      \"preSave\",\n      \"preSign\",\n      \"preSubmit\",\n      \"ready\",\n      \"validationState\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.listen = getStringOption(attributes.listen, [\n      \"refOnly\",\n      \"refAndDescendents\",\n    ]);\n    this.name = attributes.name || \"\";\n    this.ref = attributes.ref || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n\n    // One-of properties\n    this.encryptData = null;\n    this.execute = null;\n    this.script = null;\n    this.signData = null;\n    this.submit = null;\n  }\n}\n\nclass ExData extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"exData\");\n    this.contentType = attributes.contentType || \"\";\n    this.href = attributes.href || \"\";\n    this.id = attributes.id || \"\";\n    this.maxLength = getInteger({\n      data: attributes.maxLength,\n      defaultValue: -1,\n      validate: x => x >= -1,\n    });\n    this.name = attributes.name || \"\";\n    this.rid = attributes.rid || \"\";\n    this.transferEncoding = getStringOption(attributes.transferEncoding, [\n      \"none\",\n      \"base64\",\n      \"package\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$isCDATAXml]() {\n    return this.contentType === \"text/html\";\n  }\n\n  [$onChild](child) {\n    if (\n      this.contentType === \"text/html\" &&\n      child[$namespaceId] === NamespaceIds.xhtml.id\n    ) {\n      this[$content] = child;\n      return true;\n    }\n\n    if (this.contentType === \"text/xml\") {\n      this[$content] = child;\n      return true;\n    }\n\n    return false;\n  }\n\n  [$toHTML](availableSpace) {\n    if (this.contentType !== \"text/html\" || !this[$content]) {\n      // TODO: fix other cases.\n      return HTMLResult.EMPTY;\n    }\n\n    return this[$content][$toHTML](availableSpace);\n  }\n}\n\nclass ExObject extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"exObject\", /* hasChildren = */ true);\n    this.archive = attributes.archive || \"\";\n    this.classId = attributes.classId || \"\";\n    this.codeBase = attributes.codeBase || \"\";\n    this.codeType = attributes.codeType || \"\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.exObject = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n}\n\nclass ExclGroup extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"exclGroup\", /* hasChildren = */ true);\n    this.access = getStringOption(attributes.access, [\n      \"open\",\n      \"nonInteractive\",\n      \"protected\",\n      \"readOnly\",\n    ]);\n    this.accessKey = attributes.accessKey || \"\";\n    this.anchorType = getStringOption(attributes.anchorType, [\n      \"topLeft\",\n      \"bottomCenter\",\n      \"bottomLeft\",\n      \"bottomRight\",\n      \"middleCenter\",\n      \"middleLeft\",\n      \"middleRight\",\n      \"topCenter\",\n      \"topRight\",\n    ]);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1,\n    });\n    this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n    this.hAlign = getStringOption(attributes.hAlign, [\n      \"left\",\n      \"center\",\n      \"justify\",\n      \"justifyAll\",\n      \"radix\",\n      \"right\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.layout = getStringOption(attributes.layout, [\n      \"position\",\n      \"lr-tb\",\n      \"rl-row\",\n      \"rl-tb\",\n      \"row\",\n      \"table\",\n      \"tb\",\n    ]);\n    this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n    this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n    this.minH = getMeasurement(attributes.minH, \"0pt\");\n    this.minW = getMeasurement(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.assist = null;\n    this.bind = null;\n    this.border = null;\n    this.calculate = null;\n    this.caption = null;\n    this.desc = null;\n    this.extras = null;\n    this.margin = null;\n    this.para = null;\n    this.traversal = null;\n    this.validate = null;\n    this.connect = new XFAObjectArray();\n    this.event = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.setProperty = new XFAObjectArray();\n  }\n\n  [$isBindable]() {\n    return true;\n  }\n\n  [$hasSettableValue]() {\n    return true;\n  }\n\n  [$setValue](value) {\n    for (const field of this.field.children) {\n      if (!field.value) {\n        const nodeValue = new Value({});\n        field[$appendChild](nodeValue);\n        field.value = nodeValue;\n      }\n\n      field.value[$setValue](value);\n    }\n  }\n\n  [$isThereMoreWidth]() {\n    return (\n      (this.layout.endsWith(\"-tb\") &&\n        this[$extra].attempt === 0 &&\n        this[$extra].numberInLine > 0) ||\n      this[$getParent]()[$isThereMoreWidth]()\n    );\n  }\n\n  [$isSplittable]() {\n    // We cannot cache the result here because the contentArea\n    // can change.\n    const parent = this[$getSubformParent]();\n    if (!parent[$isSplittable]()) {\n      return false;\n    }\n\n    if (this[$extra]._isSplittable !== undefined) {\n      return this[$extra]._isSplittable;\n    }\n\n    if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n      this[$extra]._isSplittable = false;\n      return false;\n    }\n\n    if (\n      parent.layout &&\n      parent.layout.endsWith(\"-tb\") &&\n      parent[$extra].numberInLine !== 0\n    ) {\n      // See comment in Subform::[$isSplittable] for an explanation.\n      return false;\n    }\n\n    this[$extra]._isSplittable = true;\n    return true;\n  }\n\n  [$flushHTML]() {\n    return flushHTML(this);\n  }\n\n  [$addHTML](html, bbox) {\n    addHTML(this, html, bbox);\n  }\n\n  [$getAvailableSpace]() {\n    return getAvailableSpace(this);\n  }\n\n  [$toHTML](availableSpace) {\n    setTabIndex(this);\n    if (\n      this.presence === \"hidden\" ||\n      this.presence === \"inactive\" ||\n      this.h === 0 ||\n      this.w === 0\n    ) {\n      return HTMLResult.EMPTY;\n    }\n\n    fixDimensions(this);\n\n    const children = [];\n    const attributes = {\n      id: this[$uid],\n      class: [],\n    };\n\n    setAccess(this, attributes.class);\n\n    if (!this[$extra]) {\n      this[$extra] = Object.create(null);\n    }\n\n    Object.assign(this[$extra], {\n      children,\n      attributes,\n      attempt: 0,\n      line: null,\n      numberInLine: 0,\n      availableSpace: {\n        width: Math.min(this.w || Infinity, availableSpace.width),\n        height: Math.min(this.h || Infinity, availableSpace.height),\n      },\n      width: 0,\n      height: 0,\n      prevHeight: 0,\n      currentWidth: 0,\n    });\n\n    const isSplittable = this[$isSplittable]();\n    if (!isSplittable) {\n      setFirstUnsplittable(this);\n    }\n\n    if (!checkDimensions(this, availableSpace)) {\n      return HTMLResult.FAILURE;\n    }\n    const filter = new Set([\"field\"]);\n\n    if (this.layout.includes(\"row\")) {\n      const columnWidths = this[$getSubformParent]().columnWidths;\n      if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n        this[$extra].columnWidths = columnWidths;\n        this[$extra].currentColumn = 0;\n      }\n    }\n\n    const style = toStyle(\n      this,\n      \"anchorType\",\n      \"dimensions\",\n      \"position\",\n      \"presence\",\n      \"border\",\n      \"margin\",\n      \"hAlign\"\n    );\n    const classNames = [\"xfaExclgroup\"];\n    const cl = layoutClass(this);\n    if (cl) {\n      classNames.push(cl);\n    }\n\n    if (isPrintOnly(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    attributes.style = style;\n    attributes.class = classNames;\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    this[$pushPara]();\n    const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n    for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n      if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n        // If the layout is lr-tb then having attempt equals to\n        // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n        // on the next line so this on is empty.\n        this[$extra].numberInLine = 0;\n      }\n      const result = this[$childrenToHTML]({\n        filter,\n        include: true,\n      });\n      if (result.success) {\n        break;\n      }\n      if (result.isBreak()) {\n        this[$popPara]();\n        return result;\n      }\n      if (\n        isLrTb &&\n        this[$extra].attempt === 0 &&\n        this[$extra].numberInLine === 0 &&\n        !this[$getTemplateRoot]()[$extra].noLayoutFailure\n      ) {\n        // See comment in Subform::[$toHTML].\n        this[$extra].attempt = maxRun;\n        break;\n      }\n    }\n\n    this[$popPara]();\n\n    if (!isSplittable) {\n      unsetFirstUnsplittable(this);\n    }\n\n    if (this[$extra].attempt === maxRun) {\n      if (!isSplittable) {\n        delete this[$extra];\n      }\n      return HTMLResult.FAILURE;\n    }\n\n    let marginH = 0;\n    let marginV = 0;\n    if (this.margin) {\n      marginH = this.margin.leftInset + this.margin.rightInset;\n      marginV = this.margin.topInset + this.margin.bottomInset;\n    }\n\n    const width = Math.max(this[$extra].width + marginH, this.w || 0);\n    const height = Math.max(this[$extra].height + marginV, this.h || 0);\n    const bbox = [this.x, this.y, width, height];\n\n    if (this.w === \"\") {\n      style.width = measureToString(width);\n    }\n    if (this.h === \"\") {\n      style.height = measureToString(height);\n    }\n\n    const html = {\n      name: \"div\",\n      attributes,\n      children,\n    };\n\n    applyAssist(this, attributes);\n\n    delete this[$extra];\n\n    return HTMLResult.success(createWrapper(this, html), bbox);\n  }\n}\n\nclass Execute extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"execute\");\n    this.connection = attributes.connection || \"\";\n    this.executeType = getStringOption(attributes.executeType, [\n      \"import\",\n      \"remerge\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.runAt = getStringOption(attributes.runAt, [\n      \"client\",\n      \"both\",\n      \"server\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Extras extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"extras\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.extras = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n\n  // (Spec) The XFA template grammar defines the extras and desc elements,\n  // which can be used to add human-readable or machine-readable\n  // data to a template.\n}\n\nclass Field extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"field\", /* hasChildren = */ true);\n    this.access = getStringOption(attributes.access, [\n      \"open\",\n      \"nonInteractive\",\n      \"protected\",\n      \"readOnly\",\n    ]);\n    this.accessKey = attributes.accessKey || \"\";\n    this.anchorType = getStringOption(attributes.anchorType, [\n      \"topLeft\",\n      \"bottomCenter\",\n      \"bottomLeft\",\n      \"bottomRight\",\n      \"middleCenter\",\n      \"middleLeft\",\n      \"middleRight\",\n      \"topCenter\",\n      \"topRight\",\n    ]);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1,\n    });\n    this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n    this.hAlign = getStringOption(attributes.hAlign, [\n      \"left\",\n      \"center\",\n      \"justify\",\n      \"justifyAll\",\n      \"radix\",\n      \"right\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.locale = attributes.locale || \"\";\n    this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n    this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n    this.minH = getMeasurement(attributes.minH, \"0pt\");\n    this.minW = getMeasurement(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.rotate = getInteger({\n      data: attributes.rotate,\n      defaultValue: 0,\n      validate: x => x % 90 === 0,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.assist = null;\n    this.bind = null;\n    this.border = null;\n    this.calculate = null;\n    this.caption = null;\n    this.desc = null;\n    this.extras = null;\n    this.font = null;\n    this.format = null;\n    // For a choice list, one list is used to have display entries\n    // and the other for the exported values\n    this.items = new XFAObjectArray(2);\n    this.keep = null;\n    this.margin = null;\n    this.para = null;\n    this.traversal = null;\n    this.ui = null;\n    this.validate = null;\n    this.value = null;\n    this.bindItems = new XFAObjectArray();\n    this.connect = new XFAObjectArray();\n    this.event = new XFAObjectArray();\n    this.setProperty = new XFAObjectArray();\n  }\n\n  [$isBindable]() {\n    return true;\n  }\n\n  [$setValue](value) {\n    _setValue(this, value);\n  }\n\n  [$toHTML](availableSpace) {\n    setTabIndex(this);\n\n    if (!this.ui) {\n      // It's allowed to not have an ui, specs say:\n      //   If the UI element contains no children or is not present,\n      //   the application chooses a default user interface for the\n      //   container, based on the type of the container's content.\n\n      this.ui = new Ui({});\n      this.ui[$globalData] = this[$globalData];\n      this[$appendChild](this.ui);\n      let node;\n\n      // The items element can have 2 element max and\n      // according to the items specs it's likely a good\n      // way to guess the correct ui type.\n      switch (this.items.children.length) {\n        case 0:\n          node = new TextEdit({});\n          this.ui.textEdit = node;\n          break;\n        case 1:\n          node = new CheckButton({});\n          this.ui.checkButton = node;\n          break;\n        case 2:\n          node = new ChoiceList({});\n          this.ui.choiceList = node;\n          break;\n      }\n      this.ui[$appendChild](node);\n    }\n\n    if (\n      !this.ui ||\n      this.presence === \"hidden\" ||\n      this.presence === \"inactive\" ||\n      this.h === 0 ||\n      this.w === 0\n    ) {\n      return HTMLResult.EMPTY;\n    }\n\n    if (this.caption) {\n      // Maybe we already tried to layout this field with\n      // another availableSpace, so to avoid to use the cached\n      // value just delete it.\n      delete this.caption[$extra];\n    }\n\n    this[$pushPara]();\n\n    const caption = this.caption\n      ? this.caption[$toHTML](availableSpace).html\n      : null;\n    const savedW = this.w;\n    const savedH = this.h;\n    let marginH = 0;\n    let marginV = 0;\n    if (this.margin) {\n      marginH = this.margin.leftInset + this.margin.rightInset;\n      marginV = this.margin.topInset + this.margin.bottomInset;\n    }\n\n    let borderDims = null;\n    if (this.w === \"\" || this.h === \"\") {\n      let width = null;\n      let height = null;\n\n      let uiW = 0;\n      let uiH = 0;\n      if (this.ui.checkButton) {\n        uiW = uiH = this.ui.checkButton.size;\n      } else {\n        const { w, h } = layoutNode(this, availableSpace);\n        if (w !== null) {\n          uiW = w;\n          uiH = h;\n        } else {\n          uiH = getMetrics(this.font, /* real = */ true).lineNoGap;\n        }\n      }\n\n      borderDims = getBorderDims(this.ui[$getExtra]());\n      uiW += borderDims.w;\n      uiH += borderDims.h;\n\n      if (this.caption) {\n        const { w, h, isBroken } = this.caption[$getExtra](availableSpace);\n        // See comment in Draw::[$toHTML] to have an explanation\n        // about this line.\n        if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n          this[$popPara]();\n          return HTMLResult.FAILURE;\n        }\n\n        width = w;\n        height = h;\n\n        switch (this.caption.placement) {\n          case \"left\":\n          case \"right\":\n          case \"inline\":\n            width += uiW;\n            break;\n          case \"top\":\n          case \"bottom\":\n            height += uiH;\n            break;\n        }\n      } else {\n        width = uiW;\n        height = uiH;\n      }\n\n      if (width && this.w === \"\") {\n        width += marginH;\n        this.w = Math.min(\n          this.maxW <= 0 ? Infinity : this.maxW,\n          this.minW + 1 < width ? width : this.minW\n        );\n      }\n\n      if (height && this.h === \"\") {\n        height += marginV;\n        this.h = Math.min(\n          this.maxH <= 0 ? Infinity : this.maxH,\n          this.minH + 1 < height ? height : this.minH\n        );\n      }\n    }\n\n    this[$popPara]();\n\n    fixDimensions(this);\n\n    setFirstUnsplittable(this);\n    if (!checkDimensions(this, availableSpace)) {\n      this.w = savedW;\n      this.h = savedH;\n      this[$popPara]();\n      return HTMLResult.FAILURE;\n    }\n    unsetFirstUnsplittable(this);\n\n    const style = toStyle(\n      this,\n      \"font\",\n      \"dimensions\",\n      \"position\",\n      \"rotate\",\n      \"anchorType\",\n      \"presence\",\n      \"margin\",\n      \"hAlign\"\n    );\n\n    setMinMaxDimensions(this, style);\n\n    const classNames = [\"xfaField\"];\n    // If no font, font properties are inherited.\n    if (this.font) {\n      classNames.push(\"xfaFont\");\n    }\n\n    if (isPrintOnly(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    const attributes = {\n      style,\n      id: this[$uid],\n      class: classNames,\n    };\n\n    if (style.margin) {\n      style.padding = style.margin;\n      delete style.margin;\n    }\n\n    setAccess(this, classNames);\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    const children = [];\n    const html = {\n      name: \"div\",\n      attributes,\n      children,\n    };\n\n    applyAssist(this, attributes);\n\n    const borderStyle = this.border ? this.border[$toStyle]() : null;\n    const bbox = computeBbox(this, html, availableSpace);\n    const ui = this.ui[$toHTML]().html;\n    if (!ui) {\n      Object.assign(style, borderStyle);\n      return HTMLResult.success(createWrapper(this, html), bbox);\n    }\n\n    if (this[$tabIndex]) {\n      if (ui.children && ui.children[0]) {\n        ui.children[0].attributes.tabindex = this[$tabIndex];\n      } else {\n        ui.attributes.tabindex = this[$tabIndex];\n      }\n    }\n\n    if (!ui.attributes.style) {\n      ui.attributes.style = Object.create(null);\n    }\n\n    let aElement = null;\n\n    if (this.ui.button) {\n      if (ui.children.length === 1) {\n        [aElement] = ui.children.splice(0, 1);\n      }\n      Object.assign(ui.attributes.style, borderStyle);\n    } else {\n      Object.assign(style, borderStyle);\n    }\n\n    children.push(ui);\n\n    if (this.value) {\n      if (this.ui.imageEdit) {\n        ui.children.push(this.value[$toHTML]().html);\n      } else if (!this.ui.button) {\n        let value = \"\";\n        if (this.value.exData) {\n          value = this.value.exData[$text]();\n        } else if (this.value.text) {\n          value = this.value.text[$getExtra]();\n        } else {\n          const htmlValue = this.value[$toHTML]().html;\n          if (htmlValue !== null) {\n            value = htmlValue.children[0].value;\n          }\n        }\n        if (this.ui.textEdit && this.value.text && this.value.text.maxChars) {\n          ui.children[0].attributes.maxLength = this.value.text.maxChars;\n        }\n\n        if (value) {\n          if (this.ui.numericEdit) {\n            value = parseFloat(value);\n            value = isNaN(value) ? \"\" : value.toString();\n          }\n\n          if (ui.children[0].name === \"textarea\") {\n            ui.children[0].attributes.textContent = value;\n          } else {\n            ui.children[0].attributes.value = value;\n          }\n        }\n      }\n    }\n\n    if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) {\n      borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\n\n      let captionHeight = 0;\n      if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n        captionHeight = this.caption.reserve;\n        if (captionHeight <= 0) {\n          captionHeight = this.caption[$getExtra](availableSpace).h;\n        }\n        const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n        ui.children[0].attributes.style.height = measureToString(inputHeight);\n      } else {\n        ui.children[0].attributes.style.height = \"100%\";\n      }\n    }\n\n    if (aElement) {\n      ui.children.push(aElement);\n    }\n\n    if (!caption) {\n      if (ui.attributes.class) {\n        // Even if no caption this class will help to center the ui.\n        ui.attributes.class.push(\"xfaLeft\");\n      }\n      this.w = savedW;\n      this.h = savedH;\n\n      return HTMLResult.success(createWrapper(this, html), bbox);\n    }\n\n    if (this.ui.button) {\n      if (style.padding) {\n        delete style.padding;\n      }\n      if (caption.name === \"div\") {\n        caption.name = \"span\";\n      }\n      ui.children.push(caption);\n      return HTMLResult.success(html, bbox);\n    } else if (this.ui.checkButton) {\n      caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n    }\n\n    if (!ui.attributes.class) {\n      ui.attributes.class = [];\n    }\n\n    ui.children.splice(0, 0, caption);\n\n    switch (this.caption.placement) {\n      case \"left\":\n        ui.attributes.class.push(\"xfaLeft\");\n        break;\n      case \"right\":\n        ui.attributes.class.push(\"xfaRight\");\n        break;\n      case \"top\":\n        ui.attributes.class.push(\"xfaTop\");\n        break;\n      case \"bottom\":\n        ui.attributes.class.push(\"xfaBottom\");\n        break;\n      case \"inline\":\n        // TODO;\n        ui.attributes.class.push(\"xfaLeft\");\n        break;\n    }\n\n    this.w = savedW;\n    this.h = savedH;\n    return HTMLResult.success(createWrapper(this, html), bbox);\n  }\n}\n\nclass Fill extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"fill\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n\n    // One-of properties or none\n    this.linear = null;\n    this.pattern = null;\n    this.radial = null;\n    this.solid = null;\n    this.stipple = null;\n  }\n\n  [$toStyle]() {\n    const parent = this[$getParent]();\n    const grandpa = parent[$getParent]();\n    const ggrandpa = grandpa[$getParent]();\n    const style = Object.create(null);\n\n    // Use for color, i.e. #...\n    let propName = \"color\";\n\n    // Use for non-color, i.e. gradient, radial-gradient...\n    let altPropName = propName;\n\n    if (parent instanceof Border) {\n      propName = \"background-color\";\n      altPropName = \"background\";\n      if (ggrandpa instanceof Ui) {\n        // The default fill color is white.\n        style.backgroundColor = \"white\";\n      }\n    }\n    if (parent instanceof Rectangle || parent instanceof Arc) {\n      propName = altPropName = \"fill\";\n      style.fill = \"white\";\n    }\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (name === \"extras\" || name === \"color\") {\n        continue;\n      }\n      const obj = this[name];\n      if (!(obj instanceof XFAObject)) {\n        continue;\n      }\n\n      const color = obj[$toStyle](this.color);\n      if (color) {\n        style[color.startsWith(\"#\") ? propName : altPropName] = color;\n      }\n      return style;\n    }\n\n    if (this.color && this.color.value) {\n      const color = this.color[$toStyle]();\n      style[color.startsWith(\"#\") ? propName : altPropName] = color;\n    }\n\n    return style;\n  }\n}\n\nclass Filter extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"filter\", /* hasChildren = */ true);\n    this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\n      \"\",\n      \"required\",\n      \"optional\",\n      \"none\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.version = getInteger({\n      data: this.version,\n      defaultValue: 5,\n      validate: x => x >= 1 && x <= 5,\n    });\n    this.appearanceFilter = null;\n    this.certificates = null;\n    this.digestMethods = null;\n    this.encodings = null;\n    this.encryptionMethods = null;\n    this.handler = null;\n    this.lockDocument = null;\n    this.mdp = null;\n    this.reasons = null;\n    this.timeStamp = null;\n  }\n}\n\nclass Float extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"float\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    const number = parseFloat(this[$content].trim());\n    this[$content] = isNaN(number) ? null : number;\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(\n      this[$content] !== null ? this[$content].toString() : \"\"\n    );\n  }\n}\n\nclass Font extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"font\", /* hasChildren = */ true);\n    this.baselineShift = getMeasurement(attributes.baselineShift);\n    this.fontHorizontalScale = getFloat({\n      data: attributes.fontHorizontalScale,\n      defaultValue: 100,\n      validate: x => x >= 0,\n    });\n    this.fontVerticalScale = getFloat({\n      data: attributes.fontVerticalScale,\n      defaultValue: 100,\n      validate: x => x >= 0,\n    });\n    this.id = attributes.id || \"\";\n    this.kerningMode = getStringOption(attributes.kerningMode, [\n      \"none\",\n      \"pair\",\n    ]);\n    this.letterSpacing = getMeasurement(attributes.letterSpacing, \"0\");\n    this.lineThrough = getInteger({\n      data: attributes.lineThrough,\n      defaultValue: 0,\n      validate: x => x === 1 || x === 2,\n    });\n    this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\n      \"all\",\n      \"word\",\n    ]);\n    this.overline = getInteger({\n      data: attributes.overline,\n      defaultValue: 0,\n      validate: x => x === 1 || x === 2,\n    });\n    this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\n      \"all\",\n      \"word\",\n    ]);\n    this.posture = getStringOption(attributes.posture, [\"normal\", \"italic\"]);\n    this.size = getMeasurement(attributes.size, \"10pt\");\n    this.typeface = attributes.typeface || \"Courier\";\n    this.underline = getInteger({\n      data: attributes.underline,\n      defaultValue: 0,\n      validate: x => x === 1 || x === 2,\n    });\n    this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\n      \"all\",\n      \"word\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.weight = getStringOption(attributes.weight, [\"normal\", \"bold\"]);\n    this.extras = null;\n    this.fill = null;\n  }\n\n  [$clean](builder) {\n    super[$clean](builder);\n    this[$globalData].usedTypefaces.add(this.typeface);\n  }\n\n  [$toStyle]() {\n    const style = toStyle(this, \"fill\");\n    const color = style.color;\n    if (color) {\n      if (color === \"#000000\") {\n        // Default font color.\n        delete style.color;\n      } else if (!color.startsWith(\"#\")) {\n        // We've a gradient which is not possible for a font color\n        // so use a workaround.\n        style.background = color;\n        style.backgroundClip = \"text\";\n        style.color = \"transparent\";\n      }\n    }\n\n    if (this.baselineShift) {\n      style.verticalAlign = measureToString(this.baselineShift);\n    }\n\n    // TODO: fontHorizontalScale\n    // TODO: fontVerticalScale\n\n    style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n    style.letterSpacing = measureToString(this.letterSpacing);\n\n    if (this.lineThrough !== 0) {\n      style.textDecoration = \"line-through\";\n      if (this.lineThrough === 2) {\n        style.textDecorationStyle = \"double\";\n      }\n    }\n\n    // TODO: lineThroughPeriod\n\n    if (this.overline !== 0) {\n      style.textDecoration = \"overline\";\n      if (this.overline === 2) {\n        style.textDecorationStyle = \"double\";\n      }\n    }\n\n    // TODO: overlinePeriod\n\n    style.fontStyle = this.posture;\n    style.fontSize = measureToString(0.99 * this.size);\n\n    setFontFamily(this, this, this[$globalData].fontFinder, style);\n\n    if (this.underline !== 0) {\n      style.textDecoration = \"underline\";\n      if (this.underline === 2) {\n        style.textDecorationStyle = \"double\";\n      }\n    }\n\n    // TODO: underlinePeriod\n\n    style.fontWeight = this.weight;\n\n    return style;\n  }\n}\n\nclass Format extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"format\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.picture = null;\n  }\n}\n\nclass Handler extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"handler\");\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Hyphenation extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"hyphenation\");\n    this.excludeAllCaps = getInteger({\n      data: attributes.excludeAllCaps,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.excludeInitialCap = getInteger({\n      data: attributes.excludeInitialCap,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.hyphenate = getInteger({\n      data: attributes.hyphenate,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.id = attributes.id || \"\";\n    this.pushCharacterCount = getInteger({\n      data: attributes.pushCharacterCount,\n      defaultValue: 3,\n      validate: x => x >= 0,\n    });\n    this.remainCharacterCount = getInteger({\n      data: attributes.remainCharacterCount,\n      defaultValue: 3,\n      validate: x => x >= 0,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.wordCharacterCount = getInteger({\n      data: attributes.wordCharacterCount,\n      defaultValue: 7,\n      validate: x => x >= 0,\n    });\n  }\n}\n\nclass Image extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"image\");\n    this.aspect = getStringOption(attributes.aspect, [\n      \"fit\",\n      \"actual\",\n      \"height\",\n      \"none\",\n      \"width\",\n    ]);\n    this.contentType = attributes.contentType || \"\";\n    this.href = attributes.href || \"\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.transferEncoding = getStringOption(attributes.transferEncoding, [\n      \"base64\",\n      \"none\",\n      \"package\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$toHTML]() {\n    if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n      return HTMLResult.EMPTY;\n    }\n\n    let buffer =\n      this[$globalData].images && this[$globalData].images.get(this.href);\n    if (!buffer && (this.href || !this[$content])) {\n      // In general, we don't get remote data and use what we have\n      // in the pdf itself, so no picture for non null href.\n      return HTMLResult.EMPTY;\n    }\n\n    if (!buffer && this.transferEncoding === \"base64\") {\n      buffer = stringToBytes(atob(this[$content]));\n    }\n\n    if (!buffer) {\n      return HTMLResult.EMPTY;\n    }\n\n    if (!this.contentType) {\n      for (const [header, type] of IMAGES_HEADERS) {\n        if (\n          buffer.length > header.length &&\n          header.every((x, i) => x === buffer[i])\n        ) {\n          this.contentType = type;\n          break;\n        }\n      }\n      if (!this.contentType) {\n        return HTMLResult.EMPTY;\n      }\n    }\n\n    // TODO: Firefox doesn't support natively tiff (and tif) format.\n    const blob = new Blob([buffer], { type: this.contentType });\n    let style;\n    switch (this.aspect) {\n      case \"fit\":\n      case \"actual\":\n        // TODO: check what to do with actual.\n        // Normally we should return {auto, auto} for it but\n        // it implies some wrong rendering (see xfa_bug1716816.pdf).\n        break;\n      case \"height\":\n        style = {\n          height: \"100%\",\n          objectFit: \"fill\",\n        };\n        break;\n      case \"none\":\n        style = {\n          width: \"100%\",\n          height: \"100%\",\n          objectFit: \"fill\",\n        };\n        break;\n      case \"width\":\n        style = {\n          width: \"100%\",\n          objectFit: \"fill\",\n        };\n        break;\n    }\n    const parent = this[$getParent]();\n    return HTMLResult.success({\n      name: \"img\",\n      attributes: {\n        class: [\"xfaImage\"],\n        style,\n        src: URL.createObjectURL(blob),\n        alt: parent ? ariaLabel(parent[$getParent]()) : null,\n      },\n    });\n  }\n}\n\nclass ImageEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"imageEdit\", /* hasChildren = */ true);\n    this.data = getStringOption(attributes.data, [\"link\", \"embed\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [$toHTML](availableSpace) {\n    if (this.data === \"embed\") {\n      return HTMLResult.success({\n        name: \"div\",\n        children: [],\n        attributes: {},\n      });\n    }\n\n    return HTMLResult.EMPTY;\n  }\n}\n\nclass Integer extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"integer\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    const number = parseInt(this[$content].trim(), 10);\n    this[$content] = isNaN(number) ? null : number;\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(\n      this[$content] !== null ? this[$content].toString() : \"\"\n    );\n  }\n}\n\nclass Issuers extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"issuers\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = new XFAObjectArray();\n  }\n}\n\nclass Items extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"items\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.ref = attributes.ref || \"\";\n    this.save = getInteger({\n      data: attributes.save,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n\n  [$toHTML]() {\n    const output = [];\n    for (const child of this[$getChildren]()) {\n      output.push(child[$text]());\n    }\n    return HTMLResult.success(output);\n  }\n}\n\nclass Keep extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"keep\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    const options = [\"none\", \"contentArea\", \"pageArea\"];\n    this.intact = getStringOption(attributes.intact, options);\n    this.next = getStringOption(attributes.next, options);\n    this.previous = getStringOption(attributes.previous, options);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n}\n\nclass KeyUsage extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"keyUsage\");\n    const options = [\"\", \"yes\", \"no\"];\n    this.crlSign = getStringOption(attributes.crlSign, options);\n    this.dataEncipherment = getStringOption(\n      attributes.dataEncipherment,\n      options\n    );\n    this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n    this.digitalSignature = getStringOption(\n      attributes.digitalSignature,\n      options\n    );\n    this.encipherOnly = getStringOption(attributes.encipherOnly, options);\n    this.id = attributes.id || \"\";\n    this.keyAgreement = getStringOption(attributes.keyAgreement, options);\n    this.keyCertSign = getStringOption(attributes.keyCertSign, options);\n    this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\n    this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Line extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"line\", /* hasChildren = */ true);\n    this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.slope = getStringOption(attributes.slope, [\"\\\\\", \"/\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.edge = null;\n  }\n\n  [$toHTML]() {\n    const parent = this[$getParent]()[$getParent]();\n    const edge = this.edge ? this.edge : new Edge({});\n    const edgeStyle = edge[$toStyle]();\n    const style = Object.create(null);\n    const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n    style.strokeWidth = measureToString(thickness);\n    style.stroke = edgeStyle.color;\n    let x1, y1, x2, y2;\n    let width = \"100%\";\n    let height = \"100%\";\n\n    if (parent.w <= thickness) {\n      [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n      width = style.strokeWidth;\n    } else if (parent.h <= thickness) {\n      [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n      height = style.strokeWidth;\n    } else {\n      if (this.slope === \"\\\\\") {\n        [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n      } else {\n        [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n      }\n    }\n\n    const line = {\n      name: \"line\",\n      attributes: {\n        xmlns: SVG_NS,\n        x1,\n        y1,\n        x2,\n        y2,\n        style,\n      },\n    };\n\n    const svg = {\n      name: \"svg\",\n      children: [line],\n      attributes: {\n        xmlns: SVG_NS,\n        width,\n        height,\n        style: {\n          overflow: \"visible\",\n        },\n      },\n    };\n\n    if (hasMargin(parent)) {\n      return HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          style: {\n            display: \"inline\",\n            width: \"100%\",\n            height: \"100%\",\n          },\n        },\n        children: [svg],\n      });\n    }\n\n    svg.attributes.style.position = \"absolute\";\n    return HTMLResult.success(svg);\n  }\n}\n\nclass Linear extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"linear\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\n      \"toRight\",\n      \"toBottom\",\n      \"toLeft\",\n      \"toTop\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [$toStyle](startColor) {\n    startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n    const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n    const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n    return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n  }\n}\n\nclass LockDocument extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"lockDocument\");\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n  }\n}\n\nclass Manifest extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"manifest\", /* hasChildren = */ true);\n    this.action = getStringOption(attributes.action, [\n      \"include\",\n      \"all\",\n      \"exclude\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.ref = new XFAObjectArray();\n  }\n}\n\nclass Margin extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"margin\", /* hasChildren = */ true);\n    this.bottomInset = getMeasurement(attributes.bottomInset, \"0\");\n    this.id = attributes.id || \"\";\n    this.leftInset = getMeasurement(attributes.leftInset, \"0\");\n    this.rightInset = getMeasurement(attributes.rightInset, \"0\");\n    this.topInset = getMeasurement(attributes.topInset, \"0\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n  [$toStyle]() {\n    return {\n      margin:\n        measureToString(this.topInset) +\n        \" \" +\n        measureToString(this.rightInset) +\n        \" \" +\n        measureToString(this.bottomInset) +\n        \" \" +\n        measureToString(this.leftInset),\n    };\n  }\n}\n\nclass Mdp extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"mdp\");\n    this.id = attributes.id || \"\";\n    this.permissions = getInteger({\n      data: attributes.permissions,\n      defaultValue: 2,\n      validate: x => x === 1 || x === 3,\n    });\n    this.signatureType = getStringOption(attributes.signatureType, [\n      \"filler\",\n      \"author\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Medium extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"medium\");\n    this.id = attributes.id || \"\";\n    this.imagingBBox = getBBox(attributes.imagingBBox);\n    this.long = getMeasurement(attributes.long);\n    this.orientation = getStringOption(attributes.orientation, [\n      \"portrait\",\n      \"landscape\",\n    ]);\n    this.short = getMeasurement(attributes.short);\n    this.stock = attributes.stock || \"\";\n    this.trayIn = getStringOption(attributes.trayIn, [\n      \"auto\",\n      \"delegate\",\n      \"pageFront\",\n    ]);\n    this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Message extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"message\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.text = new XFAObjectArray();\n  }\n}\n\nclass NumericEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"numericEdit\", /* hasChildren = */ true);\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n      \"auto\",\n      \"off\",\n      \"on\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.comb = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    const style = toStyle(this, \"border\", \"font\", \"margin\");\n    const field = this[$getParent]()[$getParent]();\n    const html = {\n      name: \"input\",\n      attributes: {\n        type: \"text\",\n        fieldId: field[$uid],\n        dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n        class: [\"xfaTextfield\"],\n        style,\n        \"aria-label\": ariaLabel(field),\n      },\n    };\n\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"],\n      },\n      children: [html],\n    });\n  }\n}\n\nclass Occur extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"occur\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.initial =\n      attributes.initial !== \"\"\n        ? getInteger({\n            data: attributes.initial,\n            defaultValue: \"\",\n            validate: x => true,\n          })\n        : \"\";\n    this.max =\n      attributes.max !== \"\"\n        ? getInteger({\n            data: attributes.max,\n            defaultValue: 1,\n            validate: x => true,\n          })\n        : \"\";\n    this.min =\n      attributes.min !== \"\"\n        ? getInteger({\n            data: attributes.min,\n            defaultValue: 1,\n            validate: x => true,\n          })\n        : \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n  [$clean]() {\n    const parent = this[$getParent]();\n    const originalMin = this.min;\n\n    if (this.min === \"\") {\n      this.min =\n        parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n    }\n    if (this.max === \"\") {\n      if (originalMin === \"\") {\n        this.max =\n          parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n      } else {\n        this.max = this.min;\n      }\n    }\n\n    if (this.max !== -1 && this.max < this.min) {\n      this.max = this.min;\n    }\n\n    if (this.initial === \"\") {\n      this.initial = parent instanceof Template ? 1 : this.min;\n    }\n  }\n}\n\nclass Oid extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"oid\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Oids extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"oids\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.oid = new XFAObjectArray();\n  }\n}\n\nclass Overflow extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"overflow\");\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.target = attributes.target || \"\";\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$getExtra]() {\n    if (!this[$extra]) {\n      const parent = this[$getParent]();\n      const root = this[$getTemplateRoot]();\n      const target = root[$searchNode](this.target, parent);\n      const leader = root[$searchNode](this.leader, parent);\n      const trailer = root[$searchNode](this.trailer, parent);\n      this[$extra] = {\n        target: (target && target[0]) || null,\n        leader: (leader && leader[0]) || null,\n        trailer: (trailer && trailer[0]) || null,\n        addLeader: false,\n        addTrailer: false,\n      };\n    }\n    return this[$extra];\n  }\n}\n\nclass PageArea extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"pageArea\", /* hasChildren = */ true);\n    this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\n      \"any\",\n      \"blank\",\n      \"notBlank\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.initialNumber = getInteger({\n      data: attributes.initialNumber,\n      defaultValue: 1,\n      validate: x => true,\n    });\n    this.name = attributes.name || \"\";\n    this.numbered = getInteger({\n      data: attributes.numbered,\n      defaultValue: 1,\n      validate: x => true,\n    });\n    this.oddOrEven = getStringOption(attributes.oddOrEven, [\n      \"any\",\n      \"even\",\n      \"odd\",\n    ]);\n    this.pagePosition = getStringOption(attributes.pagePosition, [\n      \"any\",\n      \"first\",\n      \"last\",\n      \"only\",\n      \"rest\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.desc = null;\n    this.extras = null;\n    this.medium = null;\n    this.occur = null;\n    this.area = new XFAObjectArray();\n    this.contentArea = new XFAObjectArray();\n    this.draw = new XFAObjectArray();\n    this.exclGroup = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n  }\n\n  [$isUsable]() {\n    if (!this[$extra]) {\n      this[$extra] = {\n        numberOfUse: 0,\n      };\n      return true;\n    }\n    return (\n      !this.occur ||\n      this.occur.max === -1 ||\n      this[$extra].numberOfUse < this.occur.max\n    );\n  }\n\n  [$cleanPage]() {\n    delete this[$extra];\n  }\n\n  [$getNextPage]() {\n    if (!this[$extra]) {\n      this[$extra] = {\n        numberOfUse: 0,\n      };\n    }\n\n    const parent = this[$getParent]();\n    if (parent.relation === \"orderedOccurrence\") {\n      if (this[$isUsable]()) {\n        this[$extra].numberOfUse += 1;\n        return this;\n      }\n    }\n\n    return parent[$getNextPage]();\n  }\n\n  [$getAvailableSpace]() {\n    return this[$extra].space || { width: 0, height: 0 };\n  }\n\n  [$toHTML]() {\n    // TODO: incomplete.\n    if (!this[$extra]) {\n      this[$extra] = {\n        numberOfUse: 1,\n      };\n    }\n\n    const children = [];\n    this[$extra].children = children;\n\n    const style = Object.create(null);\n    if (this.medium && this.medium.short && this.medium.long) {\n      style.width = measureToString(this.medium.short);\n      style.height = measureToString(this.medium.long);\n      this[$extra].space = {\n        width: this.medium.short,\n        height: this.medium.long,\n      };\n      if (this.medium.orientation === \"landscape\") {\n        const x = style.width;\n        style.width = style.height;\n        style.height = x;\n        this[$extra].space = {\n          width: this.medium.long,\n          height: this.medium.short,\n        };\n      }\n    } else {\n      warn(\"XFA - No medium specified in pageArea: please file a bug.\");\n    }\n\n    this[$childrenToHTML]({\n      filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n      include: true,\n    });\n\n    // contentarea must be the last container to be sure it is\n    // on top of the others.\n    this[$childrenToHTML]({\n      filter: new Set([\"contentArea\"]),\n      include: true,\n    });\n\n    return HTMLResult.success({\n      name: \"div\",\n      children,\n      attributes: {\n        class: [\"xfaPage\"],\n        id: this[$uid],\n        style,\n        xfaName: this.name,\n      },\n    });\n  }\n}\n\nclass PageSet extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"pageSet\", /* hasChildren = */ true);\n    this.duplexImposition = getStringOption(attributes.duplexImposition, [\n      \"longEdge\",\n      \"shortEdge\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relation = getStringOption(attributes.relation, [\n      \"orderedOccurrence\",\n      \"duplexPaginated\",\n      \"simplexPaginated\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.occur = null;\n    this.pageArea = new XFAObjectArray();\n    this.pageSet = new XFAObjectArray();\n  }\n\n  [$cleanPage]() {\n    for (const page of this.pageArea.children) {\n      page[$cleanPage]();\n    }\n    for (const page of this.pageSet.children) {\n      page[$cleanPage]();\n    }\n  }\n\n  [$isUsable]() {\n    return (\n      !this.occur ||\n      this.occur.max === -1 ||\n      this[$extra].numberOfUse < this.occur.max\n    );\n  }\n\n  [$getNextPage]() {\n    if (!this[$extra]) {\n      this[$extra] = {\n        numberOfUse: 1,\n        pageIndex: -1,\n        pageSetIndex: -1,\n      };\n    }\n\n    if (this.relation === \"orderedOccurrence\") {\n      if (this[$extra].pageIndex + 1 < this.pageArea.children.length) {\n        this[$extra].pageIndex += 1;\n        const pageArea = this.pageArea.children[this[$extra].pageIndex];\n        return pageArea[$getNextPage]();\n      }\n\n      if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n        this[$extra].pageSetIndex += 1;\n        return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\n      }\n\n      if (this[$isUsable]()) {\n        this[$extra].numberOfUse += 1;\n        this[$extra].pageIndex = -1;\n        this[$extra].pageSetIndex = -1;\n        return this[$getNextPage]();\n      }\n\n      const parent = this[$getParent]();\n      if (parent instanceof PageSet) {\n        return parent[$getNextPage]();\n      }\n\n      this[$cleanPage]();\n      return this[$getNextPage]();\n    }\n    const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\n    const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n    const position = pageNumber === 0 ? \"first\" : \"rest\";\n\n    let page = this.pageArea.children.find(\n      p => p.oddOrEven === parity && p.pagePosition === position\n    );\n    if (page) {\n      return page;\n    }\n\n    page = this.pageArea.children.find(\n      p => p.oddOrEven === \"any\" && p.pagePosition === position\n    );\n    if (page) {\n      return page;\n    }\n\n    page = this.pageArea.children.find(\n      p => p.oddOrEven === \"any\" && p.pagePosition === \"any\"\n    );\n    if (page) {\n      return page;\n    }\n\n    return this.pageArea.children[0];\n  }\n}\n\nclass Para extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"para\", /* hasChildren = */ true);\n    this.hAlign = getStringOption(attributes.hAlign, [\n      \"left\",\n      \"center\",\n      \"justify\",\n      \"justifyAll\",\n      \"radix\",\n      \"right\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.lineHeight = attributes.lineHeight\n      ? getMeasurement(attributes.lineHeight, \"0pt\")\n      : \"\";\n    this.marginLeft = attributes.marginLeft\n      ? getMeasurement(attributes.marginLeft, \"0pt\")\n      : \"\";\n    this.marginRight = attributes.marginRight\n      ? getMeasurement(attributes.marginRight, \"0pt\")\n      : \"\";\n    this.orphans = getInteger({\n      data: attributes.orphans,\n      defaultValue: 0,\n      validate: x => x >= 0,\n    });\n    this.preserve = attributes.preserve || \"\";\n    this.radixOffset = attributes.radixOffset\n      ? getMeasurement(attributes.radixOffset, \"0pt\")\n      : \"\";\n    this.spaceAbove = attributes.spaceAbove\n      ? getMeasurement(attributes.spaceAbove, \"0pt\")\n      : \"\";\n    this.spaceBelow = attributes.spaceBelow\n      ? getMeasurement(attributes.spaceBelow, \"0pt\")\n      : \"\";\n    this.tabDefault = attributes.tabDefault\n      ? getMeasurement(this.tabDefault)\n      : \"\";\n    this.tabStops = (attributes.tabStops || \"\")\n      .trim()\n      .split(/\\s+/)\n      .map((x, i) => (i % 2 === 1 ? getMeasurement(x) : x));\n    this.textIndent = attributes.textIndent\n      ? getMeasurement(attributes.textIndent, \"0pt\")\n      : \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.vAlign = getStringOption(attributes.vAlign, [\n      \"top\",\n      \"bottom\",\n      \"middle\",\n    ]);\n    this.widows = getInteger({\n      data: attributes.widows,\n      defaultValue: 0,\n      validate: x => x >= 0,\n    });\n    this.hyphenation = null;\n  }\n\n  [$toStyle]() {\n    const style = toStyle(this, \"hAlign\");\n    if (this.marginLeft !== \"\") {\n      style.paddingLeft = measureToString(this.marginLeft);\n    }\n    if (this.marginRight !== \"\") {\n      style.paddingight = measureToString(this.marginRight);\n    }\n    if (this.spaceAbove !== \"\") {\n      style.paddingTop = measureToString(this.spaceAbove);\n    }\n    if (this.spaceBelow !== \"\") {\n      style.paddingBottom = measureToString(this.spaceBelow);\n    }\n    if (this.textIndent !== \"\") {\n      style.textIndent = measureToString(this.textIndent);\n      fixTextIndent(style);\n    }\n\n    if (this.lineHeight > 0) {\n      style.lineHeight = measureToString(this.lineHeight);\n    }\n\n    if (this.tabDefault !== \"\") {\n      style.tabSize = measureToString(this.tabDefault);\n    }\n\n    if (this.tabStops.length > 0) {\n      // TODO\n    }\n\n    if (this.hyphenatation) {\n      Object.assign(style, this.hyphenatation[$toStyle]());\n    }\n\n    return style;\n  }\n}\n\nclass PasswordEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"passwordEdit\", /* hasChildren = */ true);\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n      \"auto\",\n      \"off\",\n      \"on\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.passwordChar = attributes.passwordChar || \"*\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n}\n\nclass Pattern extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"pattern\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\n      \"crossHatch\",\n      \"crossDiagonal\",\n      \"diagonalLeft\",\n      \"diagonalRight\",\n      \"horizontal\",\n      \"vertical\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [$toStyle](startColor) {\n    startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n    const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n    const width = 5;\n    const cmd = \"repeating-linear-gradient\";\n    const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${\n      2 * width\n    }px`;\n    switch (this.type) {\n      case \"crossHatch\":\n        return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n      case \"crossDiagonal\":\n        return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n      case \"diagonalLeft\":\n        return `${cmd}(45deg,${colors})`;\n      case \"diagonalRight\":\n        return `${cmd}(-45deg,${colors})`;\n      case \"horizontal\":\n        return `${cmd}(to top,${colors})`;\n      case \"vertical\":\n        return `${cmd}(to right,${colors})`;\n    }\n\n    return \"\";\n  }\n}\n\nclass Picture extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"picture\");\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Proto extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"proto\", /* hasChildren = */ true);\n    this.appearanceFilter = new XFAObjectArray();\n    this.arc = new XFAObjectArray();\n    this.area = new XFAObjectArray();\n    this.assist = new XFAObjectArray();\n    this.barcode = new XFAObjectArray();\n    this.bindItems = new XFAObjectArray();\n    this.bookend = new XFAObjectArray();\n    this.boolean = new XFAObjectArray();\n    this.border = new XFAObjectArray();\n    this.break = new XFAObjectArray();\n    this.breakAfter = new XFAObjectArray();\n    this.breakBefore = new XFAObjectArray();\n    this.button = new XFAObjectArray();\n    this.calculate = new XFAObjectArray();\n    this.caption = new XFAObjectArray();\n    this.certificate = new XFAObjectArray();\n    this.certificates = new XFAObjectArray();\n    this.checkButton = new XFAObjectArray();\n    this.choiceList = new XFAObjectArray();\n    this.color = new XFAObjectArray();\n    this.comb = new XFAObjectArray();\n    this.connect = new XFAObjectArray();\n    this.contentArea = new XFAObjectArray();\n    this.corner = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.dateTimeEdit = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.defaultUi = new XFAObjectArray();\n    this.desc = new XFAObjectArray();\n    this.digestMethod = new XFAObjectArray();\n    this.digestMethods = new XFAObjectArray();\n    this.draw = new XFAObjectArray();\n    this.edge = new XFAObjectArray();\n    this.encoding = new XFAObjectArray();\n    this.encodings = new XFAObjectArray();\n    this.encrypt = new XFAObjectArray();\n    this.encryptData = new XFAObjectArray();\n    this.encryption = new XFAObjectArray();\n    this.encryptionMethod = new XFAObjectArray();\n    this.encryptionMethods = new XFAObjectArray();\n    this.event = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.exObject = new XFAObjectArray();\n    this.exclGroup = new XFAObjectArray();\n    this.execute = new XFAObjectArray();\n    this.extras = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.fill = new XFAObjectArray();\n    this.filter = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.font = new XFAObjectArray();\n    this.format = new XFAObjectArray();\n    this.handler = new XFAObjectArray();\n    this.hyphenation = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.imageEdit = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.issuers = new XFAObjectArray();\n    this.items = new XFAObjectArray();\n    this.keep = new XFAObjectArray();\n    this.keyUsage = new XFAObjectArray();\n    this.line = new XFAObjectArray();\n    this.linear = new XFAObjectArray();\n    this.lockDocument = new XFAObjectArray();\n    this.manifest = new XFAObjectArray();\n    this.margin = new XFAObjectArray();\n    this.mdp = new XFAObjectArray();\n    this.medium = new XFAObjectArray();\n    this.message = new XFAObjectArray();\n    this.numericEdit = new XFAObjectArray();\n    this.occur = new XFAObjectArray();\n    this.oid = new XFAObjectArray();\n    this.oids = new XFAObjectArray();\n    this.overflow = new XFAObjectArray();\n    this.pageArea = new XFAObjectArray();\n    this.pageSet = new XFAObjectArray();\n    this.para = new XFAObjectArray();\n    this.passwordEdit = new XFAObjectArray();\n    this.pattern = new XFAObjectArray();\n    this.picture = new XFAObjectArray();\n    this.radial = new XFAObjectArray();\n    this.reason = new XFAObjectArray();\n    this.reasons = new XFAObjectArray();\n    this.rectangle = new XFAObjectArray();\n    this.ref = new XFAObjectArray();\n    this.script = new XFAObjectArray();\n    this.setProperty = new XFAObjectArray();\n    this.signData = new XFAObjectArray();\n    this.signature = new XFAObjectArray();\n    this.signing = new XFAObjectArray();\n    this.solid = new XFAObjectArray();\n    this.speak = new XFAObjectArray();\n    this.stipple = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n    this.subformSet = new XFAObjectArray();\n    this.subjectDN = new XFAObjectArray();\n    this.subjectDNs = new XFAObjectArray();\n    this.submit = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.textEdit = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n    this.timeStamp = new XFAObjectArray();\n    this.toolTip = new XFAObjectArray();\n    this.traversal = new XFAObjectArray();\n    this.traverse = new XFAObjectArray();\n    this.ui = new XFAObjectArray();\n    this.validate = new XFAObjectArray();\n    this.value = new XFAObjectArray();\n    this.variables = new XFAObjectArray();\n  }\n}\n\nclass Radial extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"radial\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"toEdge\", \"toCenter\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [$toStyle](startColor) {\n    startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n    const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n    const colors =\n      this.type === \"toEdge\"\n        ? `${startColor},${endColor}`\n        : `${endColor},${startColor}`;\n    return `radial-gradient(circle at center, ${colors})`;\n  }\n}\n\nclass Reason extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"reason\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Reasons extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"reasons\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.reason = new XFAObjectArray();\n  }\n}\n\nclass Rectangle extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"rectangle\", /* hasChildren = */ true);\n    this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.corner = new XFAObjectArray(4);\n    this.edge = new XFAObjectArray(4);\n    this.fill = null;\n  }\n\n  [$toHTML]() {\n    const edge = this.edge.children.length\n      ? this.edge.children[0]\n      : new Edge({});\n    const edgeStyle = edge[$toStyle]();\n    const style = Object.create(null);\n    if (this.fill && this.fill.presence === \"visible\") {\n      Object.assign(style, this.fill[$toStyle]());\n    } else {\n      style.fill = \"transparent\";\n    }\n    style.strokeWidth = measureToString(\n      edge.presence === \"visible\" ? edge.thickness : 0\n    );\n    style.stroke = edgeStyle.color;\n\n    const corner = this.corner.children.length\n      ? this.corner.children[0]\n      : new Corner({});\n    const cornerStyle = corner[$toStyle]();\n\n    const rect = {\n      name: \"rect\",\n      attributes: {\n        xmlns: SVG_NS,\n        width: \"100%\",\n        height: \"100%\",\n        x: 0,\n        y: 0,\n        rx: cornerStyle.radius,\n        ry: cornerStyle.radius,\n        style,\n      },\n    };\n\n    const svg = {\n      name: \"svg\",\n      children: [rect],\n      attributes: {\n        xmlns: SVG_NS,\n        style: {\n          overflow: \"visible\",\n        },\n        width: \"100%\",\n        height: \"100%\",\n      },\n    };\n\n    const parent = this[$getParent]()[$getParent]();\n    if (hasMargin(parent)) {\n      return HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          style: {\n            display: \"inline\",\n            width: \"100%\",\n            height: \"100%\",\n          },\n        },\n        children: [svg],\n      });\n    }\n\n    svg.attributes.style.position = \"absolute\";\n    return HTMLResult.success(svg);\n  }\n}\n\nclass RefElement extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"ref\");\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Script extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"script\");\n    this.binding = attributes.binding || \"\";\n    this.contentType = attributes.contentType || \"\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.runAt = getStringOption(attributes.runAt, [\n      \"client\",\n      \"both\",\n      \"server\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass SetProperty extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"setProperty\");\n    this.connection = attributes.connection || \"\";\n    this.ref = attributes.ref || \"\";\n    this.target = attributes.target || \"\";\n  }\n}\n\nclass SignData extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"signData\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.operation = getStringOption(attributes.operation, [\n      \"sign\",\n      \"clear\",\n      \"verify\",\n    ]);\n    this.ref = attributes.ref || \"\";\n    this.target = attributes.target || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.filter = null;\n    this.manifest = null;\n  }\n}\n\nclass Signature extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"signature\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.filter = null;\n    this.manifest = null;\n    this.margin = null;\n  }\n}\n\nclass Signing extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"signing\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = new XFAObjectArray();\n  }\n}\n\nclass Solid extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"solid\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n  [$toStyle](startColor) {\n    return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n  }\n}\n\nclass Speak extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"speak\");\n    this.disable = getInteger({\n      data: attributes.disable,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.id = attributes.id || \"\";\n    this.priority = getStringOption(attributes.priority, [\n      \"custom\",\n      \"caption\",\n      \"name\",\n      \"toolTip\",\n    ]);\n    this.rid = attributes.rid || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Stipple extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"stipple\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.rate = getInteger({\n      data: attributes.rate,\n      defaultValue: 50,\n      validate: x => x >= 0 && x <= 100,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [$toStyle](bgColor) {\n    const alpha = this.rate / 100;\n    return Util.makeHexColor(\n      Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha),\n      Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha),\n      Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)\n    );\n  }\n}\n\nclass Subform extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subform\", /* hasChildren = */ true);\n    this.access = getStringOption(attributes.access, [\n      \"open\",\n      \"nonInteractive\",\n      \"protected\",\n      \"readOnly\",\n    ]);\n    this.allowMacro = getInteger({\n      data: attributes.allowMacro,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.anchorType = getStringOption(attributes.anchorType, [\n      \"topLeft\",\n      \"bottomCenter\",\n      \"bottomLeft\",\n      \"bottomRight\",\n      \"middleCenter\",\n      \"middleLeft\",\n      \"middleRight\",\n      \"topCenter\",\n      \"topRight\",\n    ]);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1,\n    });\n    this.columnWidths = (attributes.columnWidths || \"\")\n      .trim()\n      .split(/\\s+/)\n      .map(x => (x === \"-1\" ? -1 : getMeasurement(x)));\n    this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n    this.hAlign = getStringOption(attributes.hAlign, [\n      \"left\",\n      \"center\",\n      \"justify\",\n      \"justifyAll\",\n      \"radix\",\n      \"right\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.layout = getStringOption(attributes.layout, [\n      \"position\",\n      \"lr-tb\",\n      \"rl-row\",\n      \"rl-tb\",\n      \"row\",\n      \"table\",\n      \"tb\",\n    ]);\n    this.locale = attributes.locale || \"\";\n    this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n    this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n    this.mergeMode = getStringOption(attributes.mergeMode, [\n      \"consumeData\",\n      \"matchTemplate\",\n    ]);\n    this.minH = getMeasurement(attributes.minH, \"0pt\");\n    this.minW = getMeasurement(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.restoreState = getStringOption(attributes.restoreState, [\n      \"manual\",\n      \"auto\",\n    ]);\n    this.scope = getStringOption(attributes.scope, [\"name\", \"none\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.assist = null;\n    this.bind = null;\n    this.bookend = null;\n    this.border = null;\n    this.break = null;\n    this.calculate = null;\n    this.desc = null;\n    this.extras = null;\n    this.keep = null;\n    this.margin = null;\n    this.occur = null;\n    this.overflow = null;\n    this.pageSet = null;\n    this.para = null;\n    this.traversal = null;\n    this.validate = null;\n    this.variables = null;\n    this.area = new XFAObjectArray();\n    this.breakAfter = new XFAObjectArray();\n    this.breakBefore = new XFAObjectArray();\n    this.connect = new XFAObjectArray();\n    this.draw = new XFAObjectArray();\n    this.event = new XFAObjectArray();\n    this.exObject = new XFAObjectArray();\n    this.exclGroup = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.proto = new XFAObjectArray();\n    this.setProperty = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n    this.subformSet = new XFAObjectArray();\n  }\n\n  [$getSubformParent]() {\n    const parent = this[$getParent]();\n    if (parent instanceof SubformSet) {\n      return parent[$getSubformParent]();\n    }\n    return parent;\n  }\n\n  [$isBindable]() {\n    return true;\n  }\n\n  [$isThereMoreWidth]() {\n    return (\n      (this.layout.endsWith(\"-tb\") &&\n        this[$extra].attempt === 0 &&\n        this[$extra].numberInLine > 0) ||\n      this[$getParent]()[$isThereMoreWidth]()\n    );\n  }\n\n  *[$getContainedChildren]() {\n    // This function is overriden in order to fake that subforms under\n    // this set are in fact under parent subform.\n    yield* getContainedChildren(this);\n  }\n\n  [$flushHTML]() {\n    return flushHTML(this);\n  }\n\n  [$addHTML](html, bbox) {\n    addHTML(this, html, bbox);\n  }\n\n  [$getAvailableSpace]() {\n    return getAvailableSpace(this);\n  }\n\n  [$isSplittable]() {\n    // We cannot cache the result here because the contentArea\n    // can change.\n    const parent = this[$getSubformParent]();\n    if (!parent[$isSplittable]()) {\n      return false;\n    }\n\n    if (this[$extra]._isSplittable !== undefined) {\n      return this[$extra]._isSplittable;\n    }\n\n    if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n      this[$extra]._isSplittable = false;\n      return false;\n    }\n\n    if (this.keep && this.keep.intact !== \"none\") {\n      this[$extra]._isSplittable = false;\n      return false;\n    }\n\n    if (\n      parent.layout &&\n      parent.layout.endsWith(\"-tb\") &&\n      parent[$extra].numberInLine !== 0\n    ) {\n      // If parent can fit in w=100 and there's already an element which takes\n      // 90 then we've 10 for this element. Suppose this element has a tb layout\n      // and 5 elements have a width of 7 and the 6th has a width of 20:\n      // then this element (and all its content) must move on the next line.\n      // If this element is splittable then the first 5 children will stay\n      // at the end of the line: we don't want that.\n      return false;\n    }\n\n    this[$extra]._isSplittable = true;\n\n    return true;\n  }\n\n  [$toHTML](availableSpace) {\n    setTabIndex(this);\n\n    if (this.break) {\n      // break element is deprecated so plug it on one of its replacement\n      // breakBefore or breakAfter.\n      if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n        const node = new BreakAfter({\n          targetType: this.break.after,\n          target: this.break.afterTarget,\n          startNew: this.break.startNew.toString(),\n        });\n        node[$globalData] = this[$globalData];\n        this[$appendChild](node);\n        this.breakAfter.push(node);\n      }\n\n      if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n        const node = new BreakBefore({\n          targetType: this.break.before,\n          target: this.break.beforeTarget,\n          startNew: this.break.startNew.toString(),\n        });\n        node[$globalData] = this[$globalData];\n        this[$appendChild](node);\n        this.breakBefore.push(node);\n      }\n\n      if (this.break.overflowTarget !== \"\") {\n        const node = new Overflow({\n          target: this.break.overflowTarget,\n          leader: this.break.overflowLeader,\n          trailer: this.break.overflowTrailer,\n        });\n        node[$globalData] = this[$globalData];\n        this[$appendChild](node);\n        this.overflow.push(node);\n      }\n\n      this[$removeChild](this.break);\n      this.break = null;\n    }\n\n    if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n      return HTMLResult.EMPTY;\n    }\n\n    if (\n      this.breakBefore.children.length > 1 ||\n      this.breakAfter.children.length > 1\n    ) {\n      // Specs are always talking about the breakBefore element\n      // and it doesn't really make sense to have several ones.\n      warn(\n        \"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\"\n      );\n    }\n\n    if (this.breakBefore.children.length >= 1) {\n      const breakBefore = this.breakBefore.children[0];\n      if (handleBreak(breakBefore)) {\n        return HTMLResult.breakNode(breakBefore);\n      }\n    }\n\n    if (this[$extra] && this[$extra].afterBreakAfter) {\n      return HTMLResult.EMPTY;\n    }\n\n    // TODO: incomplete.\n    fixDimensions(this);\n    const children = [];\n    const attributes = {\n      id: this[$uid],\n      class: [],\n    };\n\n    setAccess(this, attributes.class);\n\n    if (!this[$extra]) {\n      this[$extra] = Object.create(null);\n    }\n\n    Object.assign(this[$extra], {\n      children,\n      line: null,\n      attributes,\n      attempt: 0,\n      numberInLine: 0,\n      availableSpace: {\n        width: Math.min(this.w || Infinity, availableSpace.width),\n        height: Math.min(this.h || Infinity, availableSpace.height),\n      },\n      width: 0,\n      height: 0,\n      prevHeight: 0,\n      currentWidth: 0,\n    });\n\n    const root = this[$getTemplateRoot]();\n    const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n\n    const isSplittable = this[$isSplittable]();\n    if (!isSplittable) {\n      setFirstUnsplittable(this);\n    }\n\n    if (!checkDimensions(this, availableSpace)) {\n      return HTMLResult.FAILURE;\n    }\n\n    const filter = new Set([\n      \"area\",\n      \"draw\",\n      \"exclGroup\",\n      \"field\",\n      \"subform\",\n      \"subformSet\",\n    ]);\n\n    if (this.layout.includes(\"row\")) {\n      const columnWidths = this[$getSubformParent]().columnWidths;\n      if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n        this[$extra].columnWidths = columnWidths;\n        this[$extra].currentColumn = 0;\n      }\n    }\n\n    const style = toStyle(\n      this,\n      \"anchorType\",\n      \"dimensions\",\n      \"position\",\n      \"presence\",\n      \"border\",\n      \"margin\",\n      \"hAlign\"\n    );\n    const classNames = [\"xfaSubform\"];\n    const cl = layoutClass(this);\n    if (cl) {\n      classNames.push(cl);\n    }\n\n    attributes.style = style;\n    attributes.class = classNames;\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    if (this.overflow) {\n      const overflowExtra = this.overflow[$getExtra]();\n      if (overflowExtra.addLeader) {\n        overflowExtra.addLeader = false;\n        handleOverflow(this, overflowExtra.leader, availableSpace);\n      }\n    }\n\n    this[$pushPara]();\n    const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n    for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n      if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n        // If the layout is lr-tb then having attempt equals to\n        // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n        // on the next line so this on is empty.\n        this[$extra].numberInLine = 0;\n      }\n      const result = this[$childrenToHTML]({\n        filter,\n        include: true,\n      });\n      if (result.success) {\n        break;\n      }\n      if (result.isBreak()) {\n        this[$popPara]();\n        return result;\n      }\n      if (\n        isLrTb &&\n        this[$extra].attempt === 0 &&\n        this[$extra].numberInLine === 0 &&\n        !root[$extra].noLayoutFailure\n      ) {\n        // We're failing to put the first element on the line so no\n        // need to test on the next line.\n        // The goal is not only to avoid some useless checks but to avoid\n        // bugs too: if a descendant managed to put a node and failed\n        // on the next one, going to the next step here will imply to\n        // visit the descendant again, clear [$extra].children and restart\n        // on the failing node, consequently the first node just disappears\n        // because it has never been flushed.\n        this[$extra].attempt = maxRun;\n        break;\n      }\n    }\n\n    this[$popPara]();\n    if (!isSplittable) {\n      unsetFirstUnsplittable(this);\n    }\n    root[$extra].noLayoutFailure = savedNoLayoutFailure;\n\n    if (this[$extra].attempt === maxRun) {\n      if (this.overflow) {\n        this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n      }\n\n      if (!isSplittable) {\n        // Since a new try will happen in a new container with maybe\n        // new dimensions, we invalidate already layed out components.\n        delete this[$extra];\n      }\n      return HTMLResult.FAILURE;\n    }\n\n    if (this.overflow) {\n      const overflowExtra = this.overflow[$getExtra]();\n      if (overflowExtra.addTrailer) {\n        overflowExtra.addTrailer = false;\n        handleOverflow(this, overflowExtra.trailer, availableSpace);\n      }\n    }\n\n    let marginH = 0;\n    let marginV = 0;\n    if (this.margin) {\n      marginH = this.margin.leftInset + this.margin.rightInset;\n      marginV = this.margin.topInset + this.margin.bottomInset;\n    }\n\n    const width = Math.max(this[$extra].width + marginH, this.w || 0);\n    const height = Math.max(this[$extra].height + marginV, this.h || 0);\n    const bbox = [this.x, this.y, width, height];\n\n    if (this.w === \"\") {\n      style.width = measureToString(width);\n    }\n    if (this.h === \"\") {\n      style.height = measureToString(height);\n    }\n\n    if (\n      (style.width === \"0px\" || style.height === \"0px\") &&\n      children.length === 0\n    ) {\n      return HTMLResult.EMPTY;\n    }\n\n    const html = {\n      name: \"div\",\n      attributes,\n      children,\n    };\n\n    applyAssist(this, attributes);\n\n    const result = HTMLResult.success(createWrapper(this, html), bbox);\n\n    if (this.breakAfter.children.length >= 1) {\n      const breakAfter = this.breakAfter.children[0];\n      if (handleBreak(breakAfter)) {\n        this[$extra].afterBreakAfter = result;\n        return HTMLResult.breakNode(breakAfter);\n      }\n    }\n\n    delete this[$extra];\n\n    return result;\n  }\n}\n\nclass SubformSet extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subformSet\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relation = getStringOption(attributes.relation, [\n      \"ordered\",\n      \"choice\",\n      \"unordered\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.bookend = null;\n    this.break = null;\n    this.desc = null;\n    this.extras = null;\n    this.occur = null;\n    this.overflow = null;\n    this.breakAfter = new XFAObjectArray();\n    this.breakBefore = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n    this.subformSet = new XFAObjectArray();\n\n    // TODO: need to handle break stuff and relation.\n  }\n\n  *[$getContainedChildren]() {\n    // This function is overriden in order to fake that subforms under\n    // this set are in fact under parent subform.\n    yield* getContainedChildren(this);\n  }\n\n  [$getSubformParent]() {\n    let parent = this[$getParent]();\n    while (!(parent instanceof Subform)) {\n      parent = parent[$getParent]();\n    }\n    return parent;\n  }\n\n  [$isBindable]() {\n    return true;\n  }\n}\n\nclass SubjectDN extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subjectDN\");\n    this.delimiter = attributes.delimiter || \",\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    this[$content] = new Map(\n      this[$content].split(this.delimiter).map(kv => {\n        kv = kv.split(\"=\", 2);\n        kv[0] = kv[0].trim();\n        return kv;\n      })\n    );\n  }\n}\n\nclass SubjectDNs extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subjectDNs\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.subjectDN = new XFAObjectArray();\n  }\n}\n\nclass Submit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"submit\", /* hasChildren = */ true);\n    this.embedPDF = getInteger({\n      data: attributes.embedPDF,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.format = getStringOption(attributes.format, [\n      \"xdp\",\n      \"formdata\",\n      \"pdf\",\n      \"urlencoded\",\n      \"xfd\",\n      \"xml\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.target = attributes.target || \"\";\n    this.textEncoding = getKeyword({\n      data: attributes.textEncoding\n        ? attributes.textEncoding.toLowerCase()\n        : \"\",\n      defaultValue: \"\",\n      validate: k =>\n        [\n          \"utf-8\",\n          \"big-five\",\n          \"fontspecific\",\n          \"gbk\",\n          \"gb-18030\",\n          \"gb-2312\",\n          \"ksc-5601\",\n          \"none\",\n          \"shift-jis\",\n          \"ucs-2\",\n          \"utf-16\",\n        ].includes(k) || k.match(/iso-8859-\\d{2}/),\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.xdpContent = attributes.xdpContent || \"\";\n    this.encrypt = null;\n    this.encryptData = new XFAObjectArray();\n    this.signData = new XFAObjectArray();\n  }\n}\n\nclass Template extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"template\", /* hasChildren = */ true);\n    this.baseProfile = getStringOption(attributes.baseProfile, [\n      \"full\",\n      \"interactiveForms\",\n    ]);\n    this.extras = null;\n\n    // Spec is unclear:\n    //  A container element that describes a single subform capable of\n    //  enclosing other containers.\n    // Can we have more than one subform ?\n    this.subform = new XFAObjectArray();\n  }\n\n  [$finalize]() {\n    if (this.subform.children.length === 0) {\n      warn(\"XFA - No subforms in template node.\");\n    }\n    if (this.subform.children.length >= 2) {\n      warn(\"XFA - Several subforms in template node: please file a bug.\");\n    }\n    this[$tabIndex] = DEFAULT_TAB_INDEX;\n  }\n\n  [$isSplittable]() {\n    return true;\n  }\n\n  [$searchNode](expr, container) {\n    if (expr.startsWith(\"#\")) {\n      // This is an id.\n      return [this[$ids].get(expr.slice(1))];\n    }\n    return searchNode(this, container, expr, true, true);\n  }\n\n  /**\n   * This function is a generator because the conversion into\n   * pages is done asynchronously and we want to save the state\n   * of the function where we were in the previous iteration.\n   */\n  *[$toPages]() {\n    if (!this.subform.children.length) {\n      return HTMLResult.success({\n        name: \"div\",\n        children: [],\n      });\n    }\n    this[$extra] = {\n      overflowNode: null,\n      firstUnsplittable: null,\n      currentContentArea: null,\n      currentPageArea: null,\n      noLayoutFailure: false,\n      pageNumber: 1,\n      pagePosition: \"first\",\n      oddOrEven: \"odd\",\n      blankOrNotBlank: \"nonBlank\",\n      paraStack: [],\n    };\n\n    const root = this.subform.children[0];\n    root.pageSet[$cleanPage]();\n\n    const pageAreas = root.pageSet.pageArea.children;\n    const mainHtml = {\n      name: \"div\",\n      children: [],\n    };\n\n    let pageArea = null;\n    let breakBefore = null;\n    let breakBeforeTarget = null;\n    if (root.breakBefore.children.length >= 1) {\n      breakBefore = root.breakBefore.children[0];\n      breakBeforeTarget = breakBefore.target;\n    } else if (\n      root.subform.children.length >= 1 &&\n      root.subform.children[0].breakBefore.children.length >= 1\n    ) {\n      breakBefore = root.subform.children[0].breakBefore.children[0];\n      breakBeforeTarget = breakBefore.target;\n    } else if (root.break && root.break.beforeTarget) {\n      breakBefore = root.break;\n      breakBeforeTarget = breakBefore.beforeTarget;\n    } else if (\n      root.subform.children.length >= 1 &&\n      root.subform.children[0].break &&\n      root.subform.children[0].break.beforeTarget\n    ) {\n      breakBefore = root.subform.children[0].break;\n      breakBeforeTarget = breakBefore.beforeTarget;\n    }\n\n    if (breakBefore) {\n      const target = this[$searchNode](\n        breakBeforeTarget,\n        breakBefore[$getParent]()\n      );\n      if (target instanceof PageArea) {\n        pageArea = target;\n        // Consume breakBefore.\n        breakBefore[$extra] = {};\n      }\n    }\n\n    if (!pageArea) {\n      pageArea = pageAreas[0];\n    }\n\n    pageArea[$extra] = {\n      numberOfUse: 1,\n    };\n\n    const pageAreaParent = pageArea[$getParent]();\n    pageAreaParent[$extra] = {\n      numberOfUse: 1,\n      pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n      pageSetIndex: 0,\n    };\n\n    let targetPageArea;\n    let leader = null;\n    let trailer = null;\n    let hasSomething = true;\n    let hasSomethingCounter = 0;\n    let startIndex = 0;\n\n    while (true) {\n      if (!hasSomething) {\n        mainHtml.children.pop();\n        // Nothing has been added in the previous page\n        if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n          warn(\"XFA - Something goes wrong: please file a bug.\");\n          return mainHtml;\n        }\n      } else {\n        hasSomethingCounter = 0;\n      }\n\n      targetPageArea = null;\n      this[$extra].currentPageArea = pageArea;\n      const page = pageArea[$toHTML]().html;\n      mainHtml.children.push(page);\n\n      if (leader) {\n        this[$extra].noLayoutFailure = true;\n        page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n        leader = null;\n      }\n\n      if (trailer) {\n        this[$extra].noLayoutFailure = true;\n        page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n        trailer = null;\n      }\n\n      const contentAreas = pageArea.contentArea.children;\n      const htmlContentAreas = page.children.filter(node =>\n        node.attributes.class.includes(\"xfaContentarea\")\n      );\n\n      hasSomething = false;\n      this[$extra].firstUnsplittable = null;\n      this[$extra].noLayoutFailure = false;\n\n      const flush = index => {\n        const html = root[$flushHTML]();\n        if (html) {\n          hasSomething =\n            hasSomething || (html.children && html.children.length !== 0);\n          htmlContentAreas[index].children.push(html);\n        }\n      };\n\n      for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n        const contentArea = (this[$extra].currentContentArea = contentAreas[i]);\n        const space = { width: contentArea.w, height: contentArea.h };\n        startIndex = 0;\n\n        if (leader) {\n          htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n          leader = null;\n        }\n\n        if (trailer) {\n          htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n          trailer = null;\n        }\n\n        const html = root[$toHTML](space);\n        if (html.success) {\n          if (html.html) {\n            hasSomething =\n              hasSomething ||\n              (html.html.children && html.html.children.length !== 0);\n            htmlContentAreas[i].children.push(html.html);\n          } else if (!hasSomething && mainHtml.children.length > 1) {\n            mainHtml.children.pop();\n          }\n          return mainHtml;\n        }\n\n        if (html.isBreak()) {\n          const node = html.breakNode;\n          flush(i);\n\n          if (node.targetType === \"auto\") {\n            continue;\n          }\n\n          if (node.leader) {\n            leader = this[$searchNode](node.leader, node[$getParent]());\n            leader = leader ? leader[0] : null;\n          }\n\n          if (node.trailer) {\n            trailer = this[$searchNode](node.trailer, node[$getParent]());\n            trailer = trailer ? trailer[0] : null;\n          }\n\n          if (node.targetType === \"pageArea\") {\n            targetPageArea = node[$extra].target;\n            i = Infinity;\n          } else if (!node[$extra].target) {\n            // We stay on the same page.\n            i = node[$extra].index;\n          } else {\n            targetPageArea = node[$extra].target;\n            startIndex = node[$extra].index + 1;\n            i = Infinity;\n          }\n\n          continue;\n        }\n\n        if (this[$extra].overflowNode) {\n          const node = this[$extra].overflowNode;\n          this[$extra].overflowNode = null;\n\n          const overflowExtra = node[$getExtra]();\n          const target = overflowExtra.target;\n          overflowExtra.addLeader = overflowExtra.leader !== null;\n          overflowExtra.addTrailer = overflowExtra.trailer !== null;\n\n          flush(i);\n\n          const currentIndex = i;\n\n          i = Infinity;\n          if (target instanceof PageArea) {\n            // We must stop the contentAreas filling and go to the next page.\n            targetPageArea = target;\n          } else if (target instanceof ContentArea) {\n            const index = contentAreas.findIndex(e => e === target);\n            if (index !== -1) {\n              if (index > currentIndex) {\n                // In the next loop iteration `i` will be incremented, note the\n                // `continue` just below, hence we need to subtract one here.\n                i = index - 1;\n              } else {\n                // The targetted contentArea has already been filled\n                // so create a new page.\n                startIndex = index;\n              }\n            } else {\n              targetPageArea = target[$getParent]();\n              startIndex = targetPageArea.contentArea.children.findIndex(\n                e => e === target\n              );\n            }\n          }\n          continue;\n        }\n\n        flush(i);\n      }\n\n      this[$extra].pageNumber += 1;\n      if (targetPageArea) {\n        if (targetPageArea[$isUsable]()) {\n          targetPageArea[$extra].numberOfUse += 1;\n        } else {\n          targetPageArea = null;\n        }\n      }\n      pageArea = targetPageArea || pageArea[$getNextPage]();\n      yield null;\n    }\n  }\n}\n\nclass Text extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"text\");\n    this.id = attributes.id || \"\";\n    this.maxChars = getInteger({\n      data: attributes.maxChars,\n      defaultValue: 0,\n      validate: x => x >= 0,\n    });\n    this.name = attributes.name || \"\";\n    this.rid = attributes.rid || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$acceptWhitespace]() {\n    return true;\n  }\n\n  [$onChild](child) {\n    if (child[$namespaceId] === NamespaceIds.xhtml.id) {\n      this[$content] = child;\n      return true;\n    }\n    warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\n    return false;\n  }\n\n  [$onText](str) {\n    if (this[$content] instanceof XFAObject) {\n      return;\n    }\n    super[$onText](str);\n  }\n\n  [$finalize]() {\n    if (typeof this[$content] === \"string\") {\n      this[$content] = this[$content].replace(/\\r\\n/g, \"\\n\");\n    }\n  }\n\n  [$getExtra]() {\n    if (typeof this[$content] === \"string\") {\n      return this[$content]\n        .split(/[\\u2029\\u2028\\n]/)\n        .reduce((acc, line) => {\n          if (line) {\n            acc.push(line);\n          }\n          return acc;\n        }, [])\n        .join(\"\\n\");\n    }\n    return this[$content][$text]();\n  }\n\n  [$toHTML](availableSpace) {\n    if (typeof this[$content] === \"string\") {\n      // \\u2028 is a line separator.\n      // \\u2029 is a paragraph separator.\n      const html = valueToHtml(this[$content]).html;\n\n      if (this[$content].includes(\"\\u2029\")) {\n        // We've plain text containing a paragraph separator\n        // so convert it into a set of <p>.\n        html.name = \"div\";\n        html.children = [];\n        this[$content]\n          .split(\"\\u2029\")\n          .map(para =>\n            // Convert a paragraph into a set of <span> (for lines)\n            // separated by <br>.\n            para.split(/[\\u2028\\n]/).reduce((acc, line) => {\n              acc.push(\n                {\n                  name: \"span\",\n                  value: line,\n                },\n                {\n                  name: \"br\",\n                }\n              );\n              return acc;\n            }, [])\n          )\n          .forEach(lines => {\n            html.children.push({\n              name: \"p\",\n              children: lines,\n            });\n          });\n      } else if (/[\\u2028\\n]/.test(this[$content])) {\n        html.name = \"div\";\n        html.children = [];\n        // Convert plain text into a set of <span> (for lines)\n        // separated by <br>.\n        this[$content].split(/[\\u2028\\n]/).forEach(line => {\n          html.children.push(\n            {\n              name: \"span\",\n              value: line,\n            },\n            {\n              name: \"br\",\n            }\n          );\n        });\n      }\n\n      return HTMLResult.success(html);\n    }\n\n    return this[$content][$toHTML](availableSpace);\n  }\n}\n\nclass TextEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"textEdit\", /* hasChildren = */ true);\n    this.allowRichText = getInteger({\n      data: attributes.allowRichText,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n      \"auto\",\n      \"off\",\n      \"on\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.multiLine = getInteger({\n      data: attributes.multiLine,\n      defaultValue: \"\",\n      validate: x => x === 0 || x === 1,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\n      \"auto\",\n      \"off\",\n      \"on\",\n    ]);\n    this.border = null;\n    this.comb = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    const style = toStyle(this, \"border\", \"font\", \"margin\");\n    let html;\n    const field = this[$getParent]()[$getParent]();\n    if (this.multiLine === \"\") {\n      this.multiLine = field instanceof Draw ? 1 : 0;\n    }\n    if (this.multiLine === 1) {\n      html = {\n        name: \"textarea\",\n        attributes: {\n          dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n          fieldId: field[$uid],\n          class: [\"xfaTextfield\"],\n          style,\n          \"aria-label\": ariaLabel(field),\n        },\n      };\n    } else {\n      html = {\n        name: \"input\",\n        attributes: {\n          type: \"text\",\n          dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n          fieldId: field[$uid],\n          class: [\"xfaTextfield\"],\n          style,\n          \"aria-label\": ariaLabel(field),\n        },\n      };\n    }\n\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"],\n      },\n      children: [html],\n    });\n  }\n}\n\nclass Time extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"time\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    // TODO: need to handle the string as a time and not as a date.\n    const date = this[$content].trim();\n    this[$content] = date ? new Date(date) : null;\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n  }\n}\n\nclass TimeStamp extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"timeStamp\");\n    this.id = attributes.id || \"\";\n    this.server = attributes.server || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass ToolTip extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"toolTip\");\n    this.id = attributes.id || \"\";\n    this.rid = attributes.rid || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Traversal extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"traversal\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.traverse = new XFAObjectArray();\n  }\n}\n\nclass Traverse extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"traverse\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.operation = getStringOption(attributes.operation, [\n      \"next\",\n      \"back\",\n      \"down\",\n      \"first\",\n      \"left\",\n      \"right\",\n      \"up\",\n    ]);\n    this.ref = attributes.ref || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.script = null;\n  }\n\n  get name() {\n    // SOM expression: see page 94\n    return this.operation;\n  }\n\n  [$isTransparent]() {\n    return false;\n  }\n}\n\nclass Ui extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"ui\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.picture = null;\n\n    // One-of properties\n    this.barcode = null;\n    this.button = null;\n    this.checkButton = null;\n    this.choiceList = null;\n    this.dateTimeEdit = null;\n    this.defaultUi = null;\n    this.imageEdit = null;\n    this.numericEdit = null;\n    this.passwordEdit = null;\n    this.signature = null;\n    this.textEdit = null;\n  }\n\n  [$getExtra]() {\n    if (this[$extra] === undefined) {\n      for (const name of Object.getOwnPropertyNames(this)) {\n        if (name === \"extras\" || name === \"picture\") {\n          continue;\n        }\n        const obj = this[name];\n        if (!(obj instanceof XFAObject)) {\n          continue;\n        }\n\n        this[$extra] = obj;\n        return obj;\n      }\n      this[$extra] = null;\n    }\n    return this[$extra];\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: picture.\n    const obj = this[$getExtra]();\n    if (obj) {\n      return obj[$toHTML](availableSpace);\n    }\n    return HTMLResult.EMPTY;\n  }\n}\n\nclass Validate extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"validate\", /* hasChildren = */ true);\n    this.formatTest = getStringOption(attributes.formatTest, [\n      \"warning\",\n      \"disabled\",\n      \"error\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.nullTest = getStringOption(attributes.nullTest, [\n      \"disabled\",\n      \"error\",\n      \"warning\",\n    ]);\n    this.scriptTest = getStringOption(attributes.scriptTest, [\n      \"error\",\n      \"disabled\",\n      \"warning\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.message = null;\n    this.picture = null;\n    this.script = null;\n  }\n}\n\nclass Value extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"value\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.override = getInteger({\n      data: attributes.override,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n\n    // One-of properties\n    this.arc = null;\n    this.boolean = null;\n    this.date = null;\n    this.dateTime = null;\n    this.decimal = null;\n    this.exData = null;\n    this.float = null;\n    this.image = null;\n    this.integer = null;\n    this.line = null;\n    this.rectangle = null;\n    this.text = null;\n    this.time = null;\n  }\n\n  [$setValue](value) {\n    const parent = this[$getParent]();\n    if (parent instanceof Field) {\n      if (parent.ui && parent.ui.imageEdit) {\n        if (!this.image) {\n          this.image = new Image({});\n          this[$appendChild](this.image);\n        }\n        this.image[$content] = value[$content];\n        return;\n      }\n    }\n\n    const valueName = value[$nodeName];\n    if (this[valueName] !== null) {\n      this[valueName][$content] = value[$content];\n      return;\n    }\n\n    // Reset all the properties.\n    for (const name of Object.getOwnPropertyNames(this)) {\n      const obj = this[name];\n      if (obj instanceof XFAObject) {\n        this[name] = null;\n        this[$removeChild](obj);\n      }\n    }\n\n    this[value[$nodeName]] = value;\n    this[$appendChild](value);\n  }\n\n  [$text]() {\n    if (this.exData) {\n      if (typeof this.exData[$content] === \"string\") {\n        return this.exData[$content].trim();\n      }\n      return this.exData[$content][$text]().trim();\n    }\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (name === \"image\") {\n        continue;\n      }\n      const obj = this[name];\n      if (obj instanceof XFAObject) {\n        return (obj[$content] || \"\").toString().trim();\n      }\n    }\n    return null;\n  }\n\n  [$toHTML](availableSpace) {\n    for (const name of Object.getOwnPropertyNames(this)) {\n      const obj = this[name];\n      if (!(obj instanceof XFAObject)) {\n        continue;\n      }\n\n      return obj[$toHTML](availableSpace);\n    }\n\n    return HTMLResult.EMPTY;\n  }\n}\n\nclass Variables extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"variables\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.manifest = new XFAObjectArray();\n    this.script = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n\n  [$isTransparent]() {\n    return true;\n  }\n}\n\nclass TemplateNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (TemplateNamespace.hasOwnProperty(name)) {\n      const node = TemplateNamespace[name](attributes);\n      node[$setSetAttributes](attributes);\n      return node;\n    }\n    return undefined;\n  }\n\n  static appearanceFilter(attrs) {\n    return new AppearanceFilter(attrs);\n  }\n\n  static arc(attrs) {\n    return new Arc(attrs);\n  }\n\n  static area(attrs) {\n    return new Area(attrs);\n  }\n\n  static assist(attrs) {\n    return new Assist(attrs);\n  }\n\n  static barcode(attrs) {\n    return new Barcode(attrs);\n  }\n\n  static bind(attrs) {\n    return new Bind(attrs);\n  }\n\n  static bindItems(attrs) {\n    return new BindItems(attrs);\n  }\n\n  static bookend(attrs) {\n    return new Bookend(attrs);\n  }\n\n  static boolean(attrs) {\n    return new BooleanElement(attrs);\n  }\n\n  static border(attrs) {\n    return new Border(attrs);\n  }\n\n  static break(attrs) {\n    return new Break(attrs);\n  }\n\n  static breakAfter(attrs) {\n    return new BreakAfter(attrs);\n  }\n\n  static breakBefore(attrs) {\n    return new BreakBefore(attrs);\n  }\n\n  static button(attrs) {\n    return new Button(attrs);\n  }\n\n  static calculate(attrs) {\n    return new Calculate(attrs);\n  }\n\n  static caption(attrs) {\n    return new Caption(attrs);\n  }\n\n  static certificate(attrs) {\n    return new Certificate(attrs);\n  }\n\n  static certificates(attrs) {\n    return new Certificates(attrs);\n  }\n\n  static checkButton(attrs) {\n    return new CheckButton(attrs);\n  }\n\n  static choiceList(attrs) {\n    return new ChoiceList(attrs);\n  }\n\n  static color(attrs) {\n    return new Color(attrs);\n  }\n\n  static comb(attrs) {\n    return new Comb(attrs);\n  }\n\n  static connect(attrs) {\n    return new Connect(attrs);\n  }\n\n  static contentArea(attrs) {\n    return new ContentArea(attrs);\n  }\n\n  static corner(attrs) {\n    return new Corner(attrs);\n  }\n\n  static date(attrs) {\n    return new DateElement(attrs);\n  }\n\n  static dateTime(attrs) {\n    return new DateTime(attrs);\n  }\n\n  static dateTimeEdit(attrs) {\n    return new DateTimeEdit(attrs);\n  }\n\n  static decimal(attrs) {\n    return new Decimal(attrs);\n  }\n\n  static defaultUi(attrs) {\n    return new DefaultUi(attrs);\n  }\n\n  static desc(attrs) {\n    return new Desc(attrs);\n  }\n\n  static digestMethod(attrs) {\n    return new DigestMethod(attrs);\n  }\n\n  static digestMethods(attrs) {\n    return new DigestMethods(attrs);\n  }\n\n  static draw(attrs) {\n    return new Draw(attrs);\n  }\n\n  static edge(attrs) {\n    return new Edge(attrs);\n  }\n\n  static encoding(attrs) {\n    return new Encoding(attrs);\n  }\n\n  static encodings(attrs) {\n    return new Encodings(attrs);\n  }\n\n  static encrypt(attrs) {\n    return new Encrypt(attrs);\n  }\n\n  static encryptData(attrs) {\n    return new EncryptData(attrs);\n  }\n\n  static encryption(attrs) {\n    return new Encryption(attrs);\n  }\n\n  static encryptionMethod(attrs) {\n    return new EncryptionMethod(attrs);\n  }\n\n  static encryptionMethods(attrs) {\n    return new EncryptionMethods(attrs);\n  }\n\n  static event(attrs) {\n    return new Event(attrs);\n  }\n\n  static exData(attrs) {\n    return new ExData(attrs);\n  }\n\n  static exObject(attrs) {\n    return new ExObject(attrs);\n  }\n\n  static exclGroup(attrs) {\n    return new ExclGroup(attrs);\n  }\n\n  static execute(attrs) {\n    return new Execute(attrs);\n  }\n\n  static extras(attrs) {\n    return new Extras(attrs);\n  }\n\n  static field(attrs) {\n    return new Field(attrs);\n  }\n\n  static fill(attrs) {\n    return new Fill(attrs);\n  }\n\n  static filter(attrs) {\n    return new Filter(attrs);\n  }\n\n  static float(attrs) {\n    return new Float(attrs);\n  }\n\n  static font(attrs) {\n    return new Font(attrs);\n  }\n\n  static format(attrs) {\n    return new Format(attrs);\n  }\n\n  static handler(attrs) {\n    return new Handler(attrs);\n  }\n\n  static hyphenation(attrs) {\n    return new Hyphenation(attrs);\n  }\n\n  static image(attrs) {\n    return new Image(attrs);\n  }\n\n  static imageEdit(attrs) {\n    return new ImageEdit(attrs);\n  }\n\n  static integer(attrs) {\n    return new Integer(attrs);\n  }\n\n  static issuers(attrs) {\n    return new Issuers(attrs);\n  }\n\n  static items(attrs) {\n    return new Items(attrs);\n  }\n\n  static keep(attrs) {\n    return new Keep(attrs);\n  }\n\n  static keyUsage(attrs) {\n    return new KeyUsage(attrs);\n  }\n\n  static line(attrs) {\n    return new Line(attrs);\n  }\n\n  static linear(attrs) {\n    return new Linear(attrs);\n  }\n\n  static lockDocument(attrs) {\n    return new LockDocument(attrs);\n  }\n\n  static manifest(attrs) {\n    return new Manifest(attrs);\n  }\n\n  static margin(attrs) {\n    return new Margin(attrs);\n  }\n\n  static mdp(attrs) {\n    return new Mdp(attrs);\n  }\n\n  static medium(attrs) {\n    return new Medium(attrs);\n  }\n\n  static message(attrs) {\n    return new Message(attrs);\n  }\n\n  static numericEdit(attrs) {\n    return new NumericEdit(attrs);\n  }\n\n  static occur(attrs) {\n    return new Occur(attrs);\n  }\n\n  static oid(attrs) {\n    return new Oid(attrs);\n  }\n\n  static oids(attrs) {\n    return new Oids(attrs);\n  }\n\n  static overflow(attrs) {\n    return new Overflow(attrs);\n  }\n\n  static pageArea(attrs) {\n    return new PageArea(attrs);\n  }\n\n  static pageSet(attrs) {\n    return new PageSet(attrs);\n  }\n\n  static para(attrs) {\n    return new Para(attrs);\n  }\n\n  static passwordEdit(attrs) {\n    return new PasswordEdit(attrs);\n  }\n\n  static pattern(attrs) {\n    return new Pattern(attrs);\n  }\n\n  static picture(attrs) {\n    return new Picture(attrs);\n  }\n\n  static proto(attrs) {\n    return new Proto(attrs);\n  }\n\n  static radial(attrs) {\n    return new Radial(attrs);\n  }\n\n  static reason(attrs) {\n    return new Reason(attrs);\n  }\n\n  static reasons(attrs) {\n    return new Reasons(attrs);\n  }\n\n  static rectangle(attrs) {\n    return new Rectangle(attrs);\n  }\n\n  static ref(attrs) {\n    return new RefElement(attrs);\n  }\n\n  static script(attrs) {\n    return new Script(attrs);\n  }\n\n  static setProperty(attrs) {\n    return new SetProperty(attrs);\n  }\n\n  static signData(attrs) {\n    return new SignData(attrs);\n  }\n\n  static signature(attrs) {\n    return new Signature(attrs);\n  }\n\n  static signing(attrs) {\n    return new Signing(attrs);\n  }\n\n  static solid(attrs) {\n    return new Solid(attrs);\n  }\n\n  static speak(attrs) {\n    return new Speak(attrs);\n  }\n\n  static stipple(attrs) {\n    return new Stipple(attrs);\n  }\n\n  static subform(attrs) {\n    return new Subform(attrs);\n  }\n\n  static subformSet(attrs) {\n    return new SubformSet(attrs);\n  }\n\n  static subjectDN(attrs) {\n    return new SubjectDN(attrs);\n  }\n\n  static subjectDNs(attrs) {\n    return new SubjectDNs(attrs);\n  }\n\n  static submit(attrs) {\n    return new Submit(attrs);\n  }\n\n  static template(attrs) {\n    return new Template(attrs);\n  }\n\n  static text(attrs) {\n    return new Text(attrs);\n  }\n\n  static textEdit(attrs) {\n    return new TextEdit(attrs);\n  }\n\n  static time(attrs) {\n    return new Time(attrs);\n  }\n\n  static timeStamp(attrs) {\n    return new TimeStamp(attrs);\n  }\n\n  static toolTip(attrs) {\n    return new ToolTip(attrs);\n  }\n\n  static traversal(attrs) {\n    return new Traversal(attrs);\n  }\n\n  static traverse(attrs) {\n    return new Traverse(attrs);\n  }\n\n  static ui(attrs) {\n    return new Ui(attrs);\n  }\n\n  static validate(attrs) {\n    return new Validate(attrs);\n  }\n\n  static value(attrs) {\n    return new Value(attrs);\n  }\n\n  static variables(attrs) {\n    return new Variables(attrs);\n  }\n}\n\nexport {\n  BindItems,\n  Field,\n  Items,\n  SetProperty,\n  Template,\n  TemplateNamespace,\n  Text,\n  Value,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $extra,\n  $flushHTML,\n  $getSubformParent,\n  $getTemplateRoot,\n  $isSplittable,\n  $isThereMoreWidth,\n} from \"./xfa_object.js\";\nimport { measureToString } from \"./html_utils.js\";\n\n// Subform and ExclGroup have a layout so they share these functions.\n\n/**\n * How layout works ?\n *\n * A container has an initial space (with a width and a height) to fit in,\n * which means that once all the children have been added then\n * the total width/height must be lower than the given ones in\n * the initial space.\n * So if the container has known dimensions and these ones are ok with the\n * space then continue else we return HTMLResult.FAILURE: it's up to the\n * parent to deal with this failure (e.g. if parent layout is lr-tb and\n * we fail to add a child at end of line (lr) then we try to add it on the\n * next line).\n * And then we run through the children, each child gets its initial space\n * in calling its parent $getAvailableSpace method\n * (see _filteredChildrenGenerator and $childrenToHTML in xfa_object.js)\n * then we try to layout child in its space. If everything is ok then we add\n * the result to its parent through $addHTML which will recompute the available\n * space in parent according to its layout property else we return\n * HTMLResult.Failure.\n * Before a failure some children may have been layed out: they've been saved in\n * [$extra].children and [$extra] has properties generator and failingNode\n * in order to save the state where we were before a failure.\n * This [$extra].children property is useful when a container has to be splited.\n * So if a container is unbreakable, we must delete its [$extra] property before\n * returning.\n */\n\nfunction createLine(node, children) {\n  return {\n    name: \"div\",\n    attributes: {\n      class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"],\n    },\n    children,\n  };\n}\n\nfunction flushHTML(node) {\n  if (!node[$extra]) {\n    return null;\n  }\n\n  const attributes = node[$extra].attributes;\n  const html = {\n    name: \"div\",\n    attributes,\n    children: node[$extra].children,\n  };\n\n  if (node[$extra].failingNode) {\n    const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\n    if (htmlFromFailing) {\n      if (node.layout.endsWith(\"-tb\")) {\n        html.children.push(createLine(node, [htmlFromFailing]));\n      } else {\n        html.children.push(htmlFromFailing);\n      }\n    }\n  }\n\n  if (html.children.length === 0) {\n    return null;\n  }\n\n  return html;\n}\n\nfunction addHTML(node, html, bbox) {\n  const extra = node[$extra];\n  const availableSpace = extra.availableSpace;\n\n  const [x, y, w, h] = bbox;\n  switch (node.layout) {\n    case \"position\": {\n      extra.width = Math.max(extra.width, x + w);\n      extra.height = Math.max(extra.height, y + h);\n      extra.children.push(html);\n      break;\n    }\n    case \"lr-tb\":\n    case \"rl-tb\":\n      if (!extra.line || extra.attempt === 1) {\n        extra.line = createLine(node, []);\n        extra.children.push(extra.line);\n        extra.numberInLine = 0;\n      }\n\n      extra.numberInLine += 1;\n      extra.line.children.push(html);\n\n      if (extra.attempt === 0) {\n        // Add the element on the line\n        extra.currentWidth += w;\n        extra.height = Math.max(extra.height, extra.prevHeight + h);\n      } else {\n        extra.currentWidth = w;\n        extra.prevHeight = extra.height;\n        extra.height += h;\n\n        // The element has been added on a new line so switch to line mode now.\n        extra.attempt = 0;\n      }\n      extra.width = Math.max(extra.width, extra.currentWidth);\n      break;\n    case \"rl-row\":\n    case \"row\": {\n      extra.children.push(html);\n      extra.width += w;\n      extra.height = Math.max(extra.height, h);\n      const height = measureToString(extra.height);\n      for (const child of extra.children) {\n        child.attributes.style.height = height;\n      }\n      break;\n    }\n    case \"table\": {\n      extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n      extra.height += h;\n      extra.children.push(html);\n      break;\n    }\n    case \"tb\": {\n      // Even if the subform can possibly take all the available width,\n      // we must compute the final width as it is in order to be able\n      // for example to center the subform within its parent.\n      extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n      extra.height += h;\n      extra.children.push(html);\n      break;\n    }\n  }\n}\n\nfunction getAvailableSpace(node) {\n  const availableSpace = node[$extra].availableSpace;\n  const marginV = node.margin\n    ? node.margin.topInset + node.margin.bottomInset\n    : 0;\n  const marginH = node.margin\n    ? node.margin.leftInset + node.margin.rightInset\n    : 0;\n\n  switch (node.layout) {\n    case \"lr-tb\":\n    case \"rl-tb\":\n      if (node[$extra].attempt === 0) {\n        return {\n          width: availableSpace.width - marginH - node[$extra].currentWidth,\n          height: availableSpace.height - marginV - node[$extra].prevHeight,\n        };\n      }\n      return {\n        width: availableSpace.width - marginH,\n        height: availableSpace.height - marginV - node[$extra].height,\n      };\n    case \"rl-row\":\n    case \"row\":\n      const width = node[$extra].columnWidths\n        .slice(node[$extra].currentColumn)\n        .reduce((a, x) => a + x);\n      return { width, height: availableSpace.height - marginH };\n    case \"table\":\n    case \"tb\":\n      return {\n        width: availableSpace.width - marginH,\n        height: availableSpace.height - marginV - node[$extra].height,\n      };\n    case \"position\":\n    default:\n      return availableSpace;\n  }\n}\n\nfunction getTransformedBBox(node) {\n  // Take into account rotation and anchor to get the real bounding box.\n  let w = node.w === \"\" ? NaN : node.w;\n  let h = node.h === \"\" ? NaN : node.h;\n  let [centerX, centerY] = [0, 0];\n  switch (node.anchorType || \"\") {\n    case \"bottomCenter\":\n      [centerX, centerY] = [w / 2, h];\n      break;\n    case \"bottomLeft\":\n      [centerX, centerY] = [0, h];\n      break;\n    case \"bottomRight\":\n      [centerX, centerY] = [w, h];\n      break;\n    case \"middleCenter\":\n      [centerX, centerY] = [w / 2, h / 2];\n      break;\n    case \"middleLeft\":\n      [centerX, centerY] = [0, h / 2];\n      break;\n    case \"middleRight\":\n      [centerX, centerY] = [w, h / 2];\n      break;\n    case \"topCenter\":\n      [centerX, centerY] = [w / 2, 0];\n      break;\n    case \"topRight\":\n      [centerX, centerY] = [w, 0];\n      break;\n  }\n\n  let x, y;\n  switch (node.rotate || 0) {\n    case 0:\n      [x, y] = [-centerX, -centerY];\n      break;\n    case 90:\n      [x, y] = [-centerY, centerX];\n      [w, h] = [h, -w];\n      break;\n    case 180:\n      [x, y] = [centerX, centerY];\n      [w, h] = [-w, -h];\n      break;\n    case 270:\n      [x, y] = [centerY, -centerX];\n      [w, h] = [-h, w];\n      break;\n  }\n\n  return [\n    node.x + x + Math.min(0, w),\n    node.y + y + Math.min(0, h),\n    Math.abs(w),\n    Math.abs(h),\n  ];\n}\n\n/**\n * Returning true means that the node will be layed out\n * else the layout will go to its next step (changing of line\n * in case of lr-tb or changing content area...).\n */\nfunction checkDimensions(node, space) {\n  if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n    return true;\n  }\n\n  if (node.w === 0 || node.h === 0) {\n    return true;\n  }\n\n  const ERROR = 2;\n  const parent = node[$getSubformParent]();\n  const attempt = (parent[$extra] && parent[$extra].attempt) || 0;\n\n  const [, y, w, h] = getTransformedBBox(node);\n  switch (parent.layout) {\n    case \"lr-tb\":\n    case \"rl-tb\":\n      if (attempt === 0) {\n        // Try to put an element in the line.\n\n        if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n          if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n            // Not enough height.\n            return false;\n          }\n\n          if (node.w !== \"\") {\n            if (Math.round(w - space.width) <= ERROR) {\n              return true;\n            }\n            if (parent[$extra].numberInLine === 0) {\n              return space.height > ERROR;\n            }\n\n            return false;\n          }\n\n          return space.width > ERROR;\n        }\n\n        // No layout failure.\n\n        // Put the element on the line but we can fail\n        // and then in the second step (next line) we'll accept.\n        if (node.w !== \"\") {\n          return Math.round(w - space.width) <= ERROR;\n        }\n\n        return space.width > ERROR;\n      }\n\n      // Second attempt: try to put the element on the next line.\n\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        // We cannot fail.\n        return true;\n      }\n\n      if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n        return false;\n      }\n\n      if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n        return space.height > ERROR;\n      }\n\n      if (parent[$isThereMoreWidth]()) {\n        return false;\n      }\n\n      return space.height > ERROR;\n    case \"table\":\n    case \"tb\":\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        return true;\n      }\n\n      // If the node has a height then check if it's fine with available height.\n      // If the node is breakable then we can return true.\n      if (node.h !== \"\" && !node[$isSplittable]()) {\n        return Math.round(h - space.height) <= ERROR;\n      }\n      // Else wait and see: this node will be layed out itself\n      // in the provided space and maybe a children won't fit.\n\n      if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n        return space.height > ERROR;\n      }\n\n      if (parent[$isThereMoreWidth]()) {\n        return false;\n      }\n\n      return space.height > ERROR;\n    case \"position\":\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        return true;\n      }\n\n      if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n        return true;\n      }\n\n      const area = node[$getTemplateRoot]()[$extra].currentContentArea;\n      return h + y > area.h;\n    case \"rl-row\":\n    case \"row\":\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        return true;\n      }\n\n      if (node.h !== \"\") {\n        return Math.round(h - space.height) <= ERROR;\n      }\n      return true;\n    default:\n      // No layout, so accept everything.\n      return true;\n  }\n}\n\nexport { addHTML, checkDimensions, flushHTML, getAvailableSpace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $content,\n  $extra,\n  $getParent,\n  $getSubformParent,\n  $getTemplateRoot,\n  $globalData,\n  $nodeName,\n  $pushGlyphs,\n  $text,\n  $toStyle,\n  XFAObject,\n} from \"./xfa_object.js\";\nimport { createValidAbsoluteUrl, warn } from \"../../shared/util.js\";\nimport { getMeasurement, stripQuotes } from \"./utils.js\";\nimport { selectFont } from \"./fonts.js\";\nimport { TextMeasure } from \"./text.js\";\n\nfunction measureToString(m) {\n  if (typeof m === \"string\") {\n    return \"0px\";\n  }\n\n  return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\n\nconst converters = {\n  anchorType(node, style) {\n    const parent = node[$getSubformParent]();\n    if (!parent || (parent.layout && parent.layout !== \"position\")) {\n      // anchorType is only used in a positioned layout.\n      return;\n    }\n\n    if (!(\"transform\" in style)) {\n      style.transform = \"\";\n    }\n    switch (node.anchorType) {\n      case \"bottomCenter\":\n        style.transform += \"translate(-50%, -100%)\";\n        break;\n      case \"bottomLeft\":\n        style.transform += \"translate(0,-100%)\";\n        break;\n      case \"bottomRight\":\n        style.transform += \"translate(-100%,-100%)\";\n        break;\n      case \"middleCenter\":\n        style.transform += \"translate(-50%,-50%)\";\n        break;\n      case \"middleLeft\":\n        style.transform += \"translate(0,-50%)\";\n        break;\n      case \"middleRight\":\n        style.transform += \"translate(-100%,-50%)\";\n        break;\n      case \"topCenter\":\n        style.transform += \"translate(-50%,0)\";\n        break;\n      case \"topRight\":\n        style.transform += \"translate(-100%,0)\";\n        break;\n    }\n  },\n  dimensions(node, style) {\n    const parent = node[$getSubformParent]();\n    let width = node.w;\n    const height = node.h;\n    if (parent.layout && parent.layout.includes(\"row\")) {\n      const extra = parent[$extra];\n      const colSpan = node.colSpan;\n      let w;\n      if (colSpan === -1) {\n        w = extra.columnWidths\n          .slice(extra.currentColumn)\n          .reduce((a, x) => a + x, 0);\n        extra.currentColumn = 0;\n      } else {\n        w = extra.columnWidths\n          .slice(extra.currentColumn, extra.currentColumn + colSpan)\n          .reduce((a, x) => a + x, 0);\n        extra.currentColumn =\n          (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n      }\n\n      if (!isNaN(w)) {\n        width = node.w = w;\n      }\n    }\n\n    if (width !== \"\") {\n      style.width = measureToString(width);\n    } else {\n      style.width = \"auto\";\n    }\n\n    if (height !== \"\") {\n      style.height = measureToString(height);\n    } else {\n      style.height = \"auto\";\n    }\n  },\n  position(node, style) {\n    const parent = node[$getSubformParent]();\n    if (parent && parent.layout && parent.layout !== \"position\") {\n      // IRL, we've some x/y in tb layout.\n      // Specs say x/y is only used in positioned layout.\n      return;\n    }\n\n    style.position = \"absolute\";\n    style.left = measureToString(node.x);\n    style.top = measureToString(node.y);\n  },\n  rotate(node, style) {\n    if (node.rotate) {\n      if (!(\"transform\" in style)) {\n        style.transform = \"\";\n      }\n      style.transform += `rotate(-${node.rotate}deg)`;\n      style.transformOrigin = \"top left\";\n    }\n  },\n  presence(node, style) {\n    switch (node.presence) {\n      case \"invisible\":\n        style.visibility = \"hidden\";\n        break;\n      case \"hidden\":\n      case \"inactive\":\n        style.display = \"none\";\n        break;\n    }\n  },\n  hAlign(node, style) {\n    if (node[$nodeName] === \"para\") {\n      switch (node.hAlign) {\n        case \"justifyAll\":\n          style.textAlign = \"justify-all\";\n          break;\n        case \"radix\":\n          // TODO: implement this correctly !\n          style.textAlign = \"left\";\n          break;\n        default:\n          style.textAlign = node.hAlign;\n      }\n    } else {\n      switch (node.hAlign) {\n        case \"left\":\n          style.alignSelf = \"start\";\n          break;\n        case \"center\":\n          style.alignSelf = \"center\";\n          break;\n        case \"right\":\n          style.alignSelf = \"end\";\n          break;\n      }\n    }\n  },\n  margin(node, style) {\n    if (node.margin) {\n      style.margin = node.margin[$toStyle]().margin;\n    }\n  },\n};\n\nfunction setMinMaxDimensions(node, style) {\n  const parent = node[$getSubformParent]();\n  if (parent.layout === \"position\") {\n    if (node.minW > 0) {\n      style.minWidth = measureToString(node.minW);\n    }\n    if (node.maxW > 0) {\n      style.maxWidth = measureToString(node.maxW);\n    }\n    if (node.minH > 0) {\n      style.minHeight = measureToString(node.minH);\n    }\n    if (node.maxH > 0) {\n      style.maxHeight = measureToString(node.maxH);\n    }\n  }\n}\n\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n  const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n  if (typeof text === \"string\") {\n    measure.addString(text);\n  } else {\n    text[$pushGlyphs](measure);\n  }\n\n  return measure.compute(width);\n}\n\nfunction layoutNode(node, availableSpace) {\n  let height = null;\n  let width = null;\n  let isBroken = false;\n\n  if ((!node.w || !node.h) && node.value) {\n    let marginH = 0;\n    let marginV = 0;\n    if (node.margin) {\n      marginH = node.margin.leftInset + node.margin.rightInset;\n      marginV = node.margin.topInset + node.margin.bottomInset;\n    }\n\n    let lineHeight = null;\n    let margin = null;\n    if (node.para) {\n      margin = Object.create(null);\n      lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n      margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n      margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n      margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n      margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n    }\n\n    let font = node.font;\n    if (!font) {\n      const root = node[$getTemplateRoot]();\n      let parent = node[$getParent]();\n      while (parent && parent !== root) {\n        if (parent.font) {\n          font = parent.font;\n          break;\n        }\n        parent = parent[$getParent]();\n      }\n    }\n\n    const maxWidth = (!node.w ? availableSpace.width : node.w) - marginH;\n    const fontFinder = node[$globalData].fontFinder;\n    if (\n      node.value.exData &&\n      node.value.exData[$content] &&\n      node.value.exData.contentType === \"text/html\"\n    ) {\n      const res = layoutText(\n        node.value.exData[$content],\n        font,\n        margin,\n        lineHeight,\n        fontFinder,\n        maxWidth\n      );\n      width = res.width;\n      height = res.height;\n      isBroken = res.isBroken;\n    } else {\n      const text = node.value[$text]();\n      if (text) {\n        const res = layoutText(\n          text,\n          font,\n          margin,\n          lineHeight,\n          fontFinder,\n          maxWidth\n        );\n        width = res.width;\n        height = res.height;\n        isBroken = res.isBroken;\n      }\n    }\n\n    if (width !== null && !node.w) {\n      width += marginH;\n    }\n\n    if (height !== null && !node.h) {\n      height += marginV;\n    }\n  }\n  return { w: width, h: height, isBroken };\n}\n\nfunction computeBbox(node, html, availableSpace) {\n  let bbox;\n  if (node.w !== \"\" && node.h !== \"\") {\n    bbox = [node.x, node.y, node.w, node.h];\n  } else {\n    if (!availableSpace) {\n      return null;\n    }\n    let width = node.w;\n    if (width === \"\") {\n      if (node.maxW === 0) {\n        const parent = node[$getSubformParent]();\n        if (parent.layout === \"position\" && parent.w !== \"\") {\n          width = 0;\n        } else {\n          width = node.minW;\n        }\n      } else {\n        width = Math.min(node.maxW, availableSpace.width);\n      }\n      html.attributes.style.width = measureToString(width);\n    }\n\n    let height = node.h;\n    if (height === \"\") {\n      if (node.maxH === 0) {\n        const parent = node[$getSubformParent]();\n        if (parent.layout === \"position\" && parent.h !== \"\") {\n          height = 0;\n        } else {\n          height = node.minH;\n        }\n      } else {\n        height = Math.min(node.maxH, availableSpace.height);\n      }\n      html.attributes.style.height = measureToString(height);\n    }\n\n    bbox = [node.x, node.y, width, height];\n  }\n  return bbox;\n}\n\nfunction fixDimensions(node) {\n  const parent = node[$getSubformParent]();\n  if (parent.layout && parent.layout.includes(\"row\")) {\n    const extra = parent[$extra];\n    const colSpan = node.colSpan;\n    let width;\n    if (colSpan === -1) {\n      width = extra.columnWidths\n        .slice(extra.currentColumn)\n        .reduce((a, w) => a + w, 0);\n    } else {\n      width = extra.columnWidths\n        .slice(extra.currentColumn, extra.currentColumn + colSpan)\n        .reduce((a, w) => a + w, 0);\n    }\n    if (!isNaN(width)) {\n      node.w = width;\n    }\n  }\n\n  if (parent.layout && parent.layout !== \"position\") {\n    // Useless in this context.\n    node.x = node.y = 0;\n  }\n\n  if (node.layout === \"table\") {\n    if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n      node.w = node.columnWidths.reduce((a, x) => a + x, 0);\n    }\n  }\n}\n\nfunction layoutClass(node) {\n  switch (node.layout) {\n    case \"position\":\n      return \"xfaPosition\";\n    case \"lr-tb\":\n      return \"xfaLrTb\";\n    case \"rl-row\":\n      return \"xfaRlRow\";\n    case \"rl-tb\":\n      return \"xfaRlTb\";\n    case \"row\":\n      return \"xfaRow\";\n    case \"table\":\n      return \"xfaTable\";\n    case \"tb\":\n      return \"xfaTb\";\n    default:\n      return \"xfaPosition\";\n  }\n}\n\nfunction toStyle(node, ...names) {\n  const style = Object.create(null);\n  for (const name of names) {\n    const value = node[name];\n    if (value === null) {\n      continue;\n    }\n    if (converters.hasOwnProperty(name)) {\n      converters[name](node, style);\n      continue;\n    }\n\n    if (value instanceof XFAObject) {\n      const newStyle = value[$toStyle]();\n      if (newStyle) {\n        Object.assign(style, newStyle);\n      } else {\n        warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n      }\n    }\n  }\n  return style;\n}\n\nfunction createWrapper(node, html) {\n  const { attributes } = html;\n  const { style } = attributes;\n\n  const wrapper = {\n    name: \"div\",\n    attributes: {\n      class: [\"xfaWrapper\"],\n      style: Object.create(null),\n    },\n    children: [],\n  };\n\n  attributes.class.push(\"xfaWrapped\");\n\n  if (node.border) {\n    const { widths, insets } = node.border[$extra];\n    let width, height;\n    let top = insets[0];\n    let left = insets[3];\n    const insetsH = insets[0] + insets[2];\n    const insetsW = insets[1] + insets[3];\n    switch (node.border.hand) {\n      case \"even\":\n        top -= widths[0] / 2;\n        left -= widths[3] / 2;\n        width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n        height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n        break;\n      case \"left\":\n        top -= widths[0];\n        left -= widths[3];\n        width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n        height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n        break;\n      case \"right\":\n        width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n        height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n        break;\n    }\n    const classNames = [\"xfaBorder\"];\n    if (isPrintOnly(node.border)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    const border = {\n      name: \"div\",\n      attributes: {\n        class: classNames,\n        style: {\n          top: `${top}px`,\n          left: `${left}px`,\n          width,\n          height,\n        },\n      },\n      children: [],\n    };\n\n    for (const key of [\n      \"border\",\n      \"borderWidth\",\n      \"borderColor\",\n      \"borderRadius\",\n      \"borderStyle\",\n    ]) {\n      if (style[key] !== undefined) {\n        border.attributes.style[key] = style[key];\n        delete style[key];\n      }\n    }\n    wrapper.children.push(border, html);\n  } else {\n    wrapper.children.push(html);\n  }\n\n  for (const key of [\n    \"background\",\n    \"backgroundClip\",\n    \"top\",\n    \"left\",\n    \"width\",\n    \"height\",\n    \"minWidth\",\n    \"minHeight\",\n    \"maxWidth\",\n    \"maxHeight\",\n    \"transform\",\n    \"transformOrigin\",\n    \"visibility\",\n  ]) {\n    if (style[key] !== undefined) {\n      wrapper.attributes.style[key] = style[key];\n      delete style[key];\n    }\n  }\n\n  if (style.position === \"absolute\") {\n    wrapper.attributes.style.position = \"absolute\";\n  } else {\n    wrapper.attributes.style.position = \"relative\";\n  }\n  delete style.position;\n\n  if (style.alignSelf) {\n    wrapper.attributes.style.alignSelf = style.alignSelf;\n    delete style.alignSelf;\n  }\n\n  return wrapper;\n}\n\nfunction fixTextIndent(styles) {\n  const indent = getMeasurement(styles.textIndent, \"0px\");\n  if (indent >= 0) {\n    return;\n  }\n\n  // If indent is negative then it's a hanging indent.\n  const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n  const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n  const padding = getMeasurement(styles[name], \"0px\");\n  styles[name] = `${padding - indent}px`;\n}\n\nfunction setAccess(node, classNames) {\n  switch (node.access) {\n    case \"nonInteractive\":\n      classNames.push(\"xfaNonInteractive\");\n      break;\n    case \"readOnly\":\n      classNames.push(\"xfaReadOnly\");\n      break;\n    case \"protected\":\n      classNames.push(\"xfaDisabled\");\n      break;\n  }\n}\n\nfunction isPrintOnly(node) {\n  return (\n    node.relevant.length > 0 &&\n    !node.relevant[0].excluded &&\n    node.relevant[0].viewname === \"print\"\n  );\n}\n\nfunction getCurrentPara(node) {\n  const stack = node[$getTemplateRoot]()[$extra].paraStack;\n  return stack.length ? stack[stack.length - 1] : null;\n}\n\nfunction setPara(node, nodeStyle, value) {\n  if (value.attributes.class && value.attributes.class.includes(\"xfaRich\")) {\n    if (nodeStyle) {\n      if (node.h === \"\") {\n        nodeStyle.height = \"auto\";\n      }\n      if (node.w === \"\") {\n        nodeStyle.width = \"auto\";\n      }\n    }\n\n    const para = getCurrentPara(node);\n    if (para) {\n      // By definition exData are external data so para\n      // has no effect on it.\n      const valueStyle = value.attributes.style;\n      valueStyle.display = \"flex\";\n      valueStyle.flexDirection = \"column\";\n      switch (para.vAlign) {\n        case \"top\":\n          valueStyle.justifyContent = \"start\";\n          break;\n        case \"bottom\":\n          valueStyle.justifyContent = \"end\";\n          break;\n        case \"middle\":\n          valueStyle.justifyContent = \"center\";\n          break;\n      }\n\n      const paraStyle = para[$toStyle]();\n      for (const [key, val] of Object.entries(paraStyle)) {\n        if (!(key in valueStyle)) {\n          valueStyle[key] = val;\n        }\n      }\n    }\n  }\n}\n\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n  if (!fontFinder) {\n    // The font cannot be found in the pdf so use the default one.\n    delete style.fontFamily;\n    return;\n  }\n\n  const name = stripQuotes(xfaFont.typeface);\n  style.fontFamily = `\"${name}\"`;\n\n  const typeface = fontFinder.find(name);\n  if (typeface) {\n    const { fontFamily } = typeface.regular.cssFontInfo;\n    if (fontFamily !== name) {\n      style.fontFamily = `\"${fontFamily}\"`;\n    }\n\n    const para = getCurrentPara(node);\n    if (para && para.lineHeight !== \"\") {\n      return;\n    }\n\n    if (style.lineHeight) {\n      // Already something so don't overwrite.\n      return;\n    }\n\n    const pdfFont = selectFont(xfaFont, typeface);\n    if (pdfFont) {\n      style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n    }\n  }\n}\n\nfunction fixURL(str) {\n  const absoluteUrl = createValidAbsoluteUrl(str, /* baseUrl = */ null, {\n    addDefaultProtocol: true,\n    tryConvertEncoding: true,\n  });\n  return absoluteUrl ? absoluteUrl.href : null;\n}\n\nexport {\n  computeBbox,\n  createWrapper,\n  fixDimensions,\n  fixTextIndent,\n  fixURL,\n  isPrintOnly,\n  layoutClass,\n  layoutNode,\n  measureToString,\n  setAccess,\n  setFontFamily,\n  setMinMaxDimensions,\n  setPara,\n  toStyle,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $globalData } from \"./xfa_object.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass FontFinder {\n  constructor(pdfFonts) {\n    this.fonts = new Map();\n    this.cache = new Map();\n    this.warned = new Set();\n    this.defaultFont = null;\n    this.add(pdfFonts);\n  }\n\n  add(pdfFonts, reallyMissingFonts = null) {\n    for (const pdfFont of pdfFonts) {\n      this.addPdfFont(pdfFont);\n    }\n    for (const pdfFont of this.fonts.values()) {\n      if (!pdfFont.regular) {\n        pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n      }\n    }\n\n    if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n      return;\n    }\n    const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n    for (const missing of reallyMissingFonts) {\n      this.fonts.set(missing, myriad);\n    }\n  }\n\n  addPdfFont(pdfFont) {\n    const cssFontInfo = pdfFont.cssFontInfo;\n    const name = cssFontInfo.fontFamily;\n    let font = this.fonts.get(name);\n    if (!font) {\n      font = Object.create(null);\n      this.fonts.set(name, font);\n      if (!this.defaultFont) {\n        this.defaultFont = font;\n      }\n    }\n    let property = \"\";\n    const fontWeight = parseFloat(cssFontInfo.fontWeight);\n    if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n      property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n    } else if (fontWeight >= 700) {\n      property = \"bold\";\n    }\n\n    if (!property) {\n      if (\n        pdfFont.name.includes(\"Bold\") ||\n        (pdfFont.psName && pdfFont.psName.includes(\"Bold\"))\n      ) {\n        property = \"bold\";\n      }\n      if (\n        pdfFont.name.includes(\"Italic\") ||\n        pdfFont.name.endsWith(\"It\") ||\n        (pdfFont.psName &&\n          (pdfFont.psName.includes(\"Italic\") || pdfFont.psName.endsWith(\"It\")))\n      ) {\n        property += \"italic\";\n      }\n    }\n\n    if (!property) {\n      property = \"regular\";\n    }\n\n    font[property] = pdfFont;\n  }\n\n  getDefault() {\n    return this.defaultFont;\n  }\n\n  find(fontName, mustWarn = true) {\n    let font = this.fonts.get(fontName) || this.cache.get(fontName);\n    if (font) {\n      return font;\n    }\n\n    const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;\n    let name = fontName.replace(pattern, \"\");\n    font = this.fonts.get(name);\n    if (font) {\n      this.cache.set(fontName, font);\n      return font;\n    }\n    name = name.toLowerCase();\n\n    const maybe = [];\n    for (const [family, pdfFont] of this.fonts.entries()) {\n      if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n        maybe.push(pdfFont);\n      }\n    }\n\n    if (maybe.length === 0) {\n      for (const [, pdfFont] of this.fonts.entries()) {\n        if (\n          pdfFont.regular.name &&\n          pdfFont.regular.name\n            .replace(pattern, \"\")\n            .toLowerCase()\n            .startsWith(name)\n        ) {\n          maybe.push(pdfFont);\n        }\n      }\n    }\n\n    if (maybe.length === 0) {\n      name = name.replace(/psmt|mt/gi, \"\");\n      for (const [family, pdfFont] of this.fonts.entries()) {\n        if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n          maybe.push(pdfFont);\n        }\n      }\n    }\n\n    if (maybe.length === 0) {\n      for (const pdfFont of this.fonts.values()) {\n        if (\n          pdfFont.regular.name &&\n          pdfFont.regular.name\n            .replace(pattern, \"\")\n            .toLowerCase()\n            .startsWith(name)\n        ) {\n          maybe.push(pdfFont);\n        }\n      }\n    }\n\n    if (maybe.length >= 1) {\n      if (maybe.length !== 1 && mustWarn) {\n        warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\n      }\n      this.cache.set(fontName, maybe[0]);\n      return maybe[0];\n    }\n\n    if (mustWarn && !this.warned.has(fontName)) {\n      this.warned.add(fontName);\n      warn(`XFA - Cannot find the font: ${fontName}`);\n    }\n    return null;\n  }\n}\n\nfunction selectFont(xfaFont, typeface) {\n  if (xfaFont.posture === \"italic\") {\n    if (xfaFont.weight === \"bold\") {\n      return typeface.bolditalic;\n    }\n    return typeface.italic;\n  } else if (xfaFont.weight === \"bold\") {\n    return typeface.bold;\n  }\n\n  return typeface.regular;\n}\n\nfunction getMetrics(xfaFont, real = false) {\n  let pdfFont = null;\n  if (xfaFont) {\n    const name = stripQuotes(xfaFont.typeface);\n    const typeface = xfaFont[$globalData].fontFinder.find(name);\n    pdfFont = selectFont(xfaFont, typeface);\n  }\n\n  if (!pdfFont) {\n    return {\n      lineHeight: 12,\n      lineGap: 2,\n      lineNoGap: 10,\n    };\n  }\n\n  const size = xfaFont.size || 10;\n  const lineHeight = pdfFont.lineHeight\n    ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight)\n    : 1.2;\n  const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n  return {\n    lineHeight: lineHeight * size,\n    lineGap: lineGap * size,\n    lineNoGap: Math.max(1, lineHeight - lineGap) * size,\n  };\n}\n\nexport { FontFinder, getMetrics, selectFont };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { selectFont } from \"./fonts.js\";\n\nconst WIDTH_FACTOR = 1.02;\n\nclass FontInfo {\n  constructor(xfaFont, margin, lineHeight, fontFinder) {\n    this.lineHeight = lineHeight;\n    this.paraMargin = margin || {\n      top: 0,\n      bottom: 0,\n      left: 0,\n      right: 0,\n    };\n\n    if (!xfaFont) {\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n      return;\n    }\n\n    this.xfaFont = {\n      typeface: xfaFont.typeface,\n      posture: xfaFont.posture,\n      weight: xfaFont.weight,\n      size: xfaFont.size,\n      letterSpacing: xfaFont.letterSpacing,\n    };\n    const typeface = fontFinder.find(xfaFont.typeface);\n    if (!typeface) {\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n      return;\n    }\n\n    this.pdfFont = selectFont(xfaFont, typeface);\n\n    if (!this.pdfFont) {\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n    }\n  }\n\n  defaultFont(fontFinder) {\n    // TODO: Add a default font based on Liberation.\n    const font =\n      fontFinder.find(\"Helvetica\", false) ||\n      fontFinder.find(\"Myriad Pro\", false) ||\n      fontFinder.find(\"Arial\", false) ||\n      fontFinder.getDefault();\n    if (font && font.regular) {\n      const pdfFont = font.regular;\n      const info = pdfFont.cssFontInfo;\n      const xfaFont = {\n        typeface: info.fontFamily,\n        posture: \"normal\",\n        weight: \"normal\",\n        size: 10,\n        letterSpacing: 0,\n      };\n      return [pdfFont, xfaFont];\n    }\n\n    const xfaFont = {\n      typeface: \"Courier\",\n      posture: \"normal\",\n      weight: \"normal\",\n      size: 10,\n      letterSpacing: 0,\n    };\n    return [null, xfaFont];\n  }\n}\n\nclass FontSelector {\n  constructor(\n    defaultXfaFont,\n    defaultParaMargin,\n    defaultLineHeight,\n    fontFinder\n  ) {\n    this.fontFinder = fontFinder;\n    this.stack = [\n      new FontInfo(\n        defaultXfaFont,\n        defaultParaMargin,\n        defaultLineHeight,\n        fontFinder\n      ),\n    ];\n  }\n\n  pushData(xfaFont, margin, lineHeight) {\n    const lastFont = this.stack[this.stack.length - 1];\n    for (const name of [\n      \"typeface\",\n      \"posture\",\n      \"weight\",\n      \"size\",\n      \"letterSpacing\",\n    ]) {\n      if (!xfaFont[name]) {\n        xfaFont[name] = lastFont.xfaFont[name];\n      }\n    }\n\n    for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n      if (isNaN(margin[name])) {\n        margin[name] = lastFont.paraMargin[name];\n      }\n    }\n\n    const fontInfo = new FontInfo(\n      xfaFont,\n      margin,\n      lineHeight || lastFont.lineHeight,\n      this.fontFinder\n    );\n    if (!fontInfo.pdfFont) {\n      fontInfo.pdfFont = lastFont.pdfFont;\n    }\n\n    this.stack.push(fontInfo);\n  }\n\n  popFont() {\n    this.stack.pop();\n  }\n\n  topFont() {\n    return this.stack[this.stack.length - 1];\n  }\n}\n\n/**\n * Compute a text area dimensions based on font metrics.\n */\nclass TextMeasure {\n  constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n    this.glyphs = [];\n    this.fontSelector = new FontSelector(\n      defaultXfaFont,\n      defaultParaMargin,\n      defaultLineHeight,\n      fonts\n    );\n    this.extraHeight = 0;\n  }\n\n  pushData(xfaFont, margin, lineHeight) {\n    this.fontSelector.pushData(xfaFont, margin, lineHeight);\n  }\n\n  popFont(xfaFont) {\n    return this.fontSelector.popFont();\n  }\n\n  addPara() {\n    const lastFont = this.fontSelector.topFont();\n    this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n  }\n\n  addString(str) {\n    if (!str) {\n      return;\n    }\n\n    const lastFont = this.fontSelector.topFont();\n    const fontSize = lastFont.xfaFont.size;\n    if (lastFont.pdfFont) {\n      const letterSpacing = lastFont.xfaFont.letterSpacing;\n      const pdfFont = lastFont.pdfFont;\n      const fontLineHeight = pdfFont.lineHeight || 1.2;\n      const lineHeight =\n        lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n      const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n      const noGap = fontLineHeight - lineGap;\n      const firstLineHeight = Math.max(1, noGap) * fontSize;\n      const scale = fontSize / 1000;\n      const fallbackWidth =\n        pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n\n      for (const line of str.split(/[\\u2029\\n]/)) {\n        const encodedLine = pdfFont.encodeString(line).join(\"\");\n        const glyphs = pdfFont.charsToGlyphs(encodedLine);\n\n        for (const glyph of glyphs) {\n          const width = glyph.width || fallbackWidth;\n          this.glyphs.push([\n            width * scale + letterSpacing,\n            lineHeight,\n            firstLineHeight,\n            glyph.unicode,\n            false,\n          ]);\n        }\n\n        this.glyphs.push([0, 0, 0, \"\\n\", true]);\n      }\n      this.glyphs.pop();\n      return;\n    }\n\n    // When we have no font in the pdf, just use the font size as default width.\n    for (const line of str.split(/[\\u2029\\n]/)) {\n      for (const char of line.split(\"\")) {\n        this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n      }\n\n      this.glyphs.push([0, 0, 0, \"\\n\", true]);\n    }\n    this.glyphs.pop();\n  }\n\n  compute(maxWidth) {\n    let lastSpacePos = -1,\n      lastSpaceWidth = 0,\n      width = 0,\n      height = 0,\n      currentLineWidth = 0,\n      currentLineHeight = 0;\n    let isBroken = false;\n    let isFirstLine = true;\n\n    for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n      const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] =\n        this.glyphs[i];\n      const isSpace = char === \" \";\n      const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n      if (isEOL) {\n        width = Math.max(width, currentLineWidth);\n        currentLineWidth = 0;\n        height += currentLineHeight;\n        currentLineHeight = glyphHeight;\n        lastSpacePos = -1;\n        lastSpaceWidth = 0;\n        isFirstLine = false;\n        continue;\n      }\n\n      if (isSpace) {\n        if (currentLineWidth + glyphWidth > maxWidth) {\n          // We can break here but the space is not taken into account.\n          width = Math.max(width, currentLineWidth);\n          currentLineWidth = 0;\n          height += currentLineHeight;\n          currentLineHeight = glyphHeight;\n          lastSpacePos = -1;\n          lastSpaceWidth = 0;\n          isBroken = true;\n          isFirstLine = false;\n        } else {\n          currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n          lastSpaceWidth = currentLineWidth;\n          currentLineWidth += glyphWidth;\n          lastSpacePos = i;\n        }\n        continue;\n      }\n\n      if (currentLineWidth + glyphWidth > maxWidth) {\n        // We must break to the last white position (if available)\n        height += currentLineHeight;\n        currentLineHeight = glyphHeight;\n        if (lastSpacePos !== -1) {\n          i = lastSpacePos;\n          width = Math.max(width, lastSpaceWidth);\n          currentLineWidth = 0;\n          lastSpacePos = -1;\n          lastSpaceWidth = 0;\n        } else {\n          // Just break in the middle of the word\n          width = Math.max(width, currentLineWidth);\n          currentLineWidth = glyphWidth;\n        }\n        isBroken = true;\n        isFirstLine = false;\n\n        continue;\n      }\n\n      currentLineWidth += glyphWidth;\n      currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n    }\n\n    width = Math.max(width, currentLineWidth);\n    height += currentLineHeight + this.extraHeight;\n\n    return { width: WIDTH_FACTOR * width, height, isBroken };\n  }\n}\n\nexport { TextMeasure };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $getAttributes,\n  $getChildren,\n  $nodeName,\n  $setValue,\n  $toString,\n  $uid,\n} from \"./xfa_object.js\";\n\nclass DataHandler {\n  constructor(root, data) {\n    this.data = data;\n    this.dataset = root.datasets || null;\n  }\n\n  serialize(storage) {\n    const stack = [[-1, this.data[$getChildren]()]];\n\n    while (stack.length > 0) {\n      const last = stack[stack.length - 1];\n      const [i, children] = last;\n      if (i + 1 === children.length) {\n        stack.pop();\n        continue;\n      }\n\n      const child = children[++last[0]];\n      const storageEntry = storage.get(child[$uid]);\n      if (storageEntry) {\n        child[$setValue](storageEntry);\n      } else {\n        const attributes = child[$getAttributes]();\n        for (const value of attributes.values()) {\n          const entry = storage.get(value[$uid]);\n          if (entry) {\n            value[$setValue](entry);\n            break;\n          }\n        }\n      }\n\n      const nodes = child[$getChildren]();\n      if (nodes.length > 0) {\n        stack.push([-1, nodes]);\n      }\n    }\n\n    const buf = [\n      `<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">`,\n    ];\n    if (this.dataset) {\n      // Dump nodes other than data: they can contains for example\n      // some data for choice lists.\n      for (const child of this.dataset[$getChildren]()) {\n        if (child[$nodeName] !== \"data\") {\n          child[$toString](buf);\n        }\n      }\n    }\n    this.data[$toString](buf);\n    buf.push(\"</xfa:datasets>\");\n\n    return buf.join(\"\");\n  }\n}\n\nexport { DataHandler };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $acceptWhitespace,\n  $clean,\n  $content,\n  $finalize,\n  $globalData,\n  $isCDATAXml,\n  $nsAttributes,\n  $onChild,\n  $onText,\n  $setId,\n} from \"./xfa_object.js\";\nimport { XMLParserBase, XMLParserErrorCode } from \"../xml_parser.js\";\nimport { Builder } from \"./builder.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass XFAParser extends XMLParserBase {\n  constructor(rootNameSpace = null, richText = false) {\n    super();\n    this._builder = new Builder(rootNameSpace);\n    this._stack = [];\n    this._globalData = {\n      usedTypefaces: new Set(),\n    };\n    this._ids = new Map();\n    this._current = this._builder.buildRoot(this._ids);\n    this._errorCode = XMLParserErrorCode.NoError;\n    this._whiteRegex = /^\\s+$/;\n    this._nbsps = /\\xa0+/g;\n    this._richText = richText;\n  }\n\n  parse(data) {\n    this.parseXml(data);\n\n    if (this._errorCode !== XMLParserErrorCode.NoError) {\n      return undefined;\n    }\n\n    this._current[$finalize]();\n\n    return this._current.element;\n  }\n\n  onText(text) {\n    // Normally by definition a &nbsp is unbreakable\n    // but in real life Acrobat can break strings on &nbsp.\n    text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n    if (this._richText || this._current[$acceptWhitespace]()) {\n      this._current[$onText](text, this._richText);\n      return;\n    }\n\n    if (this._whiteRegex.test(text)) {\n      return;\n    }\n    this._current[$onText](text.trim());\n  }\n\n  onCdata(text) {\n    this._current[$onText](text);\n  }\n\n  _mkAttributes(attributes, tagName) {\n    // Transform attributes into an object and get out\n    // namespaces information.\n    let namespace = null;\n    let prefixes = null;\n    const attributeObj = Object.create({});\n    for (const { name, value } of attributes) {\n      if (name === \"xmlns\") {\n        if (!namespace) {\n          namespace = value;\n        } else {\n          warn(`XFA - multiple namespace definition in <${tagName}>`);\n        }\n      } else if (name.startsWith(\"xmlns:\")) {\n        const prefix = name.substring(\"xmlns:\".length);\n        if (!prefixes) {\n          prefixes = [];\n        }\n        prefixes.push({ prefix, value });\n      } else {\n        const i = name.indexOf(\":\");\n        if (i === -1) {\n          attributeObj[name] = value;\n        } else {\n          // Attributes can have their own namespace.\n          // For example in data, we can have <foo xfa:dataNode=\"dataGroup\"/>\n          let nsAttrs = attributeObj[$nsAttributes];\n          if (!nsAttrs) {\n            nsAttrs = attributeObj[$nsAttributes] = Object.create(null);\n          }\n          const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n          let attrs = nsAttrs[ns];\n          if (!attrs) {\n            attrs = nsAttrs[ns] = Object.create(null);\n          }\n          attrs[attrName] = value;\n        }\n      }\n    }\n\n    return [namespace, prefixes, attributeObj];\n  }\n\n  _getNameAndPrefix(name, nsAgnostic) {\n    const i = name.indexOf(\":\");\n    if (i === -1) {\n      return [name, null];\n    }\n    return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n  }\n\n  onBeginElement(tagName, attributes, isEmpty) {\n    const [namespace, prefixes, attributesObj] = this._mkAttributes(\n      attributes,\n      tagName\n    );\n    const [name, nsPrefix] = this._getNameAndPrefix(\n      tagName,\n      this._builder.isNsAgnostic()\n    );\n    const node = this._builder.build({\n      nsPrefix,\n      name,\n      attributes: attributesObj,\n      namespace,\n      prefixes,\n    });\n    node[$globalData] = this._globalData;\n\n    if (isEmpty) {\n      // No children: just push the node into its parent.\n      node[$finalize]();\n      if (this._current[$onChild](node)) {\n        node[$setId](this._ids);\n      }\n      node[$clean](this._builder);\n      return;\n    }\n\n    this._stack.push(this._current);\n    this._current = node;\n  }\n\n  onEndElement(name) {\n    const node = this._current;\n    if (node[$isCDATAXml]() && typeof node[$content] === \"string\") {\n      const parser = new XFAParser();\n      parser._globalData = this._globalData;\n      const root = parser.parse(node[$content]);\n      node[$content] = null;\n      node[$onChild](root);\n    }\n\n    node[$finalize]();\n    this._current = this._stack.pop();\n    if (this._current[$onChild](node)) {\n      node[$setId](this._ids);\n    }\n    node[$clean](this._builder);\n  }\n\n  onError(code) {\n    this._errorCode = code;\n  }\n}\n\nexport { XFAParser };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n  $cleanup,\n  $finalize,\n  $ids,\n  $isNsAgnostic,\n  $nsAttributes,\n  $onChild,\n  $resolvePrototypes,\n  $root,\n  XFAObject,\n} from \"./xfa_object.js\";\nimport { NamespaceSetUp } from \"./setup.js\";\nimport { Template } from \"./template.js\";\nimport { UnknownNamespace } from \"./unknown.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass Root extends XFAObject {\n  constructor(ids) {\n    super(-1, \"root\", Object.create(null));\n    this.element = null;\n    this[$ids] = ids;\n  }\n\n  [$onChild](child) {\n    this.element = child;\n    return true;\n  }\n\n  [$finalize]() {\n    super[$finalize]();\n    if (this.element.template instanceof Template) {\n      // Set the root element in $ids using a symbol in order\n      // to avoid conflict with real IDs.\n      this[$ids].set($root, this.element);\n\n      this.element.template[$resolvePrototypes](this[$ids]);\n      this.element.template[$ids] = this[$ids];\n    }\n  }\n}\n\nclass Empty extends XFAObject {\n  constructor() {\n    super(-1, \"\", Object.create(null));\n  }\n\n  [$onChild](_) {\n    return false;\n  }\n}\n\nclass Builder {\n  constructor(rootNameSpace = null) {\n    this._namespaceStack = [];\n    this._nsAgnosticLevel = 0;\n\n    // Each prefix has its own stack\n    this._namespacePrefixes = new Map();\n    this._namespaces = new Map();\n    this._nextNsId = Math.max(\n      ...Object.values(NamespaceIds).map(({ id }) => id)\n    );\n    this._currentNamespace =\n      rootNameSpace || new UnknownNamespace(++this._nextNsId);\n  }\n\n  buildRoot(ids) {\n    return new Root(ids);\n  }\n\n  build({ nsPrefix, name, attributes, namespace, prefixes }) {\n    const hasNamespaceDef = namespace !== null;\n    if (hasNamespaceDef) {\n      // Define the current namespace to use.\n      this._namespaceStack.push(this._currentNamespace);\n      this._currentNamespace = this._searchNamespace(namespace);\n    }\n\n    if (prefixes) {\n      // The xml node may have namespace prefix definitions\n      this._addNamespacePrefix(prefixes);\n    }\n\n    if (attributes.hasOwnProperty($nsAttributes)) {\n      // Only support xfa-data namespace.\n      const dataTemplate = NamespaceSetUp.datasets;\n      const nsAttrs = attributes[$nsAttributes];\n      let xfaAttrs = null;\n      for (const [ns, attrs] of Object.entries(nsAttrs)) {\n        const nsToUse = this._getNamespaceToUse(ns);\n        if (nsToUse === dataTemplate) {\n          xfaAttrs = { xfa: attrs };\n          break;\n        }\n      }\n      if (xfaAttrs) {\n        attributes[$nsAttributes] = xfaAttrs;\n      } else {\n        delete attributes[$nsAttributes];\n      }\n    }\n\n    const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n    const node =\n      (namespaceToUse && namespaceToUse[$buildXFAObject](name, attributes)) ||\n      new Empty();\n\n    if (node[$isNsAgnostic]()) {\n      this._nsAgnosticLevel++;\n    }\n\n    // In case the node has some namespace things,\n    // we must pop the different stacks.\n    if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n      node[$cleanup] = {\n        hasNamespace: hasNamespaceDef,\n        prefixes,\n        nsAgnostic: node[$isNsAgnostic](),\n      };\n    }\n\n    return node;\n  }\n\n  isNsAgnostic() {\n    return this._nsAgnosticLevel > 0;\n  }\n\n  _searchNamespace(nsName) {\n    let ns = this._namespaces.get(nsName);\n    if (ns) {\n      return ns;\n    }\n    for (const [name, { check }] of Object.entries(NamespaceIds)) {\n      if (check(nsName)) {\n        ns = NamespaceSetUp[name];\n        if (ns) {\n          this._namespaces.set(nsName, ns);\n          return ns;\n        }\n        // The namespace is known but not handled.\n        break;\n      }\n    }\n\n    ns = new UnknownNamespace(++this._nextNsId);\n    this._namespaces.set(nsName, ns);\n    return ns;\n  }\n\n  _addNamespacePrefix(prefixes) {\n    for (const { prefix, value } of prefixes) {\n      const namespace = this._searchNamespace(value);\n      let prefixStack = this._namespacePrefixes.get(prefix);\n      if (!prefixStack) {\n        prefixStack = [];\n        this._namespacePrefixes.set(prefix, prefixStack);\n      }\n      prefixStack.push(namespace);\n    }\n  }\n\n  _getNamespaceToUse(prefix) {\n    if (!prefix) {\n      return this._currentNamespace;\n    }\n    const prefixStack = this._namespacePrefixes.get(prefix);\n    if (prefixStack && prefixStack.length > 0) {\n      return prefixStack[prefixStack.length - 1];\n    }\n\n    warn(`Unknown namespace prefix: ${prefix}.`);\n    return null;\n  }\n\n  clean(data) {\n    const { hasNamespace, prefixes, nsAgnostic } = data;\n    if (hasNamespace) {\n      this._currentNamespace = this._namespaceStack.pop();\n    }\n    if (prefixes) {\n      prefixes.forEach(({ prefix }) => {\n        this._namespacePrefixes.get(prefix).pop();\n      });\n    }\n    if (nsAgnostic) {\n      this._nsAgnosticLevel--;\n    }\n  }\n}\n\nexport { Builder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ConfigNamespace } from \"./config.js\";\nimport { ConnectionSetNamespace } from \"./connection_set.js\";\nimport { DatasetsNamespace } from \"./datasets.js\";\nimport { LocaleSetNamespace } from \"./locale_set.js\";\nimport { SignatureNamespace } from \"./signature.js\";\nimport { StylesheetNamespace } from \"./stylesheet.js\";\nimport { TemplateNamespace } from \"./template.js\";\nimport { XdpNamespace } from \"./xdp.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nconst NamespaceSetUp = {\n  config: ConfigNamespace,\n  connection: ConnectionSetNamespace,\n  datasets: DatasetsNamespace,\n  localeSet: LocaleSetNamespace,\n  signature: SignatureNamespace,\n  stylesheet: StylesheetNamespace,\n  template: TemplateNamespace,\n  xdp: XdpNamespace,\n  xhtml: XhtmlNamespace,\n};\n\nexport { NamespaceSetUp };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n  $content,\n  $finalize,\n  ContentObject,\n  IntegerObject,\n  Option01,\n  Option10,\n  OptionObject,\n  StringObject,\n  XFAObject,\n  XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\nimport { shadow, warn } from \"../../shared/util.js\";\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\n\nclass Acrobat extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"acrobat\", /* hasChildren = */ true);\n    this.acrobat7 = null;\n    this.autoSave = null;\n    this.common = null;\n    this.validate = null;\n    this.validateApprovalSignatures = null;\n    this.submitUrl = new XFAObjectArray();\n  }\n}\n\nclass Acrobat7 extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"acrobat7\", /* hasChildren = */ true);\n    this.dynamicRender = null;\n  }\n}\n\nclass ADBE_JSConsole extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n  }\n}\n\nclass ADBE_JSDebugger extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n  }\n}\n\nclass AddSilentPrint extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"addSilentPrint\");\n  }\n}\n\nclass AddViewerPreferences extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"addViewerPreferences\");\n  }\n}\n\nclass AdjustData extends Option10 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"adjustData\");\n  }\n}\n\nclass AdobeExtensionLevel extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n  }\n}\n\nclass Agent extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"agent\", /* hasChildren = */ true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.common = new XFAObjectArray();\n  }\n}\n\nclass AlwaysEmbed extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"alwaysEmbed\");\n  }\n}\n\nclass Amd extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"amd\");\n  }\n}\n\nclass Area extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"area\");\n    this.level = getInteger({\n      data: attributes.level,\n      defaultValue: 0,\n      validate: n => n >= 1 && n <= 3,\n    });\n    this.name = getStringOption(attributes.name, [\n      \"\",\n      \"barcode\",\n      \"coreinit\",\n      \"deviceDriver\",\n      \"font\",\n      \"general\",\n      \"layout\",\n      \"merge\",\n      \"script\",\n      \"signature\",\n      \"sourceSet\",\n      \"templateCache\",\n    ]);\n  }\n}\n\nclass Attributes extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n  }\n}\n\nclass AutoSave extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n  }\n}\n\nclass Base extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"base\");\n  }\n}\n\nclass BatchOutput extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"batchOutput\");\n    this.format = getStringOption(attributes.format, [\n      \"none\",\n      \"concat\",\n      \"zip\",\n      \"zipCompress\",\n    ]);\n  }\n}\n\nclass BehaviorOverride extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"behaviorOverride\");\n  }\n\n  [$finalize]() {\n    this[$content] = new Map(\n      this[$content]\n        .trim()\n        .split(/\\s+/)\n        .filter(x => x.includes(\":\"))\n        .map(x => x.split(\":\", 2))\n    );\n  }\n}\n\nclass Cache extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"cache\", /* hasChildren = */ true);\n    this.templateCache = null;\n  }\n}\n\nclass Change extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"change\");\n  }\n}\n\nclass Common extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"common\", /* hasChildren = */ true);\n    this.data = null;\n    this.locale = null;\n    this.localeSet = null;\n    this.messaging = null;\n    this.suppressBanner = null;\n    this.template = null;\n    this.validationMessaging = null;\n    this.versionControl = null;\n    this.log = new XFAObjectArray();\n  }\n}\n\nclass Compress extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compress\");\n    this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n  }\n}\n\nclass CompressLogicalStructure extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compressLogicalStructure\");\n  }\n}\n\nclass CompressObjectStream extends Option10 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compressObjectStream\");\n  }\n}\n\nclass Compression extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compression\", /* hasChildren = */ true);\n    this.compressLogicalStructure = null;\n    this.compressObjectStream = null;\n    this.level = null;\n    this.type = null;\n  }\n}\n\nclass Config extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"config\", /* hasChildren = */ true);\n    this.acrobat = null;\n    this.present = null;\n    this.trace = null;\n    this.agent = new XFAObjectArray();\n  }\n}\n\nclass Conformance extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n  }\n}\n\nclass ContentCopy extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"contentCopy\");\n  }\n}\n\nclass Copies extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n  }\n}\n\nclass Creator extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"creator\");\n  }\n}\n\nclass CurrentPage extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n  }\n}\n\nclass Data extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"data\", /* hasChildren = */ true);\n    this.adjustData = null;\n    this.attributes = null;\n    this.incrementalLoad = null;\n    this.outputXSL = null;\n    this.range = null;\n    this.record = null;\n    this.startNode = null;\n    this.uri = null;\n    this.window = null;\n    this.xsl = null;\n    this.excludeNS = new XFAObjectArray();\n    this.transform = new XFAObjectArray();\n  }\n}\n\nclass Debug extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"debug\", /* hasChildren = */ true);\n    this.uri = null;\n  }\n}\n\nclass DefaultTypeface extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"defaultTypeface\");\n    this.writingScript = getStringOption(attributes.writingScript, [\n      \"*\",\n      \"Arabic\",\n      \"Cyrillic\",\n      \"EastEuropeanRoman\",\n      \"Greek\",\n      \"Hebrew\",\n      \"Japanese\",\n      \"Korean\",\n      \"Roman\",\n      \"SimplifiedChinese\",\n      \"Thai\",\n      \"TraditionalChinese\",\n      \"Vietnamese\",\n    ]);\n  }\n}\n\nclass Destination extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"destination\", [\n      \"pdf\",\n      \"pcl\",\n      \"ps\",\n      \"webClient\",\n      \"zpl\",\n    ]);\n  }\n}\n\nclass DocumentAssembly extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"documentAssembly\");\n  }\n}\n\nclass Driver extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"driver\", /* hasChildren = */ true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n}\n\nclass DuplexOption extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"duplexOption\", [\n      \"simplex\",\n      \"duplexFlipLongEdge\",\n      \"duplexFlipShortEdge\",\n    ]);\n  }\n}\n\nclass DynamicRender extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n  }\n}\n\nclass Embed extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"embed\");\n  }\n}\n\nclass Encrypt extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"encrypt\");\n  }\n}\n\nclass Encryption extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"encryption\", /* hasChildren = */ true);\n    this.encrypt = null;\n    this.encryptionLevel = null;\n    this.permissions = null;\n  }\n}\n\nclass EncryptionLevel extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n  }\n}\n\nclass Enforce extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"enforce\");\n  }\n}\n\nclass Equate extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"equate\");\n\n    this.force = getInteger({\n      data: attributes.force,\n      defaultValue: 1,\n      validate: n => n === 0,\n    });\n\n    this.from = attributes.from || \"\";\n    this.to = attributes.to || \"\";\n  }\n}\n\nclass EquateRange extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"equateRange\");\n\n    this.from = attributes.from || \"\";\n    this.to = attributes.to || \"\";\n    this._unicodeRange = attributes.unicodeRange || \"\";\n  }\n\n  get unicodeRange() {\n    const ranges = [];\n    const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n    const unicodeRange = this._unicodeRange;\n    for (let range of unicodeRange\n      .split(\",\")\n      .map(x => x.trim())\n      .filter(x => !!x)) {\n      range = range.split(\"-\", 2).map(x => {\n        const found = x.match(unicodeRegex);\n        if (!found) {\n          return 0;\n        }\n        return parseInt(found[1], 16);\n      });\n      if (range.length === 1) {\n        range.push(range[0]);\n      }\n      ranges.push(range);\n    }\n    return shadow(this, \"unicodeRange\", ranges);\n  }\n}\n\nclass Exclude extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"exclude\");\n  }\n\n  [$finalize]() {\n    this[$content] = this[$content]\n      .trim()\n      .split(/\\s+/)\n      .filter(\n        x =>\n          x &&\n          [\n            \"calculate\",\n            \"close\",\n            \"enter\",\n            \"exit\",\n            \"initialize\",\n            \"ready\",\n            \"validate\",\n          ].includes(x)\n      );\n  }\n}\n\nclass ExcludeNS extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"excludeNS\");\n  }\n}\n\nclass FlipLabel extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n  }\n}\n\nclass FontInfo extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"fontInfo\", /* hasChildren = */ true);\n    this.embed = null;\n    this.map = null;\n    this.subsetBelow = null;\n    this.alwaysEmbed = new XFAObjectArray();\n    this.defaultTypeface = new XFAObjectArray();\n    this.neverEmbed = new XFAObjectArray();\n  }\n}\n\nclass FormFieldFilling extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"formFieldFilling\");\n  }\n}\n\nclass GroupParent extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"groupParent\");\n  }\n}\n\nclass IfEmpty extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ifEmpty\", [\n      \"dataValue\",\n      \"dataGroup\",\n      \"ignore\",\n      \"remove\",\n    ]);\n  }\n}\n\nclass IncludeXDPContent extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"includeXDPContent\");\n  }\n}\n\nclass IncrementalLoad extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n  }\n}\n\nclass IncrementalMerge extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"incrementalMerge\");\n  }\n}\n\nclass Interactive extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"interactive\");\n  }\n}\n\nclass Jog extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n  }\n}\n\nclass LabelPrinter extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"labelPrinter\", /* hasChildren = */ true);\n    this.name = getStringOption(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n    this.batchOutput = null;\n    this.flipLabel = null;\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n}\n\nclass Layout extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n  }\n}\n\nclass Level extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n  }\n}\n\nclass Linearized extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"linearized\");\n  }\n}\n\nclass Locale extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"locale\");\n  }\n}\n\nclass LocaleSet extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"localeSet\");\n  }\n}\n\nclass Log extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"log\", /* hasChildren = */ true);\n    this.mode = null;\n    this.threshold = null;\n    this.to = null;\n    this.uri = null;\n  }\n}\n\n// Renamed in MapElement to avoid confusion with usual js Map.\nclass MapElement extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"map\", /* hasChildren = */ true);\n    this.equate = new XFAObjectArray();\n    this.equateRange = new XFAObjectArray();\n  }\n}\n\nclass MediumInfo extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"mediumInfo\", /* hasChildren = */ true);\n    this.map = null;\n  }\n}\n\nclass Message extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"message\", /* hasChildren = */ true);\n    this.msgId = null;\n    this.severity = null;\n  }\n}\n\nclass Messaging extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"messaging\", /* hasChildren = */ true);\n    this.message = new XFAObjectArray();\n  }\n}\n\nclass Mode extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n  }\n}\n\nclass ModifyAnnots extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"modifyAnnots\");\n  }\n}\n\nclass MsgId extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n  }\n}\n\nclass NameAttr extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"nameAttr\");\n  }\n}\n\nclass NeverEmbed extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"neverEmbed\");\n  }\n}\n\nclass NumberOfCopies extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n  }\n}\n\nclass OpenAction extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"openAction\", /* hasChildren = */ true);\n    this.destination = null;\n  }\n}\n\nclass Output extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"output\", /* hasChildren = */ true);\n    this.to = null;\n    this.type = null;\n    this.uri = null;\n  }\n}\n\nclass OutputBin extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"outputBin\");\n  }\n}\n\nclass OutputXSL extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"outputXSL\", /* hasChildren = */ true);\n    this.uri = null;\n  }\n}\n\nclass Overprint extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n  }\n}\n\nclass Packets extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"packets\");\n  }\n\n  [$finalize]() {\n    if (this[$content] === \"*\") {\n      return;\n    }\n    this[$content] = this[$content]\n      .trim()\n      .split(/\\s+/)\n      .filter(x =>\n        [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x)\n      );\n  }\n}\n\nclass PageOffset extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pageOffset\");\n    this.x = getInteger({\n      data: attributes.x,\n      defaultValue: \"useXDCSetting\",\n      validate: n => true,\n    });\n    this.y = getInteger({\n      data: attributes.y,\n      defaultValue: \"useXDCSetting\",\n      validate: n => true,\n    });\n  }\n}\n\nclass PageRange extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pageRange\");\n  }\n\n  [$finalize]() {\n    const numbers = this[$content]\n      .trim()\n      .split(/\\s+/)\n      .map(x => parseInt(x, 10));\n    const ranges = [];\n    for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n      ranges.push(numbers.slice(i, i + 2));\n    }\n    this[$content] = ranges;\n  }\n}\n\nclass Pagination extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pagination\", [\n      \"simplex\",\n      \"duplexShortEdge\",\n      \"duplexLongEdge\",\n    ]);\n  }\n}\n\nclass PaginationOverride extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"paginationOverride\", [\n      \"none\",\n      \"forceDuplex\",\n      \"forceDuplexLongEdge\",\n      \"forceDuplexShortEdge\",\n      \"forceSimplex\",\n    ]);\n  }\n}\n\nclass Part extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"part\", 1, n => false);\n  }\n}\n\nclass Pcl extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pcl\", /* hasChildren = */ true);\n    this.name = attributes.name || \"\";\n    this.batchOutput = null;\n    this.fontInfo = null;\n    this.jog = null;\n    this.mediumInfo = null;\n    this.outputBin = null;\n    this.pageOffset = null;\n    this.staple = null;\n    this.xdc = null;\n  }\n}\n\nclass Pdf extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pdf\", /* hasChildren = */ true);\n    this.name = attributes.name || \"\";\n    this.adobeExtensionLevel = null;\n    this.batchOutput = null;\n    this.compression = null;\n    this.creator = null;\n    this.encryption = null;\n    this.fontInfo = null;\n    this.interactive = null;\n    this.linearized = null;\n    this.openAction = null;\n    this.pdfa = null;\n    this.producer = null;\n    this.renderPolicy = null;\n    this.scriptModel = null;\n    this.silentPrint = null;\n    this.submitFormat = null;\n    this.tagged = null;\n    this.version = null;\n    this.viewerPreferences = null;\n    this.xdc = null;\n  }\n}\n\nclass Pdfa extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pdfa\", /* hasChildren = */ true);\n    this.amd = null;\n    this.conformance = null;\n    this.includeXDPContent = null;\n    this.part = null;\n  }\n}\n\nclass Permissions extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"permissions\", /* hasChildren = */ true);\n    this.accessibleContent = null;\n    this.change = null;\n    this.contentCopy = null;\n    this.documentAssembly = null;\n    this.formFieldFilling = null;\n    this.modifyAnnots = null;\n    this.plaintextMetadata = null;\n    this.print = null;\n    this.printHighQuality = null;\n  }\n}\n\nclass PickTrayByPDFSize extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n  }\n}\n\nclass Picture extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"picture\");\n  }\n\n  // TODO: check the validity of the picture clause.\n  // See page 1150 in the spec.\n}\n\nclass PlaintextMetadata extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"plaintextMetadata\");\n  }\n}\n\nclass Presence extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"presence\", [\n      \"preserve\",\n      \"dissolve\",\n      \"dissolveStructure\",\n      \"ignore\",\n      \"remove\",\n    ]);\n  }\n}\n\nclass Present extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"present\", /* hasChildren = */ true);\n    this.behaviorOverride = null;\n    this.cache = null;\n    this.common = null;\n    this.copies = null;\n    this.destination = null;\n    this.incrementalMerge = null;\n    this.layout = null;\n    this.output = null;\n    this.overprint = null;\n    this.pagination = null;\n    this.paginationOverride = null;\n    this.script = null;\n    this.validate = null;\n    this.xdp = null;\n    this.driver = new XFAObjectArray();\n    this.labelPrinter = new XFAObjectArray();\n    this.pcl = new XFAObjectArray();\n    this.pdf = new XFAObjectArray();\n    this.ps = new XFAObjectArray();\n    this.submitUrl = new XFAObjectArray();\n    this.webClient = new XFAObjectArray();\n    this.zpl = new XFAObjectArray();\n  }\n}\n\nclass Print extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"print\");\n  }\n}\n\nclass PrintHighQuality extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"printHighQuality\");\n  }\n}\n\nclass PrintScaling extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n  }\n}\n\nclass PrinterName extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"printerName\");\n  }\n}\n\nclass Producer extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"producer\");\n  }\n}\n\nclass Ps extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ps\", /* hasChildren = */ true);\n    this.name = attributes.name || \"\";\n    this.batchOutput = null;\n    this.fontInfo = null;\n    this.jog = null;\n    this.mediumInfo = null;\n    this.outputBin = null;\n    this.staple = null;\n    this.xdc = null;\n  }\n}\n\nclass Range extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"range\");\n  }\n\n  [$finalize]() {\n    this[$content] = this[$content]\n      .trim()\n      .split(/\\s*,\\s*/, 2)\n      .map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10)))\n      .filter(range => range.every(x => !isNaN(x)))\n      .map(range => {\n        if (range.length === 1) {\n          range.push(range[0]);\n        }\n        return range;\n      });\n  }\n}\n\nclass Record extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"record\");\n  }\n\n  [$finalize]() {\n    this[$content] = this[$content].trim();\n    const n = parseInt(this[$content], 10);\n    if (!isNaN(n) && n >= 0) {\n      this[$content] = n;\n    }\n  }\n}\n\nclass Relevant extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"relevant\");\n  }\n\n  [$finalize]() {\n    this[$content] = this[$content].trim().split(/\\s+/);\n  }\n}\n\nclass Rename extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"rename\");\n  }\n\n  [$finalize]() {\n    this[$content] = this[$content].trim();\n    // String must be a XFA name: same as XML one except that there\n    // is no colon.\n    if (\n      this[$content].toLowerCase().startsWith(\"xml\") ||\n      this[$content].match(new RegExp(\"[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*\", \"u\"))\n    ) {\n      warn(\"XFA - Rename: invalid XFA name\");\n    }\n  }\n}\n\nclass RenderPolicy extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n  }\n}\n\nclass RunScripts extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n  }\n}\n\nclass Script extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"script\", /* hasChildren = */ true);\n    this.currentPage = null;\n    this.exclude = null;\n    this.runScripts = null;\n  }\n}\n\nclass ScriptModel extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n  }\n}\n\nclass Severity extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"severity\", [\n      \"ignore\",\n      \"error\",\n      \"information\",\n      \"trace\",\n      \"warning\",\n    ]);\n  }\n}\n\nclass SilentPrint extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"silentPrint\", /* hasChildren = */ true);\n    this.addSilentPrint = null;\n    this.printerName = null;\n  }\n}\n\nclass Staple extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"staple\");\n    this.mode = getStringOption(attributes.mode, [\n      \"usePrinterSetting\",\n      \"on\",\n      \"off\",\n    ]);\n  }\n}\n\nclass StartNode extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"startNode\");\n  }\n}\n\nclass StartPage extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n  }\n}\n\nclass SubmitFormat extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"submitFormat\", [\n      \"html\",\n      \"delegate\",\n      \"fdf\",\n      \"xml\",\n      \"pdf\",\n    ]);\n  }\n}\n\nclass SubmitUrl extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"submitUrl\");\n  }\n}\n\nclass SubsetBelow extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n  }\n}\n\nclass SuppressBanner extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"suppressBanner\");\n  }\n}\n\nclass Tagged extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"tagged\");\n  }\n}\n\nclass Template extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"template\", /* hasChildren = */ true);\n    this.base = null;\n    this.relevant = null;\n    this.startPage = null;\n    this.uri = null;\n    this.xsl = null;\n  }\n}\n\nclass Threshold extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"threshold\", [\n      \"trace\",\n      \"error\",\n      \"information\",\n      \"warning\",\n    ]);\n  }\n}\n\nclass To extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"to\", [\n      \"null\",\n      \"memory\",\n      \"stderr\",\n      \"stdout\",\n      \"system\",\n      \"uri\",\n    ]);\n  }\n}\n\nclass TemplateCache extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"templateCache\");\n    this.maxEntries = getInteger({\n      data: attributes.maxEntries,\n      defaultValue: 5,\n      validate: n => n >= 0,\n    });\n  }\n}\n\nclass Trace extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"trace\", /* hasChildren = */ true);\n    this.area = new XFAObjectArray();\n  }\n}\n\nclass Transform extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"transform\", /* hasChildren = */ true);\n    this.groupParent = null;\n    this.ifEmpty = null;\n    this.nameAttr = null;\n    this.picture = null;\n    this.presence = null;\n    this.rename = null;\n    this.whitespace = null;\n  }\n}\n\nclass Type extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"type\", [\n      \"none\",\n      \"ascii85\",\n      \"asciiHex\",\n      \"ccittfax\",\n      \"flate\",\n      \"lzw\",\n      \"runLength\",\n      \"native\",\n      \"xdp\",\n      \"mergedXDP\",\n    ]);\n  }\n}\n\nclass Uri extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"uri\");\n  }\n}\n\nclass Validate extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"validate\", [\n      \"preSubmit\",\n      \"prePrint\",\n      \"preExecute\",\n      \"preSave\",\n    ]);\n  }\n}\n\nclass ValidateApprovalSignatures extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n  }\n\n  [$finalize]() {\n    this[$content] = this[$content]\n      .trim()\n      .split(/\\s+/)\n      .filter(x => [\"docReady\", \"postSign\"].includes(x));\n  }\n}\n\nclass ValidationMessaging extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"validationMessaging\", [\n      \"allMessagesIndividually\",\n      \"allMessagesTogether\",\n      \"firstMessageOnly\",\n      \"noMessages\",\n    ]);\n  }\n}\n\nclass Version extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n  }\n}\n\nclass VersionControl extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"VersionControl\");\n    this.outputBelow = getStringOption(attributes.outputBelow, [\n      \"warn\",\n      \"error\",\n      \"update\",\n    ]);\n    this.sourceAbove = getStringOption(attributes.sourceAbove, [\n      \"warn\",\n      \"error\",\n    ]);\n    this.sourceBelow = getStringOption(attributes.sourceBelow, [\n      \"update\",\n      \"maintain\",\n    ]);\n  }\n}\n\nclass ViewerPreferences extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"viewerPreferences\", /* hasChildren = */ true);\n    this.ADBE_JSConsole = null;\n    this.ADBE_JSDebugger = null;\n    this.addViewerPreferences = null;\n    this.duplexOption = null;\n    this.enforce = null;\n    this.numberOfCopies = null;\n    this.pageRange = null;\n    this.pickTrayByPDFSize = null;\n    this.printScaling = null;\n  }\n}\n\nclass WebClient extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"webClient\", /* hasChildren = */ true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n}\n\nclass Whitespace extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"whitespace\", [\n      \"preserve\",\n      \"ltrim\",\n      \"normalize\",\n      \"rtrim\",\n      \"trim\",\n    ]);\n  }\n}\n\nclass Window extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"window\");\n  }\n\n  [$finalize]() {\n    const pair = this[$content]\n      .trim()\n      .split(/\\s*,\\s*/, 2)\n      .map(x => parseInt(x, 10));\n    if (pair.some(x => isNaN(x))) {\n      this[$content] = [0, 0];\n      return;\n    }\n    if (pair.length === 1) {\n      pair.push(pair[0]);\n    }\n    this[$content] = pair;\n  }\n}\n\nclass Xdc extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"xdc\", /* hasChildren = */ true);\n    this.uri = new XFAObjectArray();\n    this.xsl = new XFAObjectArray();\n  }\n}\n\nclass Xdp extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"xdp\", /* hasChildren = */ true);\n    this.packets = null;\n  }\n}\n\nclass Xsl extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"xsl\", /* hasChildren = */ true);\n    this.debug = null;\n    this.uri = null;\n  }\n}\n\nclass Zpl extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"zpl\", /* hasChildren = */ true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.batchOutput = null;\n    this.flipLabel = null;\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n}\n\nclass ConfigNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (ConfigNamespace.hasOwnProperty(name)) {\n      return ConfigNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static acrobat(attrs) {\n    return new Acrobat(attrs);\n  }\n\n  static acrobat7(attrs) {\n    return new Acrobat7(attrs);\n  }\n\n  static ADBE_JSConsole(attrs) {\n    return new ADBE_JSConsole(attrs);\n  }\n\n  static ADBE_JSDebugger(attrs) {\n    return new ADBE_JSDebugger(attrs);\n  }\n\n  static addSilentPrint(attrs) {\n    return new AddSilentPrint(attrs);\n  }\n\n  static addViewerPreferences(attrs) {\n    return new AddViewerPreferences(attrs);\n  }\n\n  static adjustData(attrs) {\n    return new AdjustData(attrs);\n  }\n\n  static adobeExtensionLevel(attrs) {\n    return new AdobeExtensionLevel(attrs);\n  }\n\n  static agent(attrs) {\n    return new Agent(attrs);\n  }\n\n  static alwaysEmbed(attrs) {\n    return new AlwaysEmbed(attrs);\n  }\n\n  static amd(attrs) {\n    return new Amd(attrs);\n  }\n\n  static area(attrs) {\n    return new Area(attrs);\n  }\n\n  static attributes(attrs) {\n    return new Attributes(attrs);\n  }\n\n  static autoSave(attrs) {\n    return new AutoSave(attrs);\n  }\n\n  static base(attrs) {\n    return new Base(attrs);\n  }\n\n  static batchOutput(attrs) {\n    return new BatchOutput(attrs);\n  }\n\n  static behaviorOverride(attrs) {\n    return new BehaviorOverride(attrs);\n  }\n\n  static cache(attrs) {\n    return new Cache(attrs);\n  }\n\n  static change(attrs) {\n    return new Change(attrs);\n  }\n\n  static common(attrs) {\n    return new Common(attrs);\n  }\n\n  static compress(attrs) {\n    return new Compress(attrs);\n  }\n\n  static compressLogicalStructure(attrs) {\n    return new CompressLogicalStructure(attrs);\n  }\n\n  static compressObjectStream(attrs) {\n    return new CompressObjectStream(attrs);\n  }\n\n  static compression(attrs) {\n    return new Compression(attrs);\n  }\n\n  static config(attrs) {\n    return new Config(attrs);\n  }\n\n  static conformance(attrs) {\n    return new Conformance(attrs);\n  }\n\n  static contentCopy(attrs) {\n    return new ContentCopy(attrs);\n  }\n\n  static copies(attrs) {\n    return new Copies(attrs);\n  }\n\n  static creator(attrs) {\n    return new Creator(attrs);\n  }\n\n  static currentPage(attrs) {\n    return new CurrentPage(attrs);\n  }\n\n  static data(attrs) {\n    return new Data(attrs);\n  }\n\n  static debug(attrs) {\n    return new Debug(attrs);\n  }\n\n  static defaultTypeface(attrs) {\n    return new DefaultTypeface(attrs);\n  }\n\n  static destination(attrs) {\n    return new Destination(attrs);\n  }\n\n  static documentAssembly(attrs) {\n    return new DocumentAssembly(attrs);\n  }\n\n  static driver(attrs) {\n    return new Driver(attrs);\n  }\n\n  static duplexOption(attrs) {\n    return new DuplexOption(attrs);\n  }\n\n  static dynamicRender(attrs) {\n    return new DynamicRender(attrs);\n  }\n\n  static embed(attrs) {\n    return new Embed(attrs);\n  }\n\n  static encrypt(attrs) {\n    return new Encrypt(attrs);\n  }\n\n  static encryption(attrs) {\n    return new Encryption(attrs);\n  }\n\n  static encryptionLevel(attrs) {\n    return new EncryptionLevel(attrs);\n  }\n\n  static enforce(attrs) {\n    return new Enforce(attrs);\n  }\n\n  static equate(attrs) {\n    return new Equate(attrs);\n  }\n\n  static equateRange(attrs) {\n    return new EquateRange(attrs);\n  }\n\n  static exclude(attrs) {\n    return new Exclude(attrs);\n  }\n\n  static excludeNS(attrs) {\n    return new ExcludeNS(attrs);\n  }\n\n  static flipLabel(attrs) {\n    return new FlipLabel(attrs);\n  }\n\n  static fontInfo(attrs) {\n    return new FontInfo(attrs);\n  }\n\n  static formFieldFilling(attrs) {\n    return new FormFieldFilling(attrs);\n  }\n\n  static groupParent(attrs) {\n    return new GroupParent(attrs);\n  }\n\n  static ifEmpty(attrs) {\n    return new IfEmpty(attrs);\n  }\n\n  static includeXDPContent(attrs) {\n    return new IncludeXDPContent(attrs);\n  }\n\n  static incrementalLoad(attrs) {\n    return new IncrementalLoad(attrs);\n  }\n\n  static incrementalMerge(attrs) {\n    return new IncrementalMerge(attrs);\n  }\n\n  static interactive(attrs) {\n    return new Interactive(attrs);\n  }\n\n  static jog(attrs) {\n    return new Jog(attrs);\n  }\n\n  static labelPrinter(attrs) {\n    return new LabelPrinter(attrs);\n  }\n\n  static layout(attrs) {\n    return new Layout(attrs);\n  }\n\n  static level(attrs) {\n    return new Level(attrs);\n  }\n\n  static linearized(attrs) {\n    return new Linearized(attrs);\n  }\n\n  static locale(attrs) {\n    return new Locale(attrs);\n  }\n\n  static localeSet(attrs) {\n    return new LocaleSet(attrs);\n  }\n\n  static log(attrs) {\n    return new Log(attrs);\n  }\n\n  static map(attrs) {\n    return new MapElement(attrs);\n  }\n\n  static mediumInfo(attrs) {\n    return new MediumInfo(attrs);\n  }\n\n  static message(attrs) {\n    return new Message(attrs);\n  }\n\n  static messaging(attrs) {\n    return new Messaging(attrs);\n  }\n\n  static mode(attrs) {\n    return new Mode(attrs);\n  }\n\n  static modifyAnnots(attrs) {\n    return new ModifyAnnots(attrs);\n  }\n\n  static msgId(attrs) {\n    return new MsgId(attrs);\n  }\n\n  static nameAttr(attrs) {\n    return new NameAttr(attrs);\n  }\n\n  static neverEmbed(attrs) {\n    return new NeverEmbed(attrs);\n  }\n\n  static numberOfCopies(attrs) {\n    return new NumberOfCopies(attrs);\n  }\n\n  static openAction(attrs) {\n    return new OpenAction(attrs);\n  }\n\n  static output(attrs) {\n    return new Output(attrs);\n  }\n\n  static outputBin(attrs) {\n    return new OutputBin(attrs);\n  }\n\n  static outputXSL(attrs) {\n    return new OutputXSL(attrs);\n  }\n\n  static overprint(attrs) {\n    return new Overprint(attrs);\n  }\n\n  static packets(attrs) {\n    return new Packets(attrs);\n  }\n\n  static pageOffset(attrs) {\n    return new PageOffset(attrs);\n  }\n\n  static pageRange(attrs) {\n    return new PageRange(attrs);\n  }\n\n  static pagination(attrs) {\n    return new Pagination(attrs);\n  }\n\n  static paginationOverride(attrs) {\n    return new PaginationOverride(attrs);\n  }\n\n  static part(attrs) {\n    return new Part(attrs);\n  }\n\n  static pcl(attrs) {\n    return new Pcl(attrs);\n  }\n\n  static pdf(attrs) {\n    return new Pdf(attrs);\n  }\n\n  static pdfa(attrs) {\n    return new Pdfa(attrs);\n  }\n\n  static permissions(attrs) {\n    return new Permissions(attrs);\n  }\n\n  static pickTrayByPDFSize(attrs) {\n    return new PickTrayByPDFSize(attrs);\n  }\n\n  static picture(attrs) {\n    return new Picture(attrs);\n  }\n\n  static plaintextMetadata(attrs) {\n    return new PlaintextMetadata(attrs);\n  }\n\n  static presence(attrs) {\n    return new Presence(attrs);\n  }\n\n  static present(attrs) {\n    return new Present(attrs);\n  }\n\n  static print(attrs) {\n    return new Print(attrs);\n  }\n\n  static printHighQuality(attrs) {\n    return new PrintHighQuality(attrs);\n  }\n\n  static printScaling(attrs) {\n    return new PrintScaling(attrs);\n  }\n\n  static printerName(attrs) {\n    return new PrinterName(attrs);\n  }\n\n  static producer(attrs) {\n    return new Producer(attrs);\n  }\n\n  static ps(attrs) {\n    return new Ps(attrs);\n  }\n\n  static range(attrs) {\n    return new Range(attrs);\n  }\n\n  static record(attrs) {\n    return new Record(attrs);\n  }\n\n  static relevant(attrs) {\n    return new Relevant(attrs);\n  }\n\n  static rename(attrs) {\n    return new Rename(attrs);\n  }\n\n  static renderPolicy(attrs) {\n    return new RenderPolicy(attrs);\n  }\n\n  static runScripts(attrs) {\n    return new RunScripts(attrs);\n  }\n\n  static script(attrs) {\n    return new Script(attrs);\n  }\n\n  static scriptModel(attrs) {\n    return new ScriptModel(attrs);\n  }\n\n  static severity(attrs) {\n    return new Severity(attrs);\n  }\n\n  static silentPrint(attrs) {\n    return new SilentPrint(attrs);\n  }\n\n  static staple(attrs) {\n    return new Staple(attrs);\n  }\n\n  static startNode(attrs) {\n    return new StartNode(attrs);\n  }\n\n  static startPage(attrs) {\n    return new StartPage(attrs);\n  }\n\n  static submitFormat(attrs) {\n    return new SubmitFormat(attrs);\n  }\n\n  static submitUrl(attrs) {\n    return new SubmitUrl(attrs);\n  }\n\n  static subsetBelow(attrs) {\n    return new SubsetBelow(attrs);\n  }\n\n  static suppressBanner(attrs) {\n    return new SuppressBanner(attrs);\n  }\n\n  static tagged(attrs) {\n    return new Tagged(attrs);\n  }\n\n  static template(attrs) {\n    return new Template(attrs);\n  }\n\n  static templateCache(attrs) {\n    return new TemplateCache(attrs);\n  }\n\n  static threshold(attrs) {\n    return new Threshold(attrs);\n  }\n\n  static to(attrs) {\n    return new To(attrs);\n  }\n\n  static trace(attrs) {\n    return new Trace(attrs);\n  }\n\n  static transform(attrs) {\n    return new Transform(attrs);\n  }\n\n  static type(attrs) {\n    return new Type(attrs);\n  }\n\n  static uri(attrs) {\n    return new Uri(attrs);\n  }\n\n  static validate(attrs) {\n    return new Validate(attrs);\n  }\n\n  static validateApprovalSignatures(attrs) {\n    return new ValidateApprovalSignatures(attrs);\n  }\n\n  static validationMessaging(attrs) {\n    return new ValidationMessaging(attrs);\n  }\n\n  static version(attrs) {\n    return new Version(attrs);\n  }\n\n  static versionControl(attrs) {\n    return new VersionControl(attrs);\n  }\n\n  static viewerPreferences(attrs) {\n    return new ViewerPreferences(attrs);\n  }\n\n  static webClient(attrs) {\n    return new WebClient(attrs);\n  }\n\n  static whitespace(attrs) {\n    return new Whitespace(attrs);\n  }\n\n  static window(attrs) {\n    return new Window(attrs);\n  }\n\n  static xdc(attrs) {\n    return new Xdc(attrs);\n  }\n\n  static xdp(attrs) {\n    return new Xdp(attrs);\n  }\n\n  static xsl(attrs) {\n    return new Xsl(attrs);\n  }\n\n  static zpl(attrs) {\n    return new Zpl(attrs);\n  }\n}\n\nexport { ConfigNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { StringObject, XFAObject, XFAObjectArray } from \"./xfa_object.js\";\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\n\nclass ConnectionSet extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"connectionSet\", /* hasChildren = */ true);\n    this.wsdlConnection = new XFAObjectArray();\n    this.xmlConnection = new XFAObjectArray();\n    this.xsdConnection = new XFAObjectArray();\n  }\n}\n\nclass EffectiveInputPolicy extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass EffectiveOutputPolicy extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Operation extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"operation\");\n    this.id = attributes.id || \"\";\n    this.input = attributes.input || \"\";\n    this.name = attributes.name || \"\";\n    this.output = attributes.output || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass RootElement extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"rootElement\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass SoapAction extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"soapAction\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass SoapAddress extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"soapAddress\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Uri extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"uri\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass WsdlAddress extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass WsdlConnection extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"wsdlConnection\", /* hasChildren = */ true);\n    this.dataDescription = attributes.dataDescription || \"\";\n    this.name = attributes.name || \"\";\n    this.effectiveInputPolicy = null;\n    this.effectiveOutputPolicy = null;\n    this.operation = null;\n    this.soapAction = null;\n    this.soapAddress = null;\n    this.wsdlAddress = null;\n  }\n}\n\nclass XmlConnection extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"xmlConnection\", /* hasChildren = */ true);\n    this.dataDescription = attributes.dataDescription || \"\";\n    this.name = attributes.name || \"\";\n    this.uri = null;\n  }\n}\n\nclass XsdConnection extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"xsdConnection\", /* hasChildren = */ true);\n    this.dataDescription = attributes.dataDescription || \"\";\n    this.name = attributes.name || \"\";\n    this.rootElement = null;\n    this.uri = null;\n  }\n}\n\nclass ConnectionSetNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (ConnectionSetNamespace.hasOwnProperty(name)) {\n      return ConnectionSetNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static connectionSet(attrs) {\n    return new ConnectionSet(attrs);\n  }\n\n  static effectiveInputPolicy(attrs) {\n    return new EffectiveInputPolicy(attrs);\n  }\n\n  static effectiveOutputPolicy(attrs) {\n    return new EffectiveOutputPolicy(attrs);\n  }\n\n  static operation(attrs) {\n    return new Operation(attrs);\n  }\n\n  static rootElement(attrs) {\n    return new RootElement(attrs);\n  }\n\n  static soapAction(attrs) {\n    return new SoapAction(attrs);\n  }\n\n  static soapAddress(attrs) {\n    return new SoapAddress(attrs);\n  }\n\n  static uri(attrs) {\n    return new Uri(attrs);\n  }\n\n  static wsdlAddress(attrs) {\n    return new WsdlAddress(attrs);\n  }\n\n  static wsdlConnection(attrs) {\n    return new WsdlConnection(attrs);\n  }\n\n  static xmlConnection(attrs) {\n    return new XmlConnection(attrs);\n  }\n\n  static xsdConnection(attrs) {\n    return new XsdConnection(attrs);\n  }\n}\n\nexport { ConnectionSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $appendChild,\n  $isNsAgnostic,\n  $namespaceId,\n  $nodeName,\n  $onChild,\n  XFAObject,\n  XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\n\nclass Data extends XmlObject {\n  constructor(attributes) {\n    super(DATASETS_NS_ID, \"data\", attributes);\n  }\n\n  [$isNsAgnostic]() {\n    return true;\n  }\n}\n\nclass Datasets extends XFAObject {\n  constructor(attributes) {\n    super(DATASETS_NS_ID, \"datasets\", /* hasChildren = */ true);\n    this.data = null;\n    this.Signature = null;\n  }\n\n  [$onChild](child) {\n    const name = child[$nodeName];\n    if (\n      (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID) ||\n      (name === \"Signature\" &&\n        child[$namespaceId] === NamespaceIds.signature.id)\n    ) {\n      this[name] = child;\n    }\n    this[$appendChild](child);\n  }\n}\n\nclass DatasetsNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (DatasetsNamespace.hasOwnProperty(name)) {\n      return DatasetsNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static datasets(attributes) {\n    return new Datasets(attributes);\n  }\n\n  static data(attributes) {\n    return new Data(attributes);\n  }\n}\n\nexport { DatasetsNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n  ContentObject,\n  StringObject,\n  XFAObject,\n  XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\n\nclass CalendarSymbols extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"calendarSymbols\", /* hasChildren = */ true);\n    this.name = \"gregorian\";\n    this.dayNames = new XFAObjectArray(2);\n    this.eraNames = null;\n    this.meridiemNames = null;\n    this.monthNames = new XFAObjectArray(2);\n  }\n}\n\nclass CurrencySymbol extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"currencySymbol\");\n    this.name = getStringOption(attributes.name, [\n      \"symbol\",\n      \"isoname\",\n      \"decimal\",\n    ]);\n  }\n}\n\nclass CurrencySymbols extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"currencySymbols\", /* hasChildren = */ true);\n    this.currencySymbol = new XFAObjectArray(3);\n  }\n}\n\nclass DatePattern extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"datePattern\");\n    this.name = getStringOption(attributes.name, [\n      \"full\",\n      \"long\",\n      \"med\",\n      \"short\",\n    ]);\n  }\n}\n\nclass DatePatterns extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"datePatterns\", /* hasChildren = */ true);\n    this.datePattern = new XFAObjectArray(4);\n  }\n}\n\nclass DateTimeSymbols extends ContentObject {\n  // TODO: spec unclear about the format of the array.\n\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n  }\n}\n\nclass Day extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"day\");\n  }\n}\n\nclass DayNames extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"dayNames\", /* hasChildren = */ true);\n    this.abbr = getInteger({\n      data: attributes.abbr,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.day = new XFAObjectArray(7);\n  }\n}\n\nclass Era extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"era\");\n  }\n}\n\nclass EraNames extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"eraNames\", /* hasChildren = */ true);\n    this.era = new XFAObjectArray(2);\n  }\n}\n\nclass Locale extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"locale\", /* hasChildren = */ true);\n    this.desc = attributes.desc || \"\";\n    this.name = \"isoname\";\n    this.calendarSymbols = null;\n    this.currencySymbols = null;\n    this.datePatterns = null;\n    this.dateTimeSymbols = null;\n    this.numberPatterns = null;\n    this.numberSymbols = null;\n    this.timePatterns = null;\n    this.typeFaces = null;\n  }\n}\n\nclass LocaleSet extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"localeSet\", /* hasChildren = */ true);\n    this.locale = new XFAObjectArray();\n  }\n}\n\nclass Meridiem extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"meridiem\");\n  }\n}\n\nclass MeridiemNames extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"meridiemNames\", /* hasChildren = */ true);\n    this.meridiem = new XFAObjectArray(2);\n  }\n}\n\nclass Month extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"month\");\n  }\n}\n\nclass MonthNames extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"monthNames\", /* hasChildren = */ true);\n    this.abbr = getInteger({\n      data: attributes.abbr,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.month = new XFAObjectArray(12);\n  }\n}\n\nclass NumberPattern extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberPattern\");\n    this.name = getStringOption(attributes.name, [\n      \"full\",\n      \"long\",\n      \"med\",\n      \"short\",\n    ]);\n  }\n}\n\nclass NumberPatterns extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberPatterns\", /* hasChildren = */ true);\n    this.numberPattern = new XFAObjectArray(4);\n  }\n}\n\nclass NumberSymbol extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberSymbol\");\n    this.name = getStringOption(attributes.name, [\n      \"decimal\",\n      \"grouping\",\n      \"percent\",\n      \"minus\",\n      \"zero\",\n    ]);\n  }\n}\n\nclass NumberSymbols extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberSymbols\", /* hasChildren = */ true);\n    this.numberSymbol = new XFAObjectArray(5);\n  }\n}\n\nclass TimePattern extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"timePattern\");\n    this.name = getStringOption(attributes.name, [\n      \"full\",\n      \"long\",\n      \"med\",\n      \"short\",\n    ]);\n  }\n}\n\nclass TimePatterns extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"timePatterns\", /* hasChildren = */ true);\n    this.timePattern = new XFAObjectArray(4);\n  }\n}\n\nclass TypeFace extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"typeFace\", /* hasChildren = */ true);\n    this.name = attributes.name | \"\";\n  }\n}\n\nclass TypeFaces extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"typeFaces\", /* hasChildren = */ true);\n    this.typeFace = new XFAObjectArray();\n  }\n}\n\nclass LocaleSetNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (LocaleSetNamespace.hasOwnProperty(name)) {\n      return LocaleSetNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static calendarSymbols(attrs) {\n    return new CalendarSymbols(attrs);\n  }\n\n  static currencySymbol(attrs) {\n    return new CurrencySymbol(attrs);\n  }\n\n  static currencySymbols(attrs) {\n    return new CurrencySymbols(attrs);\n  }\n\n  static datePattern(attrs) {\n    return new DatePattern(attrs);\n  }\n\n  static datePatterns(attrs) {\n    return new DatePatterns(attrs);\n  }\n\n  static dateTimeSymbols(attrs) {\n    return new DateTimeSymbols(attrs);\n  }\n\n  static day(attrs) {\n    return new Day(attrs);\n  }\n\n  static dayNames(attrs) {\n    return new DayNames(attrs);\n  }\n\n  static era(attrs) {\n    return new Era(attrs);\n  }\n\n  static eraNames(attrs) {\n    return new EraNames(attrs);\n  }\n\n  static locale(attrs) {\n    return new Locale(attrs);\n  }\n\n  static localeSet(attrs) {\n    return new LocaleSet(attrs);\n  }\n\n  static meridiem(attrs) {\n    return new Meridiem(attrs);\n  }\n\n  static meridiemNames(attrs) {\n    return new MeridiemNames(attrs);\n  }\n\n  static month(attrs) {\n    return new Month(attrs);\n  }\n\n  static monthNames(attrs) {\n    return new MonthNames(attrs);\n  }\n\n  static numberPattern(attrs) {\n    return new NumberPattern(attrs);\n  }\n\n  static numberPatterns(attrs) {\n    return new NumberPatterns(attrs);\n  }\n\n  static numberSymbol(attrs) {\n    return new NumberSymbol(attrs);\n  }\n\n  static numberSymbols(attrs) {\n    return new NumberSymbols(attrs);\n  }\n\n  static timePattern(attrs) {\n    return new TimePattern(attrs);\n  }\n\n  static timePatterns(attrs) {\n    return new TimePatterns(attrs);\n  }\n\n  static typeFace(attrs) {\n    return new TypeFace(attrs);\n  }\n\n  static typeFaces(attrs) {\n    return new TypeFaces(attrs);\n  }\n}\n\nexport { LocaleSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\n\nclass Signature extends XFAObject {\n  constructor(attributes) {\n    super(SIGNATURE_NS_ID, \"signature\", /* hasChildren = */ true);\n  }\n}\n\nclass SignatureNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (SignatureNamespace.hasOwnProperty(name)) {\n      return SignatureNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static signature(attributes) {\n    return new Signature(attributes);\n  }\n}\n\nexport { SignatureNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\n\nclass Stylesheet extends XFAObject {\n  constructor(attributes) {\n    super(STYLESHEET_NS_ID, \"stylesheet\", /* hasChildren = */ true);\n  }\n}\n\nclass StylesheetNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (StylesheetNamespace.hasOwnProperty(name)) {\n      return StylesheetNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static stylesheet(attributes) {\n    return new Stylesheet(attributes);\n  }\n}\n\nexport { StylesheetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n  $namespaceId,\n  $nodeName,\n  $onChildCheck,\n  XFAObject,\n  XFAObjectArray,\n} from \"./xfa_object.js\";\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\n\nclass Xdp extends XFAObject {\n  constructor(attributes) {\n    super(XDP_NS_ID, \"xdp\", /* hasChildren = */ true);\n    this.uuid = attributes.uuid || \"\";\n    this.timeStamp = attributes.timeStamp || \"\";\n    this.config = null;\n    this.connectionSet = null;\n    this.datasets = null;\n    this.localeSet = null;\n    this.stylesheet = new XFAObjectArray();\n    this.template = null;\n  }\n\n  [$onChildCheck](child) {\n    const ns = NamespaceIds[child[$nodeName]];\n    return ns && child[$namespaceId] === ns.id;\n  }\n}\n\nclass XdpNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (XdpNamespace.hasOwnProperty(name)) {\n      return XdpNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static xdp(attributes) {\n    return new Xdp(attributes);\n  }\n}\n\nexport { XdpNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $acceptWhitespace,\n  $childrenToHTML,\n  $clean,\n  $content,\n  $extra,\n  $getChildren,\n  $getParent,\n  $globalData,\n  $nodeName,\n  $onText,\n  $pushGlyphs,\n  $text,\n  $toHTML,\n  XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n  fixTextIndent,\n  fixURL,\n  measureToString,\n  setFontFamily,\n} from \"./html_utils.js\";\nimport { getMeasurement, HTMLResult, stripQuotes } from \"./utils.js\";\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\n\nconst VALID_STYLES = new Set([\n  \"color\",\n  \"font\",\n  \"font-family\",\n  \"font-size\",\n  \"font-stretch\",\n  \"font-style\",\n  \"font-weight\",\n  \"margin\",\n  \"margin-bottom\",\n  \"margin-left\",\n  \"margin-right\",\n  \"margin-top\",\n  \"letter-spacing\",\n  \"line-height\",\n  \"orphans\",\n  \"page-break-after\",\n  \"page-break-before\",\n  \"page-break-inside\",\n  \"tab-interval\",\n  \"tab-stop\",\n  \"text-align\",\n  \"text-decoration\",\n  \"text-indent\",\n  \"vertical-align\",\n  \"widows\",\n  \"kerning-mode\",\n  \"xfa-font-horizontal-scale\",\n  \"xfa-font-vertical-scale\",\n  \"xfa-spacerun\",\n  \"xfa-tab-stops\",\n]);\n\nconst StyleMapping = new Map([\n  [\"page-break-after\", \"breakAfter\"],\n  [\"page-break-before\", \"breakBefore\"],\n  [\"page-break-inside\", \"breakInside\"],\n  [\"kerning-mode\", value => (value === \"none\" ? \"none\" : \"normal\")],\n  [\n    \"xfa-font-horizontal-scale\",\n    value =>\n      `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n  ],\n  [\n    \"xfa-font-vertical-scale\",\n    value =>\n      `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n  ],\n  [\"xfa-spacerun\", \"\"],\n  [\"xfa-tab-stops\", \"\"],\n  [\n    \"font-size\",\n    (value, original) => {\n      value = original.fontSize = getMeasurement(value);\n      return measureToString(0.99 * value);\n    },\n  ],\n  [\"letter-spacing\", value => measureToString(getMeasurement(value))],\n  [\"line-height\", value => measureToString(getMeasurement(value))],\n  [\"margin\", value => measureToString(getMeasurement(value))],\n  [\"margin-bottom\", value => measureToString(getMeasurement(value))],\n  [\"margin-left\", value => measureToString(getMeasurement(value))],\n  [\"margin-right\", value => measureToString(getMeasurement(value))],\n  [\"margin-top\", value => measureToString(getMeasurement(value))],\n  [\"text-indent\", value => measureToString(getMeasurement(value))],\n  [\"font-family\", value => value],\n  [\"vertical-align\", value => measureToString(getMeasurement(value))],\n]);\n\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\n\nfunction mapStyle(styleStr, node, richText) {\n  const style = Object.create(null);\n  if (!styleStr) {\n    return style;\n  }\n  const original = Object.create(null);\n  for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n    const mapping = StyleMapping.get(key);\n    if (mapping === \"\") {\n      continue;\n    }\n    let newValue = value;\n    if (mapping) {\n      if (typeof mapping === \"string\") {\n        newValue = mapping;\n      } else {\n        newValue = mapping(value, original);\n      }\n    }\n    if (key.endsWith(\"scale\")) {\n      if (style.transform) {\n        style.transform = `${style[key]} ${newValue}`;\n      } else {\n        style.transform = newValue;\n      }\n    } else {\n      style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] =\n        newValue;\n    }\n  }\n\n  if (style.fontFamily) {\n    setFontFamily(\n      {\n        typeface: style.fontFamily,\n        weight: style.fontWeight || \"normal\",\n        posture: style.fontStyle || \"normal\",\n        size: original.fontSize || 0,\n      },\n      node,\n      node[$globalData].fontFinder,\n      style\n    );\n  }\n\n  if (\n    richText &&\n    style.verticalAlign &&\n    style.verticalAlign !== \"0px\" &&\n    style.fontSize\n  ) {\n    // A non-zero verticalAlign means that we've a sub/super-script and\n    // consequently the font size must be decreased.\n    // https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf#G11.2097514\n    // And the two following factors to position the scripts have been\n    // found here:\n    // https://en.wikipedia.org/wiki/Subscript_and_superscript#Desktop_publishing\n    const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n    const VERTICAL_FACTOR = 0.333;\n    const fontSize = getMeasurement(style.fontSize);\n    style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n    style.verticalAlign = measureToString(\n      Math.sign(getMeasurement(style.verticalAlign)) *\n        fontSize *\n        VERTICAL_FACTOR\n    );\n  }\n\n  fixTextIndent(style);\n  return style;\n}\n\nfunction checkStyle(node) {\n  if (!node.style) {\n    return \"\";\n  }\n\n  // Remove any non-allowed keys.\n  return node.style\n    .trim()\n    .split(/\\s*;\\s*/)\n    .filter(s => !!s)\n    .map(s => s.split(/\\s*:\\s*/, 2))\n    .filter(([key, value]) => {\n      if (key === \"font-family\") {\n        node[$globalData].usedTypefaces.add(value);\n      }\n      return VALID_STYLES.has(key);\n    })\n    .map(kv => kv.join(\":\"))\n    .join(\";\");\n}\n\nconst NoWhites = new Set([\"body\", \"html\"]);\n\nclass XhtmlObject extends XmlObject {\n  constructor(attributes, name) {\n    super(XHTML_NS_ID, name);\n    this[$richText] = false;\n    this.style = attributes.style || \"\";\n  }\n\n  [$clean](builder) {\n    super[$clean](builder);\n    this.style = checkStyle(this);\n  }\n\n  [$acceptWhitespace]() {\n    return !NoWhites.has(this[$nodeName]);\n  }\n\n  [$onText](str, richText = false) {\n    if (!richText) {\n      str = str.replace(crlfRegExp, \"\");\n      if (!this.style.includes(\"xfa-spacerun:yes\")) {\n        str = str.replace(spacesRegExp, \" \");\n      }\n    } else {\n      this[$richText] = true;\n    }\n\n    if (str) {\n      this[$content] += str;\n    }\n  }\n\n  [$pushGlyphs](measure, mustPop = true) {\n    const xfaFont = Object.create(null);\n    const margin = {\n      top: NaN,\n      bottom: NaN,\n      left: NaN,\n      right: NaN,\n    };\n    let lineHeight = null;\n    for (const [key, value] of this.style\n      .split(\";\")\n      .map(s => s.split(\":\", 2))) {\n      switch (key) {\n        case \"font-family\":\n          xfaFont.typeface = stripQuotes(value);\n          break;\n        case \"font-size\":\n          xfaFont.size = getMeasurement(value);\n          break;\n        case \"font-weight\":\n          xfaFont.weight = value;\n          break;\n        case \"font-style\":\n          xfaFont.posture = value;\n          break;\n        case \"letter-spacing\":\n          xfaFont.letterSpacing = getMeasurement(value);\n          break;\n        case \"margin\":\n          const values = value.split(/ \\t/).map(x => getMeasurement(x));\n          switch (values.length) {\n            case 1:\n              margin.top =\n                margin.bottom =\n                margin.left =\n                margin.right =\n                  values[0];\n              break;\n            case 2:\n              margin.top = margin.bottom = values[0];\n              margin.left = margin.right = values[1];\n              break;\n            case 3:\n              margin.top = values[0];\n              margin.bottom = values[2];\n              margin.left = margin.right = values[1];\n              break;\n            case 4:\n              margin.top = values[0];\n              margin.left = values[1];\n              margin.bottom = values[2];\n              margin.right = values[3];\n              break;\n          }\n          break;\n        case \"margin-top\":\n          margin.top = getMeasurement(value);\n          break;\n        case \"margin-bottom\":\n          margin.bottom = getMeasurement(value);\n          break;\n        case \"margin-left\":\n          margin.left = getMeasurement(value);\n          break;\n        case \"margin-right\":\n          margin.right = getMeasurement(value);\n          break;\n        case \"line-height\":\n          lineHeight = getMeasurement(value);\n          break;\n      }\n    }\n\n    measure.pushData(xfaFont, margin, lineHeight);\n\n    if (this[$content]) {\n      measure.addString(this[$content]);\n    } else {\n      for (const child of this[$getChildren]()) {\n        if (child[$nodeName] === \"#text\") {\n          measure.addString(child[$content]);\n          continue;\n        }\n        child[$pushGlyphs](measure);\n      }\n    }\n\n    if (mustPop) {\n      measure.popFont();\n    }\n  }\n\n  [$toHTML](availableSpace) {\n    const children = [];\n    this[$extra] = {\n      children,\n    };\n\n    this[$childrenToHTML]({});\n\n    if (children.length === 0 && !this[$content]) {\n      return HTMLResult.EMPTY;\n    }\n\n    let value;\n    if (this[$richText]) {\n      value = this[$content]\n        ? this[$content].replace(crlfForRichTextRegExp, \"\\n\")\n        : undefined;\n    } else {\n      value = this[$content] || undefined;\n    }\n\n    return HTMLResult.success({\n      name: this[$nodeName],\n      attributes: {\n        href: this.href,\n        style: mapStyle(this.style, this, this[$richText]),\n      },\n      children,\n      value,\n    });\n  }\n}\n\nclass A extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"a\");\n    this.href = fixURL(attributes.href) || \"\";\n  }\n}\n\nclass B extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"b\");\n  }\n\n  [$pushGlyphs](measure) {\n    measure.pushFont({ weight: \"bold\" });\n    super[$pushGlyphs](measure);\n    measure.popFont();\n  }\n}\n\nclass Body extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"body\");\n  }\n\n  [$toHTML](availableSpace) {\n    const res = super[$toHTML](availableSpace);\n    const { html } = res;\n    if (!html) {\n      return HTMLResult.EMPTY;\n    }\n    html.name = \"div\";\n    html.attributes.class = [\"xfaRich\"];\n    return res;\n  }\n}\n\nclass Br extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"br\");\n  }\n\n  [$text]() {\n    return \"\\n\";\n  }\n\n  [$pushGlyphs](measure) {\n    measure.addString(\"\\n\");\n  }\n\n  [$toHTML](availableSpace) {\n    return HTMLResult.success({\n      name: \"br\",\n    });\n  }\n}\n\nclass Html extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"html\");\n  }\n\n  [$toHTML](availableSpace) {\n    const children = [];\n    this[$extra] = {\n      children,\n    };\n\n    this[$childrenToHTML]({});\n    if (children.length === 0) {\n      return HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          class: [\"xfaRich\"],\n          style: {},\n        },\n        value: this[$content] || \"\",\n      });\n    }\n\n    if (children.length === 1) {\n      const child = children[0];\n      if (child.attributes && child.attributes.class.includes(\"xfaRich\")) {\n        return HTMLResult.success(child);\n      }\n    }\n\n    return HTMLResult.success({\n      name: \"div\",\n      attributes: {\n        class: [\"xfaRich\"],\n        style: {},\n      },\n      children,\n    });\n  }\n}\n\nclass I extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"i\");\n  }\n\n  [$pushGlyphs](measure) {\n    measure.pushFont({ posture: \"italic\" });\n    super[$pushGlyphs](measure);\n    measure.popFont();\n  }\n}\n\nclass Li extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"li\");\n  }\n}\n\nclass Ol extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"ol\");\n  }\n}\n\nclass P extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"p\");\n  }\n\n  [$pushGlyphs](measure) {\n    super[$pushGlyphs](measure, /* mustPop = */ false);\n    measure.addString(\"\\n\");\n    measure.addPara();\n    measure.popFont();\n  }\n\n  [$text]() {\n    const siblings = this[$getParent]()[$getChildren]();\n    if (siblings[siblings.length - 1] === this) {\n      return super[$text]();\n    }\n    return super[$text]() + \"\\n\";\n  }\n}\n\nclass Span extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"span\");\n  }\n}\n\nclass Sub extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"sub\");\n  }\n}\n\nclass Sup extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"sup\");\n  }\n}\n\nclass Ul extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"ul\");\n  }\n}\n\nclass XhtmlNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (XhtmlNamespace.hasOwnProperty(name)) {\n      return XhtmlNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static a(attributes) {\n    return new A(attributes);\n  }\n\n  static b(attributes) {\n    return new B(attributes);\n  }\n\n  static body(attributes) {\n    return new Body(attributes);\n  }\n\n  static br(attributes) {\n    return new Br(attributes);\n  }\n\n  static html(attributes) {\n    return new Html(attributes);\n  }\n\n  static i(attributes) {\n    return new I(attributes);\n  }\n\n  static li(attributes) {\n    return new Li(attributes);\n  }\n\n  static ol(attributes) {\n    return new Ol(attributes);\n  }\n\n  static p(attributes) {\n    return new P(attributes);\n  }\n\n  static span(attributes) {\n    return new Span(attributes);\n  }\n\n  static sub(attributes) {\n    return new Sub(attributes);\n  }\n\n  static sup(attributes) {\n    return new Sup(attributes);\n  }\n\n  static ul(attributes) {\n    return new Ul(attributes);\n  }\n}\n\nexport { XhtmlNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject } from \"./namespaces.js\";\nimport { XmlObject } from \"./xfa_object.js\";\n\nclass UnknownNamespace {\n  constructor(nsId) {\n    this.namespaceId = nsId;\n  }\n\n  [$buildXFAObject](name, attributes) {\n    return new XmlObject(this.namespaceId, name, attributes);\n  }\n}\n\nexport { UnknownNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  FormatError,\n  info,\n  InvalidPDFException,\n  warn,\n} from \"../shared/util.js\";\nimport { CIRCULAR_REF, Cmd, Dict, isCmd, Ref, RefSet } from \"./primitives.js\";\nimport {\n  DocStats,\n  MissingDataException,\n  ParserEOFException,\n  XRefEntryException,\n  XRefParseException,\n} from \"./core_utils.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\n\nclass XRef {\n  constructor(stream, pdfManager) {\n    this.stream = stream;\n    this.pdfManager = pdfManager;\n    this.entries = [];\n    this.xrefstms = Object.create(null);\n    this._cacheMap = new Map(); // Prepare the XRef cache.\n    this._pendingRefs = new RefSet();\n    this.stats = new DocStats(pdfManager.msgHandler);\n    this._newRefNum = null;\n  }\n\n  getNewRef() {\n    if (this._newRefNum === null) {\n      this._newRefNum = this.entries.length;\n    }\n    return Ref.get(this._newRefNum++, 0);\n  }\n\n  resetNewRef() {\n    this._newRefNum = null;\n  }\n\n  setStartXRef(startXRef) {\n    // Store the starting positions of xref tables as we process them\n    // so we can recover from missing data errors\n    this.startXRefQueue = [startXRef];\n  }\n\n  parse(recoveryMode = false) {\n    let trailerDict;\n    if (!recoveryMode) {\n      trailerDict = this.readXRef();\n    } else {\n      warn(\"Indexing all PDF objects\");\n      trailerDict = this.indexObjects();\n    }\n    trailerDict.assignXref(this);\n    this.trailer = trailerDict;\n\n    let encrypt;\n    try {\n      encrypt = trailerDict.get(\"Encrypt\");\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n    }\n    if (encrypt instanceof Dict) {\n      const ids = trailerDict.get(\"ID\");\n      const fileId = ids && ids.length ? ids[0] : \"\";\n      // The 'Encrypt' dictionary itself should not be encrypted, and by\n      // setting `suppressEncryption` we can prevent an infinite loop inside\n      // of `XRef_fetchUncompressed` if the dictionary contains indirect\n      // objects (fixes issue7665.pdf).\n      encrypt.suppressEncryption = true;\n      this.encrypt = new CipherTransformFactory(\n        encrypt,\n        fileId,\n        this.pdfManager.password\n      );\n    }\n\n    // Get the root dictionary (catalog) object, and do some basic validation.\n    let root;\n    try {\n      root = trailerDict.get(\"Root\");\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n    }\n    if (root instanceof Dict) {\n      try {\n        const pages = root.get(\"Pages\");\n        if (pages instanceof Dict) {\n          this.root = root;\n          return;\n        }\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n      }\n    }\n\n    if (!recoveryMode) {\n      throw new XRefParseException();\n    }\n    // Even recovery failed, there's nothing more we can do here.\n    throw new InvalidPDFException(\"Invalid Root reference.\");\n  }\n\n  processXRefTable(parser) {\n    if (!(\"tableState\" in this)) {\n      // Stores state of the table as we process it so we can resume\n      // from middle of table in case of missing data error\n      this.tableState = {\n        entryNum: 0,\n        streamPos: parser.lexer.stream.pos,\n        parserBuf1: parser.buf1,\n        parserBuf2: parser.buf2,\n      };\n    }\n\n    const obj = this.readXRefTable(parser);\n\n    // Sanity check\n    if (!isCmd(obj, \"trailer\")) {\n      throw new FormatError(\n        \"Invalid XRef table: could not find trailer dictionary\"\n      );\n    }\n    // Read trailer dictionary, e.g.\n    // trailer\n    //    << /Size 22\n    //      /Root 20R\n    //      /Info 10R\n    //      /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n    //    >>\n    // The parser goes through the entire stream << ... >> and provides\n    // a getter interface for the key-value table\n    let dict = parser.getObj();\n\n    // The pdflib PDF generator can generate a nested trailer dictionary\n    if (!(dict instanceof Dict) && dict.dict) {\n      dict = dict.dict;\n    }\n    if (!(dict instanceof Dict)) {\n      throw new FormatError(\n        \"Invalid XRef table: could not parse trailer dictionary\"\n      );\n    }\n    delete this.tableState;\n\n    return dict;\n  }\n\n  readXRefTable(parser) {\n    // Example of cross-reference table:\n    // xref\n    // 0 1                    <-- subsection header (first obj #, obj count)\n    // 0000000000 65535 f     <-- actual object (offset, generation #, f/n)\n    // 23 2                   <-- subsection header ... and so on ...\n    // 0000025518 00002 n\n    // 0000025635 00000 n\n    // trailer\n    // ...\n\n    const stream = parser.lexer.stream;\n    const tableState = this.tableState;\n    stream.pos = tableState.streamPos;\n    parser.buf1 = tableState.parserBuf1;\n    parser.buf2 = tableState.parserBuf2;\n\n    // Outer loop is over subsection headers\n    let obj;\n\n    while (true) {\n      if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n        if (isCmd((obj = parser.getObj()), \"trailer\")) {\n          break;\n        }\n        tableState.firstEntryNum = obj;\n        tableState.entryCount = parser.getObj();\n      }\n\n      let first = tableState.firstEntryNum;\n      const count = tableState.entryCount;\n      if (!Number.isInteger(first) || !Number.isInteger(count)) {\n        throw new FormatError(\n          \"Invalid XRef table: wrong types in subsection header\"\n        );\n      }\n      // Inner loop is over objects themselves\n      for (let i = tableState.entryNum; i < count; i++) {\n        tableState.streamPos = stream.pos;\n        tableState.entryNum = i;\n        tableState.parserBuf1 = parser.buf1;\n        tableState.parserBuf2 = parser.buf2;\n\n        const entry = {};\n        entry.offset = parser.getObj();\n        entry.gen = parser.getObj();\n        const type = parser.getObj();\n\n        if (type instanceof Cmd) {\n          switch (type.cmd) {\n            case \"f\":\n              entry.free = true;\n              break;\n            case \"n\":\n              entry.uncompressed = true;\n              break;\n          }\n        }\n\n        // Validate entry obj\n        if (\n          !Number.isInteger(entry.offset) ||\n          !Number.isInteger(entry.gen) ||\n          !(entry.free || entry.uncompressed)\n        ) {\n          throw new FormatError(\n            `Invalid entry in XRef subsection: ${first}, ${count}`\n          );\n        }\n\n        // The first xref table entry, i.e. obj 0, should be free. Attempting\n        // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n        if (i === 0 && entry.free && first === 1) {\n          first = 0;\n        }\n\n        if (!this.entries[i + first]) {\n          this.entries[i + first] = entry;\n        }\n      }\n\n      tableState.entryNum = 0;\n      tableState.streamPos = stream.pos;\n      tableState.parserBuf1 = parser.buf1;\n      tableState.parserBuf2 = parser.buf2;\n      delete tableState.firstEntryNum;\n      delete tableState.entryCount;\n    }\n\n    // Sanity check: as per spec, first object must be free\n    if (this.entries[0] && !this.entries[0].free) {\n      throw new FormatError(\"Invalid XRef table: unexpected first object\");\n    }\n    return obj;\n  }\n\n  processXRefStream(stream) {\n    if (!(\"streamState\" in this)) {\n      // Stores state of the stream as we process it so we can resume\n      // from middle of stream in case of missing data error\n      const streamParameters = stream.dict;\n      const byteWidths = streamParameters.get(\"W\");\n      let range = streamParameters.get(\"Index\");\n      if (!range) {\n        range = [0, streamParameters.get(\"Size\")];\n      }\n\n      this.streamState = {\n        entryRanges: range,\n        byteWidths,\n        entryNum: 0,\n        streamPos: stream.pos,\n      };\n    }\n    this.readXRefStream(stream);\n    delete this.streamState;\n\n    return stream.dict;\n  }\n\n  readXRefStream(stream) {\n    const streamState = this.streamState;\n    stream.pos = streamState.streamPos;\n\n    const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] =\n      streamState.byteWidths;\n\n    const entryRanges = streamState.entryRanges;\n    while (entryRanges.length > 0) {\n      const [first, n] = entryRanges;\n\n      if (!Number.isInteger(first) || !Number.isInteger(n)) {\n        throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n      }\n      if (\n        !Number.isInteger(typeFieldWidth) ||\n        !Number.isInteger(offsetFieldWidth) ||\n        !Number.isInteger(generationFieldWidth)\n      ) {\n        throw new FormatError(\n          `Invalid XRef entry fields length: ${first}, ${n}`\n        );\n      }\n      for (let i = streamState.entryNum; i < n; ++i) {\n        streamState.entryNum = i;\n        streamState.streamPos = stream.pos;\n\n        let type = 0,\n          offset = 0,\n          generation = 0;\n        for (let j = 0; j < typeFieldWidth; ++j) {\n          const typeByte = stream.getByte();\n          if (typeByte === -1) {\n            throw new FormatError(\"Invalid XRef byteWidths 'type'.\");\n          }\n          type = (type << 8) | typeByte;\n        }\n        // if type field is absent, its default value is 1\n        if (typeFieldWidth === 0) {\n          type = 1;\n        }\n        for (let j = 0; j < offsetFieldWidth; ++j) {\n          const offsetByte = stream.getByte();\n          if (offsetByte === -1) {\n            throw new FormatError(\"Invalid XRef byteWidths 'offset'.\");\n          }\n          offset = (offset << 8) | offsetByte;\n        }\n        for (let j = 0; j < generationFieldWidth; ++j) {\n          const generationByte = stream.getByte();\n          if (generationByte === -1) {\n            throw new FormatError(\"Invalid XRef byteWidths 'generation'.\");\n          }\n          generation = (generation << 8) | generationByte;\n        }\n        const entry = {};\n        entry.offset = offset;\n        entry.gen = generation;\n        switch (type) {\n          case 0:\n            entry.free = true;\n            break;\n          case 1:\n            entry.uncompressed = true;\n            break;\n          case 2:\n            break;\n          default:\n            throw new FormatError(`Invalid XRef entry type: ${type}`);\n        }\n        if (!this.entries[first + i]) {\n          this.entries[first + i] = entry;\n        }\n      }\n\n      streamState.entryNum = 0;\n      streamState.streamPos = stream.pos;\n      entryRanges.splice(0, 2);\n    }\n  }\n\n  indexObjects() {\n    // Simple scan through the PDF content to find objects,\n    // trailers and XRef streams.\n    const TAB = 0x9,\n      LF = 0xa,\n      CR = 0xd,\n      SPACE = 0x20;\n    const PERCENT = 0x25,\n      LT = 0x3c;\n\n    function readToken(data, offset) {\n      let token = \"\",\n        ch = data[offset];\n      while (ch !== LF && ch !== CR && ch !== LT) {\n        if (++offset >= data.length) {\n          break;\n        }\n        token += String.fromCharCode(ch);\n        ch = data[offset];\n      }\n      return token;\n    }\n    function skipUntil(data, offset, what) {\n      const length = what.length,\n        dataLength = data.length;\n      let skipped = 0;\n      // finding byte sequence\n      while (offset < dataLength) {\n        let i = 0;\n        while (i < length && data[offset + i] === what[i]) {\n          ++i;\n        }\n        if (i >= length) {\n          break; // sequence found\n        }\n        offset++;\n        skipped++;\n      }\n      return skipped;\n    }\n    const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n    const endobjRegExp = /\\bendobj[\\b\\s]$/;\n    const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n    const CHECK_CONTENT_LENGTH = 25;\n\n    const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n    const startxrefBytes = new Uint8Array([\n      115, 116, 97, 114, 116, 120, 114, 101, 102,\n    ]);\n    const objBytes = new Uint8Array([111, 98, 106]);\n    const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n    // Clear out any existing entries, since they may be bogus.\n    this.entries.length = 0;\n    this._cacheMap.clear();\n\n    const stream = this.stream;\n    stream.pos = 0;\n    const buffer = stream.getBytes(),\n      length = buffer.length;\n    let position = stream.start;\n    const trailers = [],\n      xrefStms = [];\n    while (position < length) {\n      let ch = buffer[position];\n      if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n        ++position;\n        continue;\n      }\n      if (ch === PERCENT) {\n        // %-comment\n        do {\n          ++position;\n          if (position >= length) {\n            break;\n          }\n          ch = buffer[position];\n        } while (ch !== LF && ch !== CR);\n        continue;\n      }\n      const token = readToken(buffer, position);\n      let m;\n      if (\n        token.startsWith(\"xref\") &&\n        (token.length === 4 || /\\s/.test(token[4]))\n      ) {\n        position += skipUntil(buffer, position, trailerBytes);\n        trailers.push(position);\n        position += skipUntil(buffer, position, startxrefBytes);\n      } else if ((m = objRegExp.exec(token))) {\n        const num = m[1] | 0,\n          gen = m[2] | 0;\n\n        let contentLength,\n          startPos = position + token.length,\n          updateEntries = false;\n        if (!this.entries[num]) {\n          updateEntries = true;\n        } else if (this.entries[num].gen === gen) {\n          // Before overwriting an existing entry, ensure that the new one won't\n          // cause *immediate* errors when it's accessed (fixes issue13783.pdf).\n          try {\n            const parser = new Parser({\n              lexer: new Lexer(stream.makeSubStream(startPos)),\n            });\n            parser.getObj();\n            updateEntries = true;\n          } catch (ex) {\n            if (ex instanceof ParserEOFException) {\n              warn(`indexObjects -- checking object (${token}): \"${ex}\".`);\n            } else {\n              // The error may come from the `Parser`-instance being initialized\n              // without an `XRef`-instance (we don't have a usable one yet).\n              updateEntries = true;\n            }\n          }\n        }\n        if (updateEntries) {\n          this.entries[num] = {\n            offset: position - stream.start,\n            gen,\n            uncompressed: true,\n          };\n        }\n\n        // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n        // we won't skip over a new 'obj' operator in corrupt files where\n        // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n        while (startPos < buffer.length) {\n          const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n          contentLength = endPos - position;\n\n          const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n          const tokenStr = bytesToString(buffer.subarray(checkPos, endPos));\n\n          // Check if the current object ends with an 'endobj' operator.\n          if (endobjRegExp.test(tokenStr)) {\n            break;\n          } else {\n            // Check if an \"obj\" occurrence is actually a new object,\n            // i.e. the current object is missing the 'endobj' operator.\n            const objToken = nestedObjRegExp.exec(tokenStr);\n\n            if (objToken && objToken[1]) {\n              warn(\n                'indexObjects: Found new \"obj\" inside of another \"obj\", ' +\n                  'caused by missing \"endobj\" -- trying to recover.'\n              );\n              contentLength -= objToken[1].length;\n              break;\n            }\n          }\n          startPos = endPos;\n        }\n        const content = buffer.subarray(position, position + contentLength);\n\n        // checking XRef stream suspect\n        // (it shall have '/XRef' and next char is not a letter)\n        const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n        if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n          xrefStms.push(position - stream.start);\n          this.xrefstms[position - stream.start] = 1; // Avoid recursion\n        }\n\n        position += contentLength;\n      } else if (\n        token.startsWith(\"trailer\") &&\n        (token.length === 7 || /\\s/.test(token[7]))\n      ) {\n        trailers.push(position);\n        position += skipUntil(buffer, position, startxrefBytes);\n      } else {\n        position += token.length + 1;\n      }\n    }\n    // reading XRef streams\n    for (let i = 0, ii = xrefStms.length; i < ii; ++i) {\n      this.startXRefQueue.push(xrefStms[i]);\n      this.readXRef(/* recoveryMode */ true);\n    }\n    // finding main trailer\n    let trailerDict;\n    for (let i = 0, ii = trailers.length; i < ii; ++i) {\n      stream.pos = trailers[i];\n      const parser = new Parser({\n        lexer: new Lexer(stream),\n        xref: this,\n        allowStreams: true,\n        recoveryMode: true,\n      });\n      const obj = parser.getObj();\n      if (!isCmd(obj, \"trailer\")) {\n        continue;\n      }\n      // read the trailer dictionary\n      const dict = parser.getObj();\n      if (!(dict instanceof Dict)) {\n        continue;\n      }\n      // Do some basic validation of the trailer/root dictionary candidate.\n      try {\n        const rootDict = dict.get(\"Root\");\n        if (!(rootDict instanceof Dict)) {\n          continue;\n        }\n        const pagesDict = rootDict.get(\"Pages\");\n        if (!(pagesDict instanceof Dict)) {\n          continue;\n        }\n        const pagesCount = pagesDict.get(\"Count\");\n        if (!Number.isInteger(pagesCount)) {\n          continue;\n        }\n        // The top-level /Pages dictionary isn't obviously corrupt.\n      } catch (ex) {\n        continue;\n      }\n      // taking the first one with 'ID'\n      if (dict.has(\"ID\")) {\n        return dict;\n      }\n      // The current dictionary is a candidate, but continue searching.\n      trailerDict = dict;\n    }\n    // No trailer with 'ID', taking last one (if exists).\n    if (trailerDict) {\n      return trailerDict;\n    }\n    // No trailer dictionary found, taking the \"top\"-dictionary (if exists).\n    if (this.topDict) {\n      return this.topDict;\n    }\n    // nothing helps\n    throw new InvalidPDFException(\"Invalid PDF structure.\");\n  }\n\n  readXRef(recoveryMode = false) {\n    const stream = this.stream;\n    // Keep track of already parsed XRef tables, to prevent an infinite loop\n    // when parsing corrupt PDF files where e.g. the /Prev entries create a\n    // circular dependency between tables (fixes bug1393476.pdf).\n    const startXRefParsedCache = new Set();\n\n    try {\n      while (this.startXRefQueue.length) {\n        const startXRef = this.startXRefQueue[0];\n\n        if (startXRefParsedCache.has(startXRef)) {\n          warn(\"readXRef - skipping XRef table since it was already parsed.\");\n          this.startXRefQueue.shift();\n          continue;\n        }\n        startXRefParsedCache.add(startXRef);\n\n        stream.pos = startXRef + stream.start;\n\n        const parser = new Parser({\n          lexer: new Lexer(stream),\n          xref: this,\n          allowStreams: true,\n        });\n        let obj = parser.getObj();\n        let dict;\n\n        // Get dictionary\n        if (isCmd(obj, \"xref\")) {\n          // Parse end-of-file XRef\n          dict = this.processXRefTable(parser);\n          if (!this.topDict) {\n            this.topDict = dict;\n          }\n\n          // Recursively get other XRefs 'XRefStm', if any\n          obj = dict.get(\"XRefStm\");\n          if (Number.isInteger(obj)) {\n            const pos = obj;\n            // ignore previously loaded xref streams\n            // (possible infinite recursion)\n            if (!(pos in this.xrefstms)) {\n              this.xrefstms[pos] = 1;\n              this.startXRefQueue.push(pos);\n            }\n          }\n        } else if (Number.isInteger(obj)) {\n          // Parse in-stream XRef\n          if (\n            !Number.isInteger(parser.getObj()) ||\n            !isCmd(parser.getObj(), \"obj\") ||\n            !((obj = parser.getObj()) instanceof BaseStream)\n          ) {\n            throw new FormatError(\"Invalid XRef stream\");\n          }\n          dict = this.processXRefStream(obj);\n          if (!this.topDict) {\n            this.topDict = dict;\n          }\n          if (!dict) {\n            throw new FormatError(\"Failed to read XRef stream\");\n          }\n        } else {\n          throw new FormatError(\"Invalid XRef stream header\");\n        }\n\n        // Recursively get previous dictionary, if any\n        obj = dict.get(\"Prev\");\n        if (Number.isInteger(obj)) {\n          this.startXRefQueue.push(obj);\n        } else if (obj instanceof Ref) {\n          // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n          // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n          this.startXRefQueue.push(obj.num);\n        }\n\n        this.startXRefQueue.shift();\n      }\n\n      return this.topDict;\n    } catch (e) {\n      if (e instanceof MissingDataException) {\n        throw e;\n      }\n      info(\"(while reading XRef): \" + e);\n\n      this.startXRefQueue.shift();\n    }\n\n    if (recoveryMode) {\n      return undefined;\n    }\n    throw new XRefParseException();\n  }\n\n  getEntry(i) {\n    const xrefEntry = this.entries[i];\n    if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n      return xrefEntry;\n    }\n    return null;\n  }\n\n  fetchIfRef(obj, suppressEncryption = false) {\n    if (obj instanceof Ref) {\n      return this.fetch(obj, suppressEncryption);\n    }\n    return obj;\n  }\n\n  fetch(ref, suppressEncryption = false) {\n    if (!(ref instanceof Ref)) {\n      throw new Error(\"ref object is not a reference\");\n    }\n    const num = ref.num;\n\n    // The XRef cache is populated with objects which are obtained through\n    // `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\n    // methods should ever return `undefined` (note the `assert` calls below).\n    const cacheEntry = this._cacheMap.get(num);\n    if (cacheEntry !== undefined) {\n      // In documents with Object Streams, it's possible that cached `Dict`s\n      // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n      if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n        cacheEntry.objId = ref.toString();\n      }\n      return cacheEntry;\n    }\n    let xrefEntry = this.getEntry(num);\n\n    if (xrefEntry === null) {\n      // The referenced entry can be free.\n      this._cacheMap.set(num, xrefEntry);\n      return xrefEntry;\n    }\n    // Prevent circular references, in corrupt PDF documents, from hanging the\n    // worker-thread. This relies, implicitly, on the parsing being synchronous.\n    if (this._pendingRefs.has(ref)) {\n      this._pendingRefs.remove(ref);\n\n      warn(`Ignoring circular reference: ${ref}.`);\n      return CIRCULAR_REF;\n    }\n    this._pendingRefs.put(ref);\n\n    try {\n      if (xrefEntry.uncompressed) {\n        xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n      } else {\n        xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n      }\n      this._pendingRefs.remove(ref);\n    } catch (ex) {\n      this._pendingRefs.remove(ref);\n      throw ex;\n    }\n    if (xrefEntry instanceof Dict) {\n      xrefEntry.objId = ref.toString();\n    } else if (xrefEntry instanceof BaseStream) {\n      xrefEntry.dict.objId = ref.toString();\n    }\n    return xrefEntry;\n  }\n\n  fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n    const gen = ref.gen;\n    let num = ref.num;\n    if (xrefEntry.gen !== gen) {\n      throw new XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n    }\n    const stream = this.stream.makeSubStream(\n      xrefEntry.offset + this.stream.start\n    );\n    const parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: this,\n      allowStreams: true,\n    });\n    const obj1 = parser.getObj();\n    const obj2 = parser.getObj();\n    const obj3 = parser.getObj();\n\n    if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n      throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n    }\n    if (obj3.cmd !== \"obj\") {\n      // some bad PDFs use \"obj1234\" and really mean 1234\n      if (obj3.cmd.startsWith(\"obj\")) {\n        num = parseInt(obj3.cmd.substring(3), 10);\n        if (!Number.isNaN(num)) {\n          return num;\n        }\n      }\n      throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n    }\n    if (this.encrypt && !suppressEncryption) {\n      xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n    } else {\n      xrefEntry = parser.getObj();\n    }\n    if (!(xrefEntry instanceof BaseStream)) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          xrefEntry !== undefined,\n          'fetchUncompressed: The \"xrefEntry\" cannot be undefined.'\n        );\n      }\n      this._cacheMap.set(num, xrefEntry);\n    }\n    return xrefEntry;\n  }\n\n  fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n    const tableOffset = xrefEntry.offset;\n    const stream = this.fetch(Ref.get(tableOffset, 0));\n    if (!(stream instanceof BaseStream)) {\n      throw new FormatError(\"bad ObjStm stream\");\n    }\n    const first = stream.dict.get(\"First\");\n    const n = stream.dict.get(\"N\");\n    if (!Number.isInteger(first) || !Number.isInteger(n)) {\n      throw new FormatError(\"invalid first and n parameters for ObjStm stream\");\n    }\n    let parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: this,\n      allowStreams: true,\n    });\n    const nums = new Array(n);\n    const offsets = new Array(n);\n    // read the object numbers to populate cache\n    for (let i = 0; i < n; ++i) {\n      const num = parser.getObj();\n      if (!Number.isInteger(num)) {\n        throw new FormatError(\n          `invalid object number in the ObjStm stream: ${num}`\n        );\n      }\n      const offset = parser.getObj();\n      if (!Number.isInteger(offset)) {\n        throw new FormatError(\n          `invalid object offset in the ObjStm stream: ${offset}`\n        );\n      }\n      nums[i] = num;\n      offsets[i] = offset;\n    }\n\n    const start = (stream.start || 0) + first;\n    const entries = new Array(n);\n    // read stream objects for cache\n    for (let i = 0; i < n; ++i) {\n      const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n      if (length < 0) {\n        throw new FormatError(\"Invalid offset in the ObjStm stream.\");\n      }\n      parser = new Parser({\n        lexer: new Lexer(\n          stream.makeSubStream(start + offsets[i], length, stream.dict)\n        ),\n        xref: this,\n        allowStreams: true,\n      });\n\n      const obj = parser.getObj();\n      entries[i] = obj;\n      if (obj instanceof BaseStream) {\n        continue;\n      }\n      const num = nums[i],\n        entry = this.entries[num];\n      if (entry && entry.offset === tableOffset && entry.gen === i) {\n        if (\n          typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")\n        ) {\n          assert(\n            obj !== undefined,\n            'fetchCompressed: The \"obj\" cannot be undefined.'\n          );\n        }\n        this._cacheMap.set(num, obj);\n      }\n    }\n    xrefEntry = entries[xrefEntry.gen];\n    if (xrefEntry === undefined) {\n      throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n    }\n    return xrefEntry;\n  }\n\n  async fetchIfRefAsync(obj, suppressEncryption) {\n    if (obj instanceof Ref) {\n      return this.fetchAsync(obj, suppressEncryption);\n    }\n    return obj;\n  }\n\n  async fetchAsync(ref, suppressEncryption) {\n    try {\n      return this.fetch(ref, suppressEncryption);\n    } catch (ex) {\n      if (!(ex instanceof MissingDataException)) {\n        throw ex;\n      }\n      await this.pdfManager.requestRange(ex.begin, ex.end);\n      return this.fetchAsync(ref, suppressEncryption);\n    }\n  }\n\n  getCatalogObj() {\n    return this.root;\n  }\n}\n\nexport { XRef };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  assert,\n  createPromiseCapability,\n  MissingPDFException,\n  PasswordException,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n  UNKNOWN: 0,\n  DATA: 1,\n  ERROR: 2,\n};\n\nconst StreamKind = {\n  UNKNOWN: 0,\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n  if (\n    !(\n      reason instanceof Error ||\n      (typeof reason === \"object\" && reason !== null)\n    )\n  ) {\n    unreachable(\n      'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n    );\n  }\n  switch (reason.name) {\n    case \"AbortException\":\n      return new AbortException(reason.message);\n    case \"MissingPDFException\":\n      return new MissingPDFException(reason.message);\n    case \"PasswordException\":\n      return new PasswordException(reason.message, reason.code);\n    case \"UnexpectedResponseException\":\n      return new UnexpectedResponseException(reason.message, reason.status);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(reason.message, reason.details);\n    default:\n      return new UnknownErrorException(reason.message, reason.toString());\n  }\n}\n\nclass MessageHandler {\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.streamSinks = Object.create(null);\n    this.streamControllers = Object.create(null);\n    this.callbackCapabilities = Object.create(null);\n    this.actionHandler = Object.create(null);\n\n    this._onComObjOnMessage = event => {\n      const data = event.data;\n      if (data.targetName !== this.sourceName) {\n        return;\n      }\n      if (data.stream) {\n        this._processStreamMessage(data);\n        return;\n      }\n      if (data.callback) {\n        const callbackId = data.callbackId;\n        const capability = this.callbackCapabilities[callbackId];\n        if (!capability) {\n          throw new Error(`Cannot resolve callback ${callbackId}`);\n        }\n        delete this.callbackCapabilities[callbackId];\n\n        if (data.callback === CallbackKind.DATA) {\n          capability.resolve(data.data);\n        } else if (data.callback === CallbackKind.ERROR) {\n          capability.reject(wrapReason(data.reason));\n        } else {\n          throw new Error(\"Unexpected callback case\");\n        }\n        return;\n      }\n      const action = this.actionHandler[data.action];\n      if (!action) {\n        throw new Error(`Unknown action from worker: ${data.action}`);\n      }\n      if (data.callbackId) {\n        const cbSourceName = this.sourceName;\n        const cbTargetName = data.sourceName;\n\n        new Promise(function (resolve) {\n          resolve(action(data.data));\n        }).then(\n          function (result) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.DATA,\n              callbackId: data.callbackId,\n              data: result,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.ERROR,\n              callbackId: data.callbackId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        return;\n      }\n      if (data.streamId) {\n        this._createStreamSink(data);\n        return;\n      }\n      action(data.data);\n    };\n    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n  }\n\n  on(actionName, handler) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        typeof handler === \"function\",\n        'MessageHandler.on: Expected \"handler\" to be a function.'\n      );\n    }\n    const ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = handler;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   */\n  send(actionName, data, transfers) {\n    this.comObj.postMessage(\n      {\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        data,\n      },\n      transfers\n    );\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expects that the other side will callback with the response.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {Promise} Promise to be resolved with response data.\n   */\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = createPromiseCapability();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this.comObj.postMessage(\n        {\n          sourceName: this.sourceName,\n          targetName: this.targetName,\n          action: actionName,\n          callbackId,\n          data,\n        },\n        transfers\n      );\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expect that the other side will callback to signal 'start_complete'.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n   *                 internal queue.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\n   */\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++,\n      sourceName = this.sourceName,\n      targetName = this.targetName,\n      comObj = this.comObj;\n\n    return new ReadableStream(\n      {\n        start: controller => {\n          const startCapability = createPromiseCapability();\n          this.streamControllers[streamId] = {\n            controller,\n            startCall: startCapability,\n            pullCall: null,\n            cancelCall: null,\n            isClosed: false,\n          };\n          comObj.postMessage(\n            {\n              sourceName,\n              targetName,\n              action: actionName,\n              streamId,\n              data,\n              desiredSize: controller.desiredSize,\n            },\n            transfers\n          );\n          // Return Promise for Async process, to signal success/failure.\n          return startCapability.promise;\n        },\n\n        pull: controller => {\n          const pullCapability = createPromiseCapability();\n          this.streamControllers[streamId].pullCall = pullCapability;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL,\n            streamId,\n            desiredSize: controller.desiredSize,\n          });\n          // Returning Promise will not call \"pull\"\n          // again until current pull is resolved.\n          return pullCapability.promise;\n        },\n\n        cancel: reason => {\n          assert(reason instanceof Error, \"cancel must have a valid reason\");\n          const cancelCapability = createPromiseCapability();\n          this.streamControllers[streamId].cancelCall = cancelCapability;\n          this.streamControllers[streamId].isClosed = true;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL,\n            streamId,\n            reason: wrapReason(reason),\n          });\n          // Return Promise to signal success or failure.\n          return cancelCapability.promise;\n        },\n      },\n      queueingStrategy\n    );\n  }\n\n  /**\n   * @private\n   */\n  _createStreamSink(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const self = this,\n      action = this.actionHandler[data.action];\n\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        // Enqueue decreases the desiredSize property of sink,\n        // so when it changes from positive to negative,\n        // set ready as unresolved promise.\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = createPromiseCapability();\n          this.ready = this.sinkCapability.promise;\n        }\n        comObj.postMessage(\n          {\n            sourceName,\n            targetName,\n            stream: StreamKind.ENQUEUE,\n            streamId,\n            chunk,\n          },\n          transfers\n        );\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId,\n        });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        assert(reason instanceof Error, \"error must have a valid reason\");\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      },\n\n      sinkCapability: createPromiseCapability(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null,\n    };\n\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n\n    new Promise(function (resolve) {\n      resolve(action(data.data, streamSink));\n    }).then(\n      function () {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          success: true,\n        });\n      },\n      function (reason) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      }\n    );\n  }\n\n  /**\n   * @private\n   */\n  _processStreamMessage(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const streamController = this.streamControllers[streamId],\n      streamSink = this.streamSinks[streamId];\n\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          streamController.startCall.resolve();\n        } else {\n          streamController.startCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          streamController.pullCall.resolve();\n        } else {\n          streamController.pullCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL:\n        // Ignore any pull after close is called.\n        if (!streamSink) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true,\n          });\n          break;\n        }\n        // Pull increases the desiredSize property of sink, so when it changes\n        // from negative to positive, set ready property as resolved promise.\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        streamSink.desiredSize = data.desiredSize;\n\n        new Promise(function (resolve) {\n          resolve(streamSink.onPull && streamSink.onPull());\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        break;\n      case StreamKind.ENQUEUE:\n        assert(streamController, \"enqueue should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(streamController, \"close should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.isClosed = true;\n        streamController.controller.close();\n        this._deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(streamController, \"error should have stream controller\");\n        streamController.controller.error(wrapReason(data.reason));\n        this._deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          streamController.cancelCall.resolve();\n        } else {\n          streamController.cancelCall.reject(wrapReason(data.reason));\n        }\n        this._deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!streamSink) {\n          break;\n        }\n\n        new Promise(function (resolve) {\n          resolve(\n            streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n          );\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        streamSink.sinkCapability.reject(wrapReason(data.reason));\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  /**\n   * @private\n   */\n  async _deleteStreamController(streamController, streamId) {\n    // Delete the `streamController` only when the start, pull, and cancel\n    // capabilities have settled, to prevent `TypeError`s.\n    await Promise.allSettled([\n      streamController.startCall && streamController.startCall.promise,\n      streamController.pullCall && streamController.pullCall.promise,\n      streamController.cancelCall && streamController.cancelCall.promise,\n    ]);\n    delete this.streamControllers[streamId];\n  }\n\n  destroy() {\n    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n  }\n}\n\nexport { MessageHandler };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFWorkerStream {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this._contentLength = null;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFWorkerStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFWorkerStreamReader {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    this._contentLength = null;\n    this._isRangeSupported = false;\n    this._isStreamingSupported = false;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n    this._reader = readableStream.getReader();\n\n    this._headersReady = this._msgHandler\n      .sendWithPromise(\"ReaderHeadersReady\")\n      .then(data => {\n        this._isStreamingSupported = data.isStreamingSupported;\n        this._isRangeSupported = data.isRangeSupported;\n        this._contentLength = data.contentLength;\n      });\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  async read() {\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value: undefined, done: true };\n    }\n    // `value` is wrapped into Uint8Array, we need to\n    // unwrap it to ArrayBuffer for further processing.\n    return { value: value.buffer, done: false };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFWorkerStreamRangeReader {\n  constructor(begin, end, msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n      begin,\n      end,\n    });\n    this._reader = readableStream.getReader();\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value: undefined, done: true };\n    }\n    return { value: value.buffer, done: false };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\nexport { PDFWorkerStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__w_pdfjs_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__w_pdfjs_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WorkerMessageHandler } from \"./core/worker.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nexport { WorkerMessageHandler };\n"],"names":["WorkerTask","constructor","name","terminated","_capability","createPromiseCapability","finished","promise","finish","resolve","terminate","ensureNotTerminated","Error","WorkerMessageHandler","setup","handler","port","testMessageProcessed","on","wphSetupTest","data","send","Uint8Array","wphConfigure","setVerbosityLevel","verbosity","wphSetupDoc","createDocumentHandler","docParams","pdfManager","cancelXHRs","WorkerTasks","getVerbosityLevel","apiVersion","workerVersion","enumerableProperties","property","push","length","join","ReadableStream","partialMsg","isNodeJS","docId","docBaseUrl","workerHandlerName","MessageHandler","startWorkerTask","task","finishWorkerTask","i","indexOf","splice","loadDocument","recoveryMode","ensureDoc","isPureXfa","Promise","all","loadXfaFonts","catch","reason","then","loadXfaImages","numPages","fingerprints","htmlForXfa","getPdfManager","evaluatorOptions","enableXfa","pdfManagerCapability","newPdfManager","source","LocalPdfManager","password","ex","reject","pdfStream","cachedChunks","PDFWorkerStream","fullRequest","getFullReader","headersReady","isRangeSupported","disableAutoFetch","isStreamingSupported","NetworkPdfManager","msgHandler","contentLength","rangeChunkSize","sendProgressiveData","loaded","flushChunks","pdfFile","arraysToBytes","warn","readPromise","readChunk","value","done","arrayByteLength","total","Math","max","read","e","cancelAllRequests","setupDoc","onSuccess","doc","pdfInfo","onFailure","PasswordException","code","sendWithPromise","updatePassword","pdfManagerReady","InvalidPDFException","MissingPDFException","UnexpectedResponseException","UnknownErrorException","message","toString","XRefParseException","requestLoadedStream","onLoadedStream","maxImageSize","disableFontFace","ignoreErrors","isEvalSupported","fontExtraProperties","useSystemFonts","cMapUrl","standardFontDataUrl","AbortException","stream","bytes","byteLength","wphSetupGetPage","getPage","pageIndex","page","ensure","rotate","ref","userUnit","view","wphSetupGetPageIndex","pageRef","Ref","get","num","gen","ensureCatalog","wphSetupGetDestinations","wphSetupGetDestination","id","wphSetupGetPageLabels","wphSetupGetPageLayout","wphSetupGetPageMode","wphSetupGetAttachments","wphSetupGetJavaScript","wphSetupGetDocJSActions","wphSetupGetOutline","wphSetupGetMetadata","wphSetupGetMarkInfo","wphSetupGetData","intent","getAnnotationsData","annotationStorage","filename","promises","serializeXfaData","save","finally","acroForm","acroFormRef","xref","startXRef","newRefs","xfaData","refs","filter","x","reduce","a","b","concat","xfa","Dict","xfaDatasetsRef","hasXfaDatasetsEntry","Array","isArray","ii","getNewRef","newXrefInfo","Object","create","trailer","infoObj","xrefInfo","forEach","key","stringToPDFString","rootRef","getRaw","encryptRef","newRef","infoRef","info","fileIds","resetNewRef","incrementalUpdate","originalData","hasXfa","wphSetupRenderPage","sink","start","VerbosityLevel","INFOS","Date","now","getOperatorList","cacheKey","operatorListInfo","close","featureId","UNSUPPORTED_FEATURES","errorOperatorList","error","wphExtractText","extractTextContent","includeMarkedContent","combineTextItems","wphGetStructTree","fontFallback","wphCleanup","cleanup","wphTerminate","waitOn","cleanupPromise","clearGlobalCaches","destroy","wphReady","initializeFromPort","isMessagePort","maybePort","postMessage","window","self","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","level","Number","isInteger","msg","console","log","unreachable","assert","cond","isSameOrigin","baseUrl","otherUrl","base","URL","origin","other","_isValidProtocol","url","protocol","createValidAbsoluteUrl","options","addDefaultProtocol","startsWith","dots","match","tryConvertEncoding","stringToUTF8String","absoluteUrl","shadow","obj","prop","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","prototype","details","status","FormatError","bytesToString","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","chunkEnd","min","chunk","subarray","stringToBytes","str","charCodeAt","arr","resultLength","pos","item","itemLength","set","string32","objectSize","keys","objectFromMap","map","isLittleEndian","buffer8","view32","Uint32Array","buffer","IsLittleEndianCached","Function","IsEvalSupportedCached","hexNumbers","n","padStart","Util","makeHexColor","r","g","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","compare","orderedX","sort","orderedY","result","bezierBoundingBox","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","encoding","decoder","TextDecoder","fatal","decode","charAt","escapeString","replace","isAscii","test","stringToUTF16BEString","buf","char","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","isArrayEqual","arr1","arr2","getModificationDate","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","capability","isSettled","process","versions","nw","electron","type","CIRCULAR_REF","Symbol","EOF","Name","NameClosure","nameCache","nameValue","_clearCache","Cmd","CmdClosure","cmdCache","cmd","cmdValue","nonSerializable","nonSerializableClosure","_map","objId","suppressEncryption","__nonSerializable__","assignXref","newXref","size","key1","key2","key3","fetch","getAsync","fetchAsync","getArray","getKeys","getRawValues","values","has","callback","empty","emptyDict","merge","dictArray","mergeSubDicts","mergedDict","properties","Map","dict","entries","subDict","clear","RefClosure","refCache","refValue","RefSet","parent","_set","Set","put","add","remove","delete","RefSetCache","putAlias","aliasRef","isName","isCmd","isDict","isRefsEqual","v1","v2","clearPrimitiveCaches","parseDocBaseUrl","href","BasePdfManager","_docId","_password","_docBaseUrl","args","pdfDocument","ensureXRef","catalog","manuallyTriggered","requestRange","begin","end","Stream","PDFDocument","_loadedStreamPromise","pdfNetworkStream","streamManager","ChunkedStreamManager","getStream","MissingDataException","requestAllChunks","onReceiveData","abort","ChunkedStream","chunkSize","manager","_loadedChunks","numChunks","ceil","progressiveDataLength","lastSuccessfulEnsureByteChunk","getMissingChunks","chunks","numChunksLoaded","isDataLoaded","beginChunk","floor","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","hasChunk","getByte","getBytes","forceClamped","strEnd","Uint8ClampedArray","getByteRange","makeSubStream","ChunkedStreamSubstream","missingChunks","subStream","getBaseStreams","currRequestId","_chunksNeededByRequest","_requestsByChunk","_promisesByRequest","aborted","_loadedStreamCapability","sendRequest","rangeReader","getRangeReader","onProgress","bind","chunkData","_requestChunks","requestId","chunksNeeded","chunksToRequest","requestIds","groupedChunksToRequest","groupChunks","groupedChunk","getBeginChunk","getEndChunk","requestRanges","ranges","range","includes","groupedChunks","prevChunk","isProgressive","loadedRequests","lastChunk","onError","err","getLookupTableFactory","initializer","lookup","getArrayLookupTableFactory","ParserEOFException","XRefEntryException","DocStats","_handler","_streamTypes","_fontTypes","_send","streamTypes","fontTypes","addStreamType","addFontType","getInheritableProperty","stopWhenFound","visited","ROMAN_NUMBER_MAP","toRomanNumerals","number","lowerCase","romanBuf","romanStr","toLowerCase","log2","readInt8","offset","readUint16","readUint32","isWhiteSpace","ch","parseXFAPath","path","positionPattern","split","component","parseInt","escapePDFName","substring","_collectJS","entry","list","parents","element","js","BaseStream","getString","collectActions","eventType","actions","additionalActionsDicts","additionalActions","action","actionDict","Action","XMLEntities","encodeToXmlString","codePointAt","entity","toUpperCase","validateCSSFont","cssFontInfo","DEFAULT_CSS_FONT_OBLIQUE","DEFAULT_CSS_FONT_WEIGHT","CSS_FONT_WEIGHT_VALUES","fontFamily","fontWeight","italicAngle","ident","weight","angle","parseFloat","isNaN","recoverJsURL","URL_OPEN_METHODS","regex","RegExp","jsUrl","exec","newWindow","isEmpty","peekByte","peekedByte","peekBytes","getUint16","b0","b1","getInt32","b2","b3","skip","reset","moveStart","arrayBuffer","StringStream","NullStream","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","Page","pageDict","globalIdFactory","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","nonBlendModesSet","xfaFactory","resourcesPromise","idCounters","_localIdFactory","createObjId","getPageObjId","_getInheritableProperty","content","resources","_getBoundingBox","bbox","box","mediaBox","cropBox","_onSubStreamError","getContentStream","StreamsSequenceStream","getBoundingBox","partialEvaluator","PartialEvaluator","idFactory","_parsedAnnotations","annotations","newRefsPromises","annotation","mustBePrinted","loadResources","objectLoader","ObjectLoader","load","contentStreamPromise","dataPromises","pageListPromise","contentStream","opList","OperatorList","transparency","hasBlendModes","operatorList","pageOpList","flush","totalLength","renderForms","intentAny","intentDisplay","intentPrint","opListPromises","mustBeViewed","opLists","addOp","addOpList","getTextContent","viewBox","getStructTree","structTreeRoot","structTree","serializable","_parseStructTree","tree","StructTreePage","parse","annotationsData","viewable","printable","annots","parsedAnnotations","annotationPromises","annotationRef","AnnotationFactory","jsActions","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","find","signature","limit","backwards","signatureLength","scanBytes","scanLength","signatureEnd","arg","XRef","_pagePromises","_version","_globalIdFactory","getDocId","createFontId","Catalog","version","linearization","Linearization","step","startXRefLength","found","checkHeader","MAX_PDF_VERSION_LENGTH","parseStartXRef","setStartXRef","hasActualNumPages","getNumPages","_hasOnlyDocumentSignatures","fields","recursionDepth","RECURSION_LIMIT","every","field","fetchIfRef","isSignature","isInvisible","template","datasets","config","connectionSet","localeSet","stylesheet","_","hasOwnProperty","needsRendering","formInfo","hasAcroForm","XFAFactory","isValid","getPages","xfaImagesDict","xfaImages","setImages","fontRes","assign","pdfFonts","initialState","clone","fonts","fontName","descriptor","handleSetFont","missingFonts","setFonts","reallyMissingFonts","missing","getXfaFontName","fontInfo","getXfaFontDict","appendFonts","serializeData","hasFields","hasSignatures","sigFlags","hasOnlyDocumentSignatures","documentInfo","docInfo","PDFFormatVersion","Language","lang","EncryptFilterName","encrypt","filterName","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","collection","IsSignaturesPresent","infoDict","customValue","Custom","validate","hexString","hash","hex","idArray","hashOriginal","hashModified","calculateMD5","_getLinearizationPage","objectNumberFirst","pageKidsCountCache","pageIndexCache","getPageDict","cachedPromise","pageFirst","checkFirstPage","checkLastPage","setActualNumPages","pagesTree","getAllPageDicts","reasonAll","_collectFieldObjects","fieldRef","partName","getFieldObject","kids","kid","fieldObjects","allFields","fieldPromises","allPromises","hasJSActions","_parseHasJSActions","catalogJsActions","some","fieldObject","object","calculationOrderIds","calculationOrder","ids","getXFAFontMap","factors","MyriadProRegularFactors","baseWidths","LiberationSansRegularWidths","baseMapping","LiberationSansRegularMapping","metrics","MyriadProRegularMetrics","MyriadProBoldFactors","LiberationSansBoldWidths","LiberationSansBoldMapping","MyriadProBoldMetrics","MyriadProItalicFactors","LiberationSansItalicWidths","LiberationSansItalicMapping","MyriadProItalicMetrics","MyriadProBoldItalicFactors","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","MyriadProBoldItalicMetrics","ArialMT","Arial","CalibriRegularFactors","CalibriRegularMetrics","CalibriBoldFactors","CalibriBoldMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","Helvetica","HelveticaRegularFactors","HelveticaRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","normalizeFontName","fontMap","getXfaFontWidths","rescaledBaseWidths","w","currentCode","currentArray","newWidths","unicode","glyphIndex","charUnicode","index","unicode1","unicode2","widths","systemInfo","lineHeight","lineGap","SEAC_ANALYSIS_ENABLED","FontFlags","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","getFontType","subtype","isStandardFont","recoverGlyphName","glyphsUnicodeMap","getUnicodeForGlyph","type1FontGlyphMapping","builtInEncoding","glyphNames","charCodeToGlyphId","glyphId","charCode","baseEncoding","isSymbolicFont","flags","isInternalFont","baseEncodingName","getEncoding","StandardEncoding","differences","glyphName","getGlyphsUnicode","standardGlyphName","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","encodingName","getDingbatsGlyphsUnicode","getSpecialPUASymbols","mapSpecialUnicodeValues","nameLen","hexStr","UnicodeRanges","getUnicodeRangeFor","isRTLRangeFor","getNormalizedUnicodes","reverseIfRtl","chars","charsLength","SpecialCharRegExp","CategoryCache","getCharUnicodeCategory","cachedCategory","groups","category","isWhitespace","isZeroWidthDiacritic","isInvisibleFormatMark","clearUnicodeCaches","collectFields","_getPageIndex","_create","parameters","LinkAnnotation","TextAnnotation","fieldType","TextWidgetAnnotation","ButtonWidgetAnnotation","ChoiceWidgetAnnotation","SignatureWidgetAnnotation","WidgetAnnotation","PopupAnnotation","FreeTextAnnotation","LineAnnotation","SquareAnnotation","CircleAnnotation","PolylineAnnotation","PolygonAnnotation","CaretAnnotation","InkAnnotation","HighlightAnnotation","UnderlineAnnotation","SquigglyAnnotation","StrikeOutAnnotation","StampAnnotation","FileAttachmentAnnotation","Annotation","annotDict","fetchIfRefAsync","getRgbColor","color","defaultColor","rgbColor","ColorSpace","singletons","gray","getRgbItem","rgb","cmyk","getQuadPoints","quadPoints","quadPointsLists","jj","y","quadPointsList","minX","maxX","minY","maxY","mX","MX","mY","MY","quadPoint","MAX_VALUE","MIN_VALUE","getTransformMatrix","matrix","xRatio","yRatio","params","setTitle","setContents","setModificationDate","setFlags","setRectangle","setColor","setBorderStyle","setAppearance","setBorderAndBackgroundColors","_streams","appearance","annotationFlags","borderStyle","backgroundColor","borderColor","contentsObj","_contents","hasAppearance","modificationDate","hasOwnCanvas","kidIds","fieldName","_constructFieldName","_fallbackFontDict","_hasFlag","flag","_isViewable","_isPrintable","storageEntry","hidden","print","_parseStringHelper","dir","bidi","title","_title","contents","hasFlag","mk","AnnotationBorderStyle","dictType","setWidth","setStyle","setDashArray","array","setHorizontalCornerRadius","setVerticalCornerRadius","appearanceStates","normalAppearanceState","as","evaluator","isUsingOwnCanvas","appearanceDict","fallbackFontDict","strokeColor","fillColor","unshift","loopDict","width","style","dashArray","horizontalCornerRadius","verticalCornerRadius","maxWidth","maxHeight","forceStyle","allZeros","validNumber","radius","MarkupAnnotation","rawIRT","inReplyTo","rt","replyType","titleObj","creationDate","setCreationDate","hasPopup","richText","getRichTextAsHtml","_setDefaultAppearance","extra","blendMode","strokeAlpha","fillAlpha","pointsCallback","pointsArray","points","formDict","appearanceStreamDict","appearanceStream","gsDict","stateDict","annotationType","fieldValue","_decodeFormValue","defaultFieldValue","alternativeText","defaultAppearance","_defaultAppearance","defaultAppearanceData","parseDefaultAppearance","localResources","acroFormResources","appearanceResources","_fieldResources","mergedResources","fieldFlags","readOnly","hasFieldFlag","formValue","_hasText","_getAppearance","AP","originalTransform","newTransform","createCipherTransform","encryptString","_getSaveFieldResources","bufferOriginal","writeDict","bufferNew","isPassword","trim","lineCount","multiLine","defaultPadding","hPadding","totalHeight","totalWidth","_getFontData","fontSize","_computeFontSize","descent","vPadding","alignment","textAlignment","_getMultilineAppearance","encodedString","encodeString","comb","_getCombAppearance","renderedText","_renderText","_getTextWidth","text","charsToGlyphs","glyph","height","roundWithTwoDigits","LINE_FACTOR","textWidth","lines","cachedLines","line","encoded","glyphs","positions","getCharPositions","isTooBig","fsize","cache","_splitLine","numberOfLines","round","fontColor","createDefaultAppearance","shift","toFixed","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","maxLen","combWidth","renderedComb","padding","scale","lastSpacePosInStringStart","lastSpacePosInStringEnd","lastSpacePos","startChunk","currentWidth","glyphWidth","defaultValue","multiline","charLimit","editable","checkedAppearance","uncheckedAppearance","checkBox","radioButton","pushButton","isTooltipOnly","_processCheckBox","_processRadioButton","_processPushButton","exportValue","buttonValue","savedAppearance","_saveCheckbox","_saveRadioButton","parentBuffer","parentTransform","_getDefaultCheckedAppearance","FONT_RATIO","xShift","yShift","customAppearance","normalAppearance","asValue","yes","exportValues","otherYes","fieldParent","fieldParentValue","parseDestDictionary","destDict","resultObj","option","isOptionArray","displayValue","combo","multiSelect","numItems","multipleSelection","items","DEFAULT_ICON_SIZE","state","stateModel","parentItem","parentSubtype","parentType","rawParent","parentId","parentRect","parentFlags","lineCoordinates","from","interiorColor","borderWidth","borderAdjust","controlPointsDistance","tan","xMid","yMid","xOffset","yOffset","vertices","rawVertices","Infinity","vertex","inkLists","rawInkLists","inkList","dy","xEnd","file","FileSpec","DefaultAppearanceEvaluator","EvaluatorPreprocessor","operation","fn","savedStatesDepth","colorCmd","resizeRgbImage","src","dest","w1","h1","w2","h2","alpha01","COMPONENTS","newIndex","oldIndex","xScaled","Uint16Array","w1Scanline","py","numComps","getRgb","srcOffset","destOffset","getRgbBuffer","count","bits","getOutputLength","inputLength","isPassthrough","isDefaultDecode","decodeMap","bpc","fillRgb","originalWidth","originalHeight","actualHeight","comps","rgbBuf","numComponentColors","needsResizing","allColors","colorMap","destPos","rgbPos","usesZeroToOneRange","_cache","localColorSpaceCache","parsedColorSpace","csName","csRef","getCached","localColorSpace","getByRef","getByName","parseAsync","cs","pdfFunctionFactory","_parse","cachedColorSpace","PatternCS","colorSpaces","resourcesCS","mode","baseCS","whitePoint","blackPoint","gamma","CalGrayCS","CalRGBCS","alt","altCS","hiVal","IndexedCS","tintFn","AlternateCS","LabCS","DeviceGrayCS","DeviceRgbCS","DeviceCmykCS","tmpBuf","Float32Array","baseNumComps","baseBuf","scaled","tinted","highVal","outputDelta","lookupPos","q","DeviceCmykCSClosure","convertToRgb","srcScale","k","CalGrayCSClosure","A","AG","G","L","YW","val","XW","ZW","XB","YB","ZB","CalRGBCSClosure","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","matrixProduct","convertToFlat","sourceWhitePoint","LMS","convertToD65","D65X","D65Y","D65Z","sRGBTransferFunction","adjustToRange","decodeL","compensateBlackPoint","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","normalizeWhitePointToFlat","XYZ_In","LMS_Flat","normalizeWhitePointToD65","LMS_D65","B","AGR","GR","BGG","GG","CGB","GB","MXA","MXB","MXC","Y","MYA","MYB","MYC","Z","MZA","MZB","MZC","XYZ","XYZ_Black","XYZ_D65","SRGB","LabCSClosure","fn_g","high1","low2","high2","maxVal","Ls","bs","amin","amax","bmin","bmax","M","N","DefaultPartialEvaluatorOptions","freeze","PatternType","TILING","SHADING","TEXT_CHUNK_BATCH_SIZE","deferred","normalizeBlendMode","parsingArray","maybeBM","TimeSlotManager","TIME_SLOT_DURATION_MS","CHECK_TIME_EVERY","check","checked","endTime","parsingType3Font","_fetchBuiltInCMapBound","fetchBuiltInCMap","_pdfFunctionFactory","PDFFunctionFactory","newOptions","newEvaluator","processed","nodes","node","graphicStates","graphicState","bm","xObjects","xObject","xResources","cachedData","response","ok","statusText","cMapData","compressionType","fetchStandardFontData","standardFontNameToFileName","getFontNameToFileMap","buildFormXObject","xobj","optionalContent","groupOptions","parseMarkedContentProps","group","isolated","knockout","groupSubtype","colorSpace","parseColorSpace","backdrop","_sendImgData","imgData","cacheGlobally","transfers","buildPaintImageXObject","image","isInline","localImageCache","imageRef","h","imageMask","interpolate","bitStrideLength","imgArray","PDFImage","createMask","imageIsFromDecodeStream","DecodeStream","inverseDecode","cached","softMask","mask","SMALL_IMAGE_DIMENSIONS","imageObj","res","createImageData","shouldCache","addDependency","buildImage","addByteSize","addPageIndex","setData","byteSize","handleSMask","stateManager","smaskContent","smaskOptions","transferObj","isPDFFunction","transferFn","transferMap","tmp","handleTransferFunction","tr","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","pattern","patternDict","localTilingPatternCache","tilingOpList","patternResources","operatorListIR","getIR","tilingPatternIR","getTilingPatternIR","addDependencies","dependencies","fontArgs","fontRef","loadFont","translated","isType3Font","loadType3Data","type3Dependencies","TranslatedFont","loadedName","ErrorFont","handleText","isAddToPathSet","textRenderingMode","fillColorSpace","buildFontPaths","ensureStateFont","gState","localGStateCache","gStateRef","isSimpleGState","gStateObj","gStateKeys","errorFont","type3FontRefs","fontCapability","preEvaluatedFont","preEvaluateFont","fontRefIsRef","fontID","fontAliases","aliasFontRef","translateFont","translatedFont","fontType","stats","fontFile3","buildPath","parsingText","lastIndex","fnArray","opArgs","argsArray","parseShading","shading","localShadingPatternCache","Pattern","patternIR","handleColorN","patterns","patternName","pop","rawPattern","localTilingPattern","typeNum","_parseVisibilityExpression","nestingCounter","currentResult","MAX_NESTING","operator","raw","nestedResult","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","policy","EvalState","LocalImageCache","LocalColorSpaceCache","LocalGStateCache","LocalTilingPatternCache","xobjs","StateManager","preprocessor","timeSlotManager","closePendingRestoreOPS","argument","promiseBody","next","ready","stop","isValidName","localImage","resolveXObject","rejectXObject","globalImage","getData","combinedGlyphs","arrLength","arrItem","strokeColorSpace","shadingRes","patternId","localGStateObj","resolveGState","rejectGState","extGState","seenStyles","TextState","NormalizedUnicodes","textContent","styles","textContentItem","initialized","vertical","prevTransform","textAdvanceScale","spaceInFlowMin","spaceInFlowMax","trackingSpaceMin","negativeSpaceMax","hasEOL","TRACKING_SPACE_FACTOR","NEGATIVE_SPACE_FACTOR","SPACE_IN_FLOW_MIN_FACTOR","SPACE_IN_FLOW_MAX_FACTOR","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","getCurrentTextTransform","tsm","textHScale","textRise","isCharBBox","fontMatrix","glyphHeight","ctm","textMatrix","ensureTextContentItem","fallbackName","ascent","trm","hypot","scaleLineX","textLineMatrix","scaleCtmX","updateAdvanceScale","scaleFactor","runBidiTransform","textChunk","bidiResult","applyInverseRotation","compareWithLastPosition","currentTransform","posX","posY","shiftedX","shiftedY","lastPosX","lastPosY","advanceY","advanceX","textOrientation","sign","appendEOL","flushTextContentItem","addFakeSpaces","buildTextContentItem","extraSpacing","charSpacing","translateTextMatrix","vmetric","scaledDim","wordSpacing","glyphUnicode","transf","enqueueChunk","batch","enqueue","fontNameArg","fontSizeArg","leading","translateTextLineMatrix","carriageReturn","setTextLineMatrix","spaceFactor","elements","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","desiredSize","gStateFont","tag","mcid","extractDataStructures","baseDict","cidToGidBytes","toUnicodePromise","readToUnicode","toUnicode","composite","cidSystemInfo","registry","ordering","supplement","cidToGidMap","diffEncoding","defaultEncoding","isNonsymbolicFont","hasEncoding","buildToUnicode","builtToUnicode","readCidToGidMap","_simpleFontToUnicode","forceGlyphs","charcode","codeStr","fromCodePoint","hasIncludedToUnicodeMap","fallbackToUnicode","ToUnicodeMap","cMap","builtInCMap","IdentityCMap","ucs2CMapName","ucs2CMap","CMapFactory","useCMap","cid","ucs2","IdentityToUnicodeMap","firstChar","lastChar","cmapObj","cmap","getMap","token","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","defaultVMetrics","vmetrics","baseFontName","getBaseFontMetrics","buildCharCodeToWidth","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getSerifFonts","search","monospace","stdFontMap","getStdFontMap","lookupName","Metrics","getMetrics","glyphWidths","widthsByGlyphName","df","MurmurHash3_64","update","diffLength","diffBuf","diffEntry","uint8array","bufferLength","widthsBuf","compositeWidths","subWidthsBuf","hexdigest","getSymbolsFonts","isSimulatedFlags","xHeight","capHeight","standardFontName","getStandardFontName","newProperties","Font","baseFont","fontNameStr","baseFontStr","fontFile","length1","length2","length3","glyphScaleFactors","subtypeEntry","fixedPitch","scaleFactors","cidEncoding","fontChar","renderer","hasBuiltPath","getPathJs","accent","_evaluatorOptions","type3Loaded","sent","exportData","fallback","glyphCacheValues","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","isEmptyBBox","glyphStream","_removeType3ColorOperators","dummyOperatorList","_bbox","charBBox","gStateKey","stateStack","old","prev","f","opMap","getOPMap","numArgs","variableArgs","J","ri","gs","Q","cm","l","re","S","s","W","BT","ET","Tc","Tw","Tz","TL","Tf","Tr","Ts","Td","TD","Tm","Tj","TJ","d0","d1","CS","SC","SCN","sc","scn","RG","rg","sh","BI","ID","EI","Do","MP","BMC","BDC","EMC","BX","EX","BM","BD","true","fa","fal","fals","false","nu","nul","null","MAX_INVALID_PATH_OPS","parser","Parser","lexer","Lexer","nonProcessedArgs","_numInvalidPathOPS","getObj","opSpec","argsLength","preprocessCommand","BUILT_IN_CMAPS","MAX_MAP_RANGE","CMap","codespaceRanges","numCodespaceRanges","addCodespaceRange","low","high","mapCidRange","dstLow","mapBfRange","lastByte","nextCharCode","mapBfRangeToArray","mapOne","dst","contains","charCodeOf","readCharCode","out","nn","codespaceRange","kk","getCharCodeLength","isIdentityCMap","BinaryCMapReader","BinaryCMapReaderClosure","hexToInt","hexToStr","addHex","incHex","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","readByte","readNumber","last","readSigned","readHex","readHexNumber","stack","sp","bufferSize","readHexSigned","readString","len","extend","header","sequence","dataSize","ucs2DataSize","subitemsCount","CMapFactoryClosure","strToInt","expectString","expectInt","parseBfChar","parseBfRange","parseCidChar","parseCidRange","parseCodespaceRange","parseWMode","parseCMapName","parseCMap","previous","embeddedUseCMap","objLoop","extendCMap","createBuiltInCMap","useCodespaceRanges","parsedCMap","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","computeAdler32","bytesLength","allowStreams","imageCache","refill","buf1","buf2","tryShift","cipherTransform","makeInlineImage","makeStream","decryptString","findDefaultInlineStreamEnd","I","SPACE","LF","CR","NUL","startPos","maybeEIPos","followingBytes","knownCommands","nextObj","peekObj","endOffset","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","inlineStreamSkipEI","findASCII85DecodeInlineStreamEnd","TILDE","GT","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","dictLength","beginInlineImagePos","filterZero","imageStream","imageBytes","initialStreamPos","dictBytes","cacheEntry","createStream","_findStreamLength","SCAN_BLOCK_LENGTH","skipToNextLine","nextChar","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","makeFilter","filterArray","paramsArray","xrefStats","PredictorStream","FlateStream","earlyChange","LZWStream","JpegStream","JpxStream","Ascii85Stream","AsciiHexStream","CCITTFaxStream","RunLengthStream","Jbig2Stream","specialChars","toHexDigit","_hexStringNumWarn","currentChar","peekChar","getNumber","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","numParen","charBuffered","getName","previousCh","_hexStringWarn","MAX_HEX_STRING_NUM_WARN","getHexString","isFirstHex","firstDigit","secondDigit","comment","nextCh","knownCommandFound","possibleCommand","streamPos","getInt","linDict","allowZeroValue","getHints","hints","hintsLength","hint","obj1","obj2","obj3","endFirst","mainXRefEntriesOffset","input","readBlock","TILDA_CHAR","Z_LOWER_CHAR","eof","ensureBuffer","emptyBuffer","maybeMinBufferLength","_rawMinBufferLength","minBufferLength","requested","buffer2","bufEnd","streams","_onError","newLength","baseStreamsBuf","baseStreams","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","ccittFaxDecoder","CCITTFaxDecoder","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","readNextChar","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoline","byteAlign","columns","rows","eoblock","black","codingLine","refLine","codingPos","row","nextLine2D","inputBits","inputBuf","outputBits","rowsDone","code1","_lookBits","_eatBits","refPos","blackPixels","code2","code3","_getTwoDimCode","_addPixels","_getBlackCode","_getWhiteCode","_addPixelsNeg","gotEOL","a1","_findTableCode","table","limitValue","codeLenCodeMap","Int32Array","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","codeSize","codeBuf","getBits","getCode","codes","codeLen","codeVal","generateHuffmanTable","lengths","hdr","blockLen","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","what","repeatLength","dist","jbig2Image","Jbig2Image","globalsStream","globals","parseChunks","dataLength","Jbig2Error","ContextCache","getContexts","Int8Array","DecodingContext","ArithmeticDecoder","contextCache","decodeInteger","procedure","contexts","readBits","bit","readBit","decodeIAID","codeLength","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodeBitmapTemplate0","decodingContext","bitmap","contextLabel","pixel","row1","row2","OLD_PIXEL_MASK","decodeBitmap","mmr","templateIndex","prediction","at","Reader","decodeMMRBitmap","useskip","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","i0","j0","sltp","decodeRefinement","referenceBitmap","offsetX","offsetY","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceHeight","decodeSymbolDictionary","huffman","refinement","symbols","numberOfNewSymbols","numberOfExportedSymbols","huffmanTables","refinementTemplateIndex","refinementAt","huffmanInput","newSymbols","currentHeight","symbolCodeLength","tableB1","symbolWidths","getStandardTable","deltaHeight","tableDeltaHeight","firstSymbol","deltaWidth","tableDeltaWidth","numberOfInstances","decodeTextRegion","symbolId","rdx","rdy","symbol","bitmapSize","tableBitmapSize","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","xMax","bitmapWidth","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","defaultPixelValue","numberOfSymbolInstances","stripSize","inputSymbols","transposed","dsOffset","referenceCorner","combinationOperator","logStripSize","stripT","tableDeltaT","firstS","deltaT","deltaFirstS","tableFirstS","currentS","currentT","symbolIDTable","applyRefinement","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","deltaS","tableDeltaS","decodePatternDictionary","patternWidth","patternHeight","maxPatternIndex","collectiveWidth","patternBitmap","decodeHalftoneRegion","regionWidth","regionHeight","enableSkip","gridWidth","gridHeight","gridOffsetX","gridOffsetY","gridVectorX","gridVectorY","regionBitmap","numberOfPatterns","pattern0","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","patternRow","regionRow","regionX","regionY","readSegmentHeader","segmentHeader","segmentType","typeName","deferredNonRetain","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","pageAssociation","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","RegionSegmentInformationFieldLength","genericRegionMmr","searchPatternLength","searchPattern","headerEnd","readSegments","segments","segment","randomAccess","processSegment","visitor","atLength","dictionary","dictionaryFlags","huffmanDHSelector","huffmanDWSelector","bitmapSizeSelector","aggregationInstancesSelector","bitmapCodingContextUsed","bitmapCodingContextRetained","refinementTemplate","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","huffmanFS","huffmanDS","huffmanDT","huffmanRefinementDW","huffmanRefinementDH","huffmanRefinementDX","huffmanRefinementDY","huffmanRefinementSizeSelector","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","lossless","requiresBuffer","combinationOperatorOverride","callbackName","processSegments","parseJbig2Chunks","SimpleSegmentVisitor","parseJbig2","numberOfPages","currentPageInfo","bitPacked","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","arguments","onSymbolDictionary","currentSegment","referredSegments","getSymbolDictionaryHuffmanTables","customTables","referredSymbols","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","onImmediateHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","decodeTablesSegment","HuffmanLine","lineData","isOOB","rangeLow","prefixLength","rangeLength","prefixCode","isLowerRange","HuffmanTreeNode","children","isLeaf","buildTree","decodeNode","reader","htOffset","HuffmanTable","prefixCodesDone","assignPrefixCodes","rootNode","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","standardTablesCache","currentByte","numBits","getCustomHuffmanTable","currentIndex","numberOfSymbols","runCodesTable","repeatedLength","numberOfRepeats","customIndex","tableAggregateInstances","endOfBlock","lookForEOFLimit","QeTable","qe","nmps","nlps","switchFlag","bp","dataEnd","chigh","clow","byteIn","ct","cx_index","cx_mps","qeTableIcx","qeIcx","jpegOptions","decodeTransform","colorTransform","decodeArr","forceRGB","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","JpegImage","drawWidth","drawHeight","isSourcePDF","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","getBlockBufferOffset","col","blocksPerLine","decodeScan","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","nextByte","maybeScanLines","blockRow","precision","decodeHuffman","receive","receiveAndExtend","decodeBaseline","blockOffset","huffmanTableDC","diff","blockData","pred","rs","huffmanTableAC","z","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","successiveACState","successiveACNextValue","decodeACSuccessive","offsetZ","decodeMcu","mcu","mcuRow","mcuCol","blockCol","decodeBlock","componentsLength","decodeFn","fileMarker","mcuExpected","blocksPerColumn","mcusPerColumn","mcuToRead","findNextFileMarker","invalid","marker","quantizeAndInverse","blockBufferOffset","qt","quantizationTable","v0","v3","v4","v5","v6","v7","p0","p5","p6","p7","buildComponentData","computationBuffer","Int16Array","currentPos","maxPos","newPos","currentMarker","newMarker","_decodeTransform","_colorTransform","dnlScanLines","readDataBlock","prepareComponents","samplesPerLine","maxH","maxV","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","markerLoop","appData","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","extended","sofScanLines","componentIds","componentsCount","componentId","qId","quantizationId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","componentIndex","tableSpec","successiveApproximation","nextFileMarker","output","scaleX","scaleY","numComponents","_getLinearizedBlockData","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","_isColorConversionNeeded","_convertYccToRgb","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","rgbData","grayColor","jpxImage","JpxImage","tileCount","tiles","tileComponents","tileWidth","tileHeight","tileLeft","left","tileTop","top","srcPosition","dataPosition","imgRowSize","tileRowSize","rowBytes","JpxError","SubbandsGainLog2","LL","LH","HL","HH","failOnCorruptedImage","head","parseCodestream","headerSize","lbox","tbox","jumpDataLength","method","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","context","doNotRecover","sqcd","spqcds","spqcdSize","scalarExpounded","tile","mainHeader","siz","XTsiz","YTsiz","XTOsiz","YTOsiz","isSigned","XRsiz","YRsiz","calculateComponentDimensions","SIZ","calculateTileGrids","QCC","COC","qcd","noQuantization","guardBits","spqcd","epsilon","mu","SPqcds","QCD","currentTile","qcc","cqcc","cod","scod","entropyCoderWithCustomPrecincts","sopMarkerUsed","ephMarkerUsed","progressionOrder","layersCount","multipleComponentTransform","decompositionLevelsCount","xcb","ycb","blockStyle","selectiveArithmeticCodingBypass","resetContextProbabilities","terminationOnEachCodingPass","verticallyStripe","predictableTermination","segmentationSymbolUsed","reversibleTransformation","precinctsSizes","precinctsSize","PPx","PPy","unsupported","COD","partIndex","partsCount","initializeTile","buildPackets","parseTilePackets","transformComponents","numXtiles","numYtiles","tx0","ty0","tx1","ty1","tileComponent","tcx0","tcy0","tcx1","tcy1","getBlocksDimensions","codOrCoc","codingStyleParameters","xcb_","ycb_","buildPrecincts","resolution","dimensions","precinctWidth","precinctHeight","isZeroRes","resLevel","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","trx1","trx0","numprecinctshigh","try1","try0","numprecincts","precinctParameters","buildCodeblocks","subband","codeblockWidth","codeblockHeight","cbx0","tbx0","cby0","tby0","cbx1","tbx1","cby1","tby1","codeblocks","precincts","codeblock","precinctNumber","cbx","cby","tbx0_","tby0_","tbx1_","tby1_","pi","pj","subbandType","Lblock","precinct","cbxMin","cbxMax","cbyMin","cbyMax","codeblockParameters","numcodeblockwide","numcodeblockhigh","createPacket","layerNumber","precinctCodeblocks","subbands","LayerResolutionComponentPositionIterator","tileIndex","codingStyleDefaultParameters","maxDecompositionLevelsCount","nextPacket","JpxImage_nextPacket","resolutions","packet","ResolutionLayerComponentPositionIterator","ResolutionPositionComponentLayerIterator","maxNumPrecinctsInLevel","maxNumPrecincts","PositionComponentResolutionLayerIterator","getPrecinctSizesInImageScale","precinctsIterationSizes","px","maxNumHigh","maxNumWide","sizeInImageScale","getPrecinctIndexIfExist","ComponentPositionResolutionLayerIterator","pxIndex","pyIndex","precinctIterationSizes","minWidth","minHeight","startPrecinctRowIndex","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","widthCurrentResolution","heightCurrentResolution","blocksDimensions","bscale","resolutionSubbands","packetsIterator","skipNextBit","skipMarkerIfEqual","skipBytes","alignToByte","readCodingpasses","queue","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","valueReady","zeroBitPlanesTree","included","inclusionTree","InclusionTree","TagTree","nextLevel","incrementValue","zeroBitPlanes","codingpasses","codingpassesLog2","codedDataLength","packetItem","copyCoefficients","coefficients","levelWidth","levelHeight","delta","mb","reversible","right","bottom","blockWidth","blockHeight","bitModel","BitModel","currentCodingpassType","dataItem","encodedData","setDecoder","runSignificancePropagationPass","runMagnitudeRefinementPass","runCleanupPass","checkSegmentationSymbol","coefficentsSign","magnitude","coefficentsMagnitude","bitsDecoded","magnitudeCorrection","nb","interleave","levelOffset","transformTile","quantizationParameters","ReversibleTransform","IrreversibleTransform","subbandCoefficients","gainLog2","calculate","resultImages","transformedTiles","tile0","fourComponents","y0items","y1items","y2items","y3items","component0","qcdOrQcc","levelsLength","levels","currentLevel","stopValue","propagateValues","levelIndex","currentValue","BitModelClosure","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","neighborsSignificance","processingFlags","setNeighborsSignificance","column","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","contribution","sign0","sign1","significance1","decoded","horizontalContribution","width4","index0","indexNext","significance","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","Transform","u0","ll","iterate","j1","j2","hl_lh_hh","llWidth","llHeight","llItems","u","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","current","alpha","beta","K_","bitsCached","maxLzwDictionarySize","lzwState","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","lastCode","blockSize","decodedSizeDelta","estimatedDecodedSize","prevCode","decodedLength","currentBufferLength","hasPrev","predictor","readBlockTiff","readBlockPng","colors","pixBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","prevRow","up","upLeft","pa","pb","pc","repeatHeader","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","adjustWidths","adjustToUnicode","amend","amendFallbackToUnicode","Glyph","originalCharCode","operatorListId","isSpace","isInFont","matchesForCache","int16","writeSignedInt16","signedInt16","int32","string16","safeString16","isTrueTypeFile","isTrueTypeCollectionFile","isOpenTypeFile","isType1File","isCFFFile","getFontFileType","fileType","fileSubtype","applyStandardFontGlyphMap","glyphMap","buildToFontChar","toFontChar","convertCidString","shouldThrow","adjustMapping","hasGlyph","newGlyphZeroId","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","fontCharCode","getRanges","numGlyphs","fontGetRangesSort","codeIndices","createCmapTable","numTables","bmpLength","trailingRangesCount","segCount","searchParams","OpenTypeFileBuilder","getSearchParams","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","rangeShift","format31012","header31012","validateOS2Table","os2","selection","usWinAscent","createOS2Table","charstrings","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","ascentScaled","typoAscent","typoDescent","winAscent","winDescent","createPostTable","createPostscriptName","createNameTable","proto","strings","stringsUnicode","strBufUnicode","names","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","psName","mimetype","missingFile","_charsCache","_glyphCache","baseName","serifFonts","namePart","fallbackToSystemFont","cff","CFFFont","Type1Font","convert","checkAndRepair","isOpenType","seacMap","FontRendererFactory","extraProperties","exportDataProperties","nonStdFontMap","getNonStdFontMap","isMappedToStandardFont","fontBasicMetricsMap","getFontBasicMetrics","bold","italic","isNarrow","remeasure","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","unicodeCharCode","VALID_TABLES","readTables","tables","hhea","hmtx","maxp","post","readTableEntry","checksum","previousPosition","readOpenTypeHeader","ttf","searchRange","entrySelector","readTrueTypeCollectionHeader","ttc","ttcTag","majorVersion","minorVersion","numFonts","offsetTable","dsigTag","dsigLength","dsigOffset","readTrueTypeCollectionData","fontNameParts","fallbackData","potentialHeader","potentialTables","readNameTable","nameEntry","part","readCmapTable","platformId","encodingId","mappings","hasShortCmap","potentialTable","canBreak","useTable","correctlySorted","nextBytes","nextPlatformId","format","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","entryCount","idDelta","idRangePos","segIndex","offsetsCount","offsetIndex","rangeOffset","offsets","sanitizeMetrics","headTable","dupFirstEntry","caretOffset","numOfMetrics","macStyle","numOfSidebearings","numMissing","sanitizeGlyph","sourceStart","sourceEnd","destStart","hintsValid","glyphProfile","sizeOfInstructions","glyf","contoursCount","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","xLength","yLength","xyLength","repeat","glyphDataLength","sanitizeHead","locaLength","indexToLocFormat","numGlyphsPlusOne","sanitizeGlyphLocations","loca","isGlyphLocationsLong","maxSizeOfInstructions","itemSize","itemDecode","itemEncode","fontItemDecodeLong","fontItemEncodeLong","fontItemDecode","fontItemEncode","numGlyphsOut","locaDataSize","locaData","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","missingGlyphs","writeOffset","simpleGlyph","firstEntryLength","readPostScriptTable","propertiesObj","maxpNumGlyphs","valid","glyphNameIndexes","customNames","stringLength","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","platform","language","record","nameIndex","TTOpsStackDeltas","sanitizeTTProgram","ttContext","funcId","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","inFDEF","ifLevel","inELSE","op","functionsUsed","functionsStackDeltas","newStackLength","functionsDefined","stackTop","stackDelta","NaN","foldTTTable","checkInvalidFunctions","maxFunctionDefs","sanitizeTTPrograms","fpgm","prep","cvt","cvtData","ttcData","cffFile","isTrueType","isComposite","GlyfTable","glyfTable","locaTable","isLocationLong","write","advanceWidth","lsb","maxZones","glyphsInfo","metricsOverride","isCidToGidMapEmpty","cmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","forcePostTable","unicodeOrCharCode","glyphZeroId","newMapping","CFFParser","duplicateFirstGlyph","compiler","CFFCompiler","compile","namePrototype","builder","tableTag","addTable","toArray","mapping","getGlyphMapping","newCharCodeToGlyphId","hasGlyphId","getCharCodes","charCodes","createCharCode","seacs","charset","getCharset","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","baseFontCharCode","accentFontCharCode","fontFieldsHmtx","cffWidths","charstring","spaceWidth","possibleSpaceReplacements","_charToGlyph","widthCode","buffers","currentBuf","hasCurrentBufErrors","getCharCode","charCodeLength","MAX_SUBR_NESTING","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","CFFParserClosure","CharstringValidationData","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","stack_div","seacAnalysisEnabled","CFF","parseHeader","parseIndex","endPos","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","parseDict","topDict","createDict","CFFTopDict","parseNameIndex","parseStringIndex","parsePrivateDict","isCIDFont","hasName","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","fdArray","parseCharsets","fdSelect","parseFDSelect","parseEncoding","charStringsAndSeacs","parseCharStrings","charStrings","localSubrIndex","privateDict","subrsIndex","hdrSize","offSize","CFFHeader","parseOperand","parseFloatOperand","operands","cffIndex","CFFIndex","offsetSize","offsetStart","offsetEnd","CFFStrings","Type","cffDict","pair","setByKey","parseCharString","callDepth","stackSize","validationCommand","subrNumber","hasVStems","firstStackClearing","localSubrToUse","privateDictToUse","fdIndex","getFDIndex","nominalWidth","emptyPrivateDictionary","parentDict","CFFPrivateDict","privateOffset","removeByName","privateDictEnd","dictData","subrsOffset","relativeOffset","CFFCharset","CFFCharsetPredefinedTypes","ISO_ADOBE","ISOAdobeCharset","EXPERT","ExpertCharset","EXPERT_SUBSET","ExpertSubsetCharset","predefined","readSupplement","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","CFFEncoding","CFFFDSelect","glyphZero","getSID","objects","CFFDict","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","valueLength","setByName","createTables","layout","CFFTopDictClosure","CFFPrivateDictClosure","CFFOffsetTracker","isTracking","track","location","setEntryLocation","dataOffset","offset1","offset2","offset3","offset4","CFFCompiler_add","compileHeader","compileNameIndex","xuid","compiled","compileTopDicts","topDictTracker","trackers","compileStringIndex","compileIndex","compileEncoding","compileCharset","compileCharStrings","compileFDSelect","fontDictTrackers","compilePrivateDicts","encodeNumber","encodeInteger","encodeFloat","EncodeFloatRegExp","nibbles","sanitizedName","dicts","removeCidKeys","fontDictTracker","fontDictData","compileDict","privateDictTracker","privateDictData","outputLength","subrs","offsetTracker","compileGlobalSubrIndex","writeByteArray","charStringsIndex","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileTypedArray","lastFD","currentFD","numRanges","lastOffset","Courier","ZapfDingbats","ArialNarrow","ArialBlack","CourierNew","CourierNewPSMT","TimesNewRoman","TimesNewRomanPS","TimesNewRomanPSMT","Calibri","CenturyGothic","ComicSansMS","LucidaConsole","NuptialScript","SegoeUISymbol","Wingdings","Albertus","Aldus","Alexandria","Algerian","Antiqua","Apex","Arno","Aster","Aurora","Baskerville","Bell","Bembo","Benguiat","Bodoni","Bookman","Calisto","Calvert","Capitals","Cambria","Cartier","Caslon","Catull","Centaur","Chaparral","Cheltenham","Clarendon","Clearface","Cochin","Colonna","Constantia","Corona","Ecotype","Egyptienne","Elephant","Excelsior","Fairfield","Folkard","Footlight","FreeSerif","Garamond","Gentium","Georgia","Gloucester","Granjon","Heather","Hercules","Hiroshige","Imprint","Janson","Joanna","Korinna","Lexicon","LiberationSerif","Literaturnaya","Lucida","Melior","Memphis","Miller","Minion","Modern","Palatino","Perpetua","Plantin","Playbill","Renault","Requiem","Rockwell","Roman","Sabon","Scala","Seagull","Sistina","Souvenir","STIX","Sylfaen","Times","Trajan","Utopia","Versailles","Wanted","Weiss","Windsor","XITS","Dingbats","_createBuiltInEncoding","charsets","getUint32","getInt16","getInt8","getFloat214","getSubroutineBias","numSubrs","parseCmap","idOffset","parseCff","gsubrs","isCFFCIDFont","parseGlyfTable","lookupCmap","compileGlyf","cmds","quadraticCurveTo","xa","ya","numberOfContours","arg1","arg2","scale01","scale10","subglyph","endPtsOfContours","instructionLength","numberOfPoints","startPoint","contour","compileCharString","charStringCode","bezierCurveTo","stems","stackClean","xb","yb","subrCode","subrsBias","achar","bchar","glyphNameMap","gsubrsBias","NOOP","CompiledFont","compiledGlyphs","compiledCharCodeToGlyphId","compileGlyph","compileGlyphImpl","TrueTypeCompiled","Type2Compiled","cffInfo","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","H","P","R","T","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","o","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","Idieresis","eacute","abreve","uhungarumlaut","ecaron","Ydieresis","divide","Yacute","Acircumflex","aacute","Ucircumflex","yacute","scommaaccent","ecircumflex","Uring","Udieresis","aogonek","Uacute","uogonek","Edieresis","Dcroat","commaaccent","copyright","Emacron","ccaron","aring","Ncommaaccent","lacute","agrave","Tcommaaccent","Cacute","atilde","Edotaccent","scaron","scedilla","iacute","lozenge","Rcaron","Gcommaaccent","ucircumflex","acircumflex","Amacron","rcaron","ccedilla","Zdotaccent","Thorn","Omacron","Racute","Sacute","dcaron","Umacron","uring","threesuperior","Ograve","Agrave","Abreve","multiply","uacute","Tcaron","partialdiff","ydieresis","Nacute","icircumflex","Ecircumflex","adieresis","edieresis","cacute","nacute","umacron","Ncaron","Iacute","plusminus","brokenbar","registered","Gbreve","Idotaccent","summation","Egrave","racute","omacron","Zacute","Zcaron","greaterequal","Eth","Ccedilla","lcommaaccent","tcaron","eogonek","Uogonek","Aacute","Adieresis","egrave","zacute","iogonek","Oacute","oacute","amacron","sacute","idieresis","Ocircumflex","Ugrave","Delta","thorn","twosuperior","Odieresis","igrave","ohungarumlaut","Eogonek","dcroat","threequarters","Scedilla","lcaron","Kcommaaccent","Lacute","trademark","edotaccent","Igrave","Imacron","Lcaron","onehalf","lessequal","ocircumflex","ntilde","Uhungarumlaut","Eacute","emacron","gbreve","onequarter","Scaron","Scommaaccent","Ohungarumlaut","degree","ograve","Ccaron","ugrave","radical","Dcaron","rcommaaccent","Ntilde","otilde","Rcommaaccent","Lcommaaccent","Atilde","Aogonek","Aring","Otilde","zdotaccent","Ecaron","Iogonek","kcommaaccent","minus","Icircumflex","ncaron","tcommaaccent","logicalnot","odieresis","udieresis","notequal","gcommaaccent","eth","zcaron","ncommaaccent","onesuperior","imacron","Euro","universal","existential","suchthat","asteriskmath","congruent","Alpha","Beta","Chi","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","therefore","perpendicular","radicalex","chi","phi","eta","iota","phi1","kappa","lambda","omicron","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","similar","Upsilon1","minute","infinity","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","proportional","equivalence","approxequal","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","notelement","gradient","registerserif","copyrightserif","trademarkserif","product","dotmath","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","angleleft","registersans","copyrightsans","trademarksans","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt","apple","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191","ON_CURVE_POINT","X_SHORT_VECTOR","Y_SHORT_VECTOR","REPEAT_FLAG","X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR","Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR","OVERLAP_SIMPLE","ARG_1_AND_2_ARE_WORDS","ARGS_ARE_XY_VALUES","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_INSTRUCTIONS","DataView","byteOffset","getSize","totalSize","ArrayBuffer","setUint32","setUint16","locaIndex","simple","composites","GlyphHeader","CompositeGlyph","SimpleGlyph","spos","factor","xMiddle","setInt16","Contour","xCoordinates","yCoordinates","contours","instructions","endPt","numberOfPt","getUint8","allXCoordinates","pointFlags","endPtsOfContoursIndex","lastCoordinate","lastX","lastY","setUint8","argument1","argument2","writeInt16","writeInt32","writeData","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","sfnt","entriesCount","entrySize","maxPower2","tablesNames","tableName","tableOffsets","paddedLength","quad","findBlock","streamBytes","startIndex","streamBytesLength","getHeaderBlock","suggestedLength","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","getEexecBlock","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","headerBlockParser","Type1Parser","extractFontHeader","eexecBlock","eexecBlockParser","extractFontProgram","type2Charstrings","getType2Charstrings","getType2Subrs","wrap","getSeacs","charstringsLen","type1Charstrings","type1Subrs","type2Subrs","charsetArray","privateData","subrIndex","HINTING_ENABLED","Type1CharString","Type1CharStringClosure","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","flexing","wx","sbx","executeCommand","asb","sby","num2","num1","flexArgs","howManyArgs","command","keepStack","stackLength","Type1ParserClosure","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","isHexDigit","decrypt","discardNumber","c1","c2","decrypted","decryptAscii","digit1","digit2","isSpecial","encrypted","isBinary","readNumberArray","getToken","readInt","readBoolean","prevChar","readCharStrings","lenIV","program","blueArray","charString","charStringObject","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","RadialAxialShading","MeshShading","DummyShading","BaseShading","SMALL_NUMBER","coordsArr","shadingType","t0","domainArr","extendStart","extendEnd","extendArr","r1","r2","distance","fnObj","createFromArray","NUMBER_OF_SAMPLES","colorStops","ratio","cssColor","background","r0","MeshStreamReader","tmpCompsBuf","csNumComps","tmpCsCompsBuf","colorFn","hasData","align","readFlag","bitsPerFlag","readCoordinate","bitsPerCoordinate","yi","readComponents","ci","getB","getBClosure","buildB","lut","t_","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","coords","figures","decodeContext","patchMesh","_decodeType4Shading","verticesPerRow","_decodeType5Shading","_decodeType6Shading","_decodeType7Shading","_updateBounds","_buildFigureFromPatch","_packData","operators","ps","verticesLeft","coord","tmp1","tmp2","tmp3","tmp4","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","splitYBy","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","coordsPacked","xy","colorsPacked","xstep","ystep","paintType","tilingType","cachedFunction","parsedFunction","PDFFunction","parseArray","fnRef","localFunction","_localFunctionCache","LocalFunctionCache","toNumberArray","getSampleArray","outputSize","bps","sampleMul","strBytes","strIdx","constructSampled","constructInterpolated","constructStiched","constructPostScript","toMultiArray","xmin","xmax","ymin","ymax","domain","inputSize","encode","samples","constructSampledFn","cubeVertices","cubeN","Float64Array","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","constructInterpolatedFn","fnRefs","fns","constructStichedFn","constructStichedFromIRClip","dmin","dmax","rmin","rmax","PostScriptLexer","PostScriptParser","PostScriptCompiler","numOutputs","numInputs","PostScriptEvaluator","MAX_CACHE_SIZE","cache_available","constructPostScriptFn","cachedValue","execute","stackIndex","bound","fnDict","PostScriptStack","MAX_STACK_SIZE","initialStack","call","copy","roll","counter","atan","cos","LN10","sin","PostScriptCompilerClosure","AstNode","visit","AstArgument","visitArgument","AstLiteral","visitLiteral","AstBinaryOperation","visitBinaryOperation","AstMin","visitMin","AstVariable","visitVariable","AstVariableDefinition","variable","visitVariableDefinition","ExpressionBuilderVisitor","parts","literal","definition","buildAddOperation","buildMulOperation","buildSubOperation","buildMinOperation","lastRegister","ast1","ast2","tmpVar","instruction","statementBuilder","expr","nextToken","accept","expect","PostScriptTokenTypes","LBRACE","parseBlock","RBRACE","NUMBER","OPERATOR","parseCondition","conditionLocation","IF","jumpLocation","endOfTrue","IFELSE","PostScriptToken","opCache","getOperator","opValue","BaseLocalCache","_onlyRefs","onlyRefs","_nameRefMap","_imageMap","_imageCache","GlobalImageCache","NUM_PAGES_THRESHOLD","MIN_IMAGES_TO_CACHE","MAX_BYTE_SIZE","_refCache","_byteSize","imageData","_cacheLimitReached","pageIndexSet","onlyData","baseTypes","arabicTypes","isOdd","isEven","findUnequal","setValues","reverseValues","temp","createBidiText","isLTR","startLevel","strLength","numBidi","charType","sor","eor","lastType","before","after","highestLevel","lowestOddLevel","SEED","MASK_HIGH","MASK_LOW","seed","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hex1","hex2","addState","parentState","checkFn","iterateFn","processFn","handlePaintSolidColorImageMask","iFirstSave","iFirstPIMXO","InitialState","iterateInlineImageGroup","iCurr","foundInlineImageGroup","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","kind","iterateImageMaskGroup","foundImageMaskGroup","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","isSameImage","iTransform","transformArgs","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iPIMXO","images","maskParams","iterateImageGroup","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iterateShowTextGroup","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","NullOptimizer","_optimize","QueueOptimizer","lastProcessed","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","_streamSink","optimizer","_totalLength","_resolved","_transfers","decodeAndClamp","addend","coefficient","resizeImageMask","isMask","matte","needsDecode","decodeCoefficients","decodeAddends","isIndexed","maskDict","smaskData","maskData","computedLength","haveFullData","decodeBuffer","getComponents","bufferPos","rowComps","loop1End","loop2End","remainingBits","fillOpacity","rgbaBuf","alphaBuf","sw","fillGrayBuffer","opacity","imageOffset","maskOffset","undoPreblend","matteRgb","matteR","matteG","matteB","forceRGBA","getImageBytes","newArray","imageLength","maybeUndoPreblend","fetchDestination","_catDict","getCatalogObj","toplevelPagesDict","_actualNumPages","metadata","streamRef","encryptMetadata","MetadataParser","markInfo","_readMarkInfo","Marked","UserProperties","Suspects","_readStructTreeRoot","root","StructTreeRoot","init","pagesObj","documentOutline","_readDocumentOutline","blackColor","outlineDict","outlineItem","unsafeUrl","permissions","_readPermissions","optionalContentConfig","defaultConfig","groupsData","groupRefs","groupRef","_readOptionalContentConfig","contentGroupRefs","parseOnOff","onParsed","parseOrder","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","MAX_NESTED_LEVELS","nestedName","creator","baseState","off","_pagesCount","destinations","_readDests","dests","NameTree","getAll","getDestination","allDest","pageLabels","_readPageLabels","prefix","numberTree","NumberTree","nums","currentLabel","labelDict","st","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","charBuf","pageLayout","pageMode","viewerPreferences","prefs","prefValue","openAction","attachments","nameTree","fs","_collectJavaScript","appendIfJavaScriptDict","jsDict","translatedFonts","nodesToVisit","visitedNodes","pagesRef","currentPageIndex","currentNode","posInKids","addPageDict","addPageError","queueItem","kidObj","getPageIndex","cachedPageIndex","pagesBeforeRef","kidRef","parentRef","kidPromises","actionType","actionName","include","resetForm","urlDict","remoteDest","JSON","stringify","namedAction","jsAction","jsURL","NameOrNumberTree","_type","kidsOrEntries","loopCount","MAX_LEVELS","limits","currentKey","pickPlatformItem","description","contentAvailable","_filename","contentRef","fileObj","_repair","SimpleXMLParser","lowerCaseName","xmlDocument","parseFromString","_metadataMap","_data","d2","d3","_getSequence","nodeName","childNodes","_parseArray","hasChildNodes","seqNode","rdf","documentElement","firstChild","nextSibling","desc","parsedData","rawData","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespaceString","XMLParserBase","_resolveEntities","onResolveEntity","_parseContent","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","onEndElement","onPi","onComment","onCdata","q2","complexDoctype","doctypeContent","onDoctype","isClosed","onBeginElement","onText","SimpleDOMNode","nodeValue","parentNode","child","searchNode","paths","siblingPos","dump","attribute","hasAttributes","_currentFragment","_stack","_errorCode","_hasAttributes","_lowerCaseName","lastElement","MAX_DEPTH","StructElementType","PAGE_CONTENT","STREAM_CONTENT","OBJECT","ELEMENT","rootDict","roleMap","readRoleMap","roleMapDict","StructElementNode","parseKids","role","nameObj","pageObjId","objRef","parseKid","StructElement","kidDict","refObjId","parentTree","parentArray","addNode","addTopLevelNode","nodeToSerializable","kidElement","mayHaveChildren","addChildren","rawValue","refSet","_walk","nodesToRevisit","pendingRequests","foundMissingData","writeValue","writeStream","string","writeArray","numberToString","roundedValue","writeInt","writeString","computeMD5","filesize","time","md5Buffer","md5BufferLen","writeXFADataForAcroform","xml","updateXFA","oldXfa","newXfa","refForXrefTable","baseOffset","xrefTableData","indexes","maxOffset","md5","sizes","structSize","tableLength","bufferLen","footer","objOffset","ARCFourCipher","keyLength","encryptBlock","decryptBlock","calculateMD5Closure","h0","h3","padded","rotateArg","Word64","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","not","lowAdd","highAdd","copyTo","calculateSHA256","calculateSHA256Closure","rotr","maj","sigmaPrime","littleSigma","littleSigmaPrime","h4","h5","h6","h7","calculateSHA512","calculateSHA512Closure","mode384","calculateSHA384","NullCipher","AESBaseCipher","_s","_inv_s","_mix","_mixCol","bufferPosition","_expandKey","cipherKey","_decrypt","_keySize","_cyclesOfRepetition","s0","s1","s3","_encrypt","_decryptBlock2","finalize","sourceLength","iv","plain","_key","lastBlock","psLen","cipher","AES128Cipher","_rcon","rcon","t3","t4","AES256Cipher","PDF17","checkOwnerPassword","ownerValidationSalt","userBytes","ownerPassword","hashData","checkUserPassword","userValidationSalt","userPassword","getOwnerKey","ownerKeySalt","ownerEncryption","getUserKey","userKeySalt","userEncryption","PDF20","PDF20Closure","calculatePDF20Hash","combinedLength","combinedArray","remainder","concatBytes","CipherTransform","stringCipherConstructor","streamCipherConstructor","StringCipherConstructor","StreamCipherConstructor","DecryptStream","cipherTransformDecryptStream","strLen","pad","crypto","getRandomValues","random","CipherTransformFactory","CipherTransformFactoryClosure","defaultPasswordBytes","createEncryptionKey20","revision","uBytes","perms","passwordLength","pdfAlgorithm","prepareKeyData","fileId","hashDataSize","keyLengthInBytes","encryptionKey","checkData","derivedKey","decodeUserPassword","identityName","buildObjectKey","isAes","buildCipherConstructor","cf","cryptFilter","cfm","cipherTransformFactoryBuildCipherConstructorNone","cipherTransformFactoryBuildCipherConstructorV2","cipherTransformFactoryBuildCipherConstructorAESV2","cipherTransformFactoryBuildCipherConstructorAESV3","algorithm","cfDict","streamCryptoName","handlerDict","fileIdBytes","passwordBytes","decodedPassword","stmf","strf","eff","cipherConstructor","buildCipherCipherConstructor","nextChunk","hasMoreData","XFAParser","_createDocument","binder","Binder","form","dataHandler","DataHandler","$globalData","_createPagesHelper","iterator","$toPages","nextIteration","setTimeout","_createPages","pages","dims","fontFinder","FontFinder","typeface","usedTypefaces","stripQuotes","storage","serialize","rc","XhtmlNamespace","$nodeName","newRoot","body","$appendChild","$toHTML","success","html","class","attr","$text","$acceptWhitespace","$addHTML","$childrenToHTML","$clean","$cleanPage","$cleanup","$clone","$consumed","$content","$data","$dump","$extra","$finalize","$flushHTML","$getAttributeIt","$getAttributes","$getAvailableSpace","$getChildrenByClass","$getChildrenByName","$getChildrenByNameIt","$getDataValue","$getExtra","$getRealChildrenByNameIt","$getChildren","$getContainedChildren","$getNextPage","$getSubformParent","$getParent","$getTemplateRoot","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$toString","$toStyle","$uid","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","uid","NS_DATASETS","NamespaceIds","XFAObject","nsId","hasChildren","XFAObjectArray","para","paraStack","clean","getPrototypeOf","getOwnPropertyNames","dumped","HTMLResult","EMPTY","availableSpace","failingNode","generator","protoAttributes","allAttr","setAttr","ancestors","use","usehref","somExpression","endsWith","protoProto","newAncestors","unsetAttrName","protoValue","$symbol","getOwnPropertySymbols","clonedChild","allTransparent","XFAAttribute","XmlObject","dataNode","tagName","utf8TagName","utf8Name","skipConsumed","xhtml","hasNS","$ns","$name","ContentObject","OptionObject","getKeyword","StringObject","IntegerObject","validator","getInteger","Option01","Option10","dimConverters","pt","mm","in","measurementPattern","getFloat","getStringOption","getMeasurement","def","valueStr","unit","conv","getRatio","den","getRelevant","excluded","viewname","getColor","getBBox","FAILURE","breakNode","isBreak","$buildXFAObject","ns","pdf","sourceSet","xdc","xdp","xfdf","xmpmeta","namePattern","indexPattern","dot","dotDot","dotHash","dotBracket","dotParen","shortcuts","host","dataWindow","event","somCache","WeakMap","parseExpression","dotDotAllowed","noExpr","cacheName","formCalc","container","useCache","isQualified","isFinite","acc","createNodes","createDataNode","createText","Text","emptyMerge","_isConsumeData","_mergeMode","_isMatchTemplate","_bindElement","_bindValue","formNode","picture","Field","ui","choiceList","open","_findDataByNameToConsume","isValue","global","_setProperties","target","connection","setProperty","targetNodes","targetNode","targetParent","SetProperty","BindItems","attrs","Reflect","construct","_bindItems","bindItems","Items","labelRef","valueRef","labelNodes","labelNode","valueNodes","valueNode","label","_bindOccurrences","matches","baseClone","occur","_createOccurrences","initial","currentNumber","nodeClone","_getOccurInfo","_setAndBind","uselessNodes","mergeMode","dataChildren","dataChild","TEMPLATE_NS_ID","SVG_NS","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","MAX_EMPTY_PAGES","DEFAULT_TAB_INDEX","HEADING_PATTERN","MIMES","IMAGES_HEADERS","getBorderDims","border","borderExtra","insets","hasMargin","margin","topInset","rightInset","bottomInset","leftInset","_setValue","templateNode","Value","getContainedChildren","SubformSet","setTabIndex","traversal","applyAssist","assist","assistTitle","ariaRole","ariaLevel","ariaLabel","speak","toolTip","valueToHtml","setFirstUnsplittable","firstUnsplittable","noLayoutFailure","unsetFirstUnsplittable","handleBreak","targetType","currentPageArea","currentContentArea","PageArea","startNew","ContentArea","pageArea","nextPageArea","contentAreas","contentArea","indexForCurrent","indexForTarget","handleOverflow","extraNode","saved","savedMethod","AppearanceFilter","Arc","circular","hand","startAngle","sweepAngle","edge","Edge","edgeStyle","presence","strokeWidth","measureToString","thickness","arc","xmlns","overflow","cx","cy","rx","ry","largeArc","vectorEffect","preserveAspectRatio","svg","display","Area","colSpan","relevant","extras","area","draw","exObject","exclGroup","subform","subformSet","toStyle","isPrintOnly","xfaName","Assist","Barcode","charEncoding","dataColumnCount","dataPrep","dataRowCount","endChar","errorCorrectionLevel","moduleHeight","moduleWidth","printCheckDigit","rowColumnRatio","startChar","textLocation","truncate","upsMode","wideNarrowRatio","Bind","Bookend","leader","BooleanElement","Border","break","corner","edges","defaultEdge","edgeStyles","cornerStyles","borderRadius","Break","afterTarget","beforeTarget","bookendLeader","bookendTrailer","overflowLeader","overflowTarget","overflowTrailer","BreakAfter","script","BreakBefore","Button","highlight","grandpa","htmlButton","activity","fixURL","Calculate","Caption","placement","reserve","layoutNode","savedReserve","setPara","Certificate","Certificates","credentialServerPolicy","urlPolicy","encryption","issuers","keyUsage","oids","signing","subjectDNs","CheckButton","mark","shape","className","groupId","exportedValue","fieldId","dataId","ExclGroup","xfaOn","xfaOff","ChoiceList","commitOn","textEntry","optionStyle","displayedIndex","saveIndex","displayed","selected","selectAttributes","multiple","Color","cSpace","Comb","numberOfCells","Connect","usage","classNames","Corner","inverted","DateElement","DateTime","DateTimeEdit","hScrollPolicy","picker","Decimal","fracDigits","leadDigits","DefaultUi","Desc","boolean","dateTime","decimal","exData","float","integer","DigestMethod","DigestMethods","digestMethod","Draw","anchorType","hAlign","locale","maxW","minH","minW","caption","keep","fixDimensions","savedW","savedH","isBroken","checkDimensions","setMinMaxDimensions","computeBbox","createWrapper","cap","linecap","Encoding","Encodings","Encrypt","certificate","EncryptData","manifest","Encryption","EncryptionMethod","EncryptionMethods","encryptionMethod","Event","listen","encryptData","signData","submit","ExData","contentType","maxLength","rid","transferEncoding","ExObject","archive","classId","codeBase","codeType","access","accessKey","connect","attempt","numberInLine","_isSplittable","flushHTML","addHTML","getAvailableSpace","setAccess","prevHeight","isSplittable","columnWidths","currentColumn","layoutClass","isLrTb","maxRun","marginH","marginV","Execute","executeType","runAt","Extras","Ui","TextEdit","textEdit","checkButton","borderDims","uiW","uiH","lineNoGap","tabindex","aElement","button","imageEdit","htmlValue","maxChars","numericEdit","captionHeight","inputHeight","Fill","linear","radial","solid","stipple","ggrandpa","propName","altPropName","Rectangle","Filter","addRevocationInfo","appearanceFilter","certificates","digestMethods","encryptionMethods","lockDocument","mdp","reasons","timeStamp","Float","baselineShift","fontHorizontalScale","fontVerticalScale","kerningMode","letterSpacing","lineThrough","lineThroughPeriod","overline","overlinePeriod","posture","underline","underlinePeriod","backgroundClip","verticalAlign","fontKerning","textDecoration","textDecorationStyle","fontStyle","setFontFamily","Format","Handler","Hyphenation","excludeAllCaps","excludeInitialCap","hyphenate","pushCharacterCount","remainCharacterCount","wordCharacterCount","Image","aspect","atob","blob","Blob","objectFit","createObjectURL","ImageEdit","Integer","Issuers","Keep","intact","KeyUsage","crlSign","dataEncipherment","decipherOnly","digitalSignature","encipherOnly","keyAgreement","keyCertSign","keyEncipherment","nonRepudiation","Line","slope","Linear","startColor","endColor","LockDocument","Manifest","Margin","Mdp","signatureType","Medium","imagingBBox","long","orientation","short","stock","trayIn","trayOut","Message","NumericEdit","Occur","originalMin","PageSet","Template","Oid","Oids","oid","Overflow","addLeader","addTrailer","blankOrNotBlank","initialNumber","numbered","oddOrEven","pagePosition","medium","numberOfUse","relation","duplexImposition","pageSet","pageSetIndex","pageNumber","parity","Para","marginLeft","marginRight","orphans","preserve","radixOffset","spaceAbove","spaceBelow","tabDefault","tabStops","textIndent","vAlign","widows","hyphenation","paddingLeft","paddingight","paddingTop","paddingBottom","fixTextIndent","tabSize","hyphenatation","PasswordEdit","passwordChar","Picture","Proto","barcode","bookend","breakAfter","breakBefore","dateTimeEdit","defaultUi","passwordEdit","subjectDN","traverse","variables","Radial","Reason","Reasons","cornerStyle","RefElement","binding","SignData","Signature","Signing","Solid","Speak","disable","priority","Stipple","rate","bgColor","Subform","allowMacro","restoreState","scope","afterBreakAfter","savedNoLayoutFailure","overflowExtra","overflowNode","SubjectDN","delimiter","kv","SubjectDNs","Submit","embedPDF","textEncoding","xdpContent","baseProfile","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","targetPageArea","hasSomething","hasSomethingCounter","htmlContentAreas","findIndex","allowRichText","vScrollPolicy","Time","TimeStamp","server","ToolTip","Traversal","Traverse","Validate","formatTest","nullTest","scriptTest","valueName","Variables","TemplateNamespace","createLine","htmlFromFailing","getTransformedBBox","centerX","centerY","ERROR","converters","transformOrigin","visibility","textAlign","alignSelf","layoutText","xfaFont","measure","TextMeasure","addString","compute","newStyle","wrapper","insetsH","insetsW","indent","getCurrentPara","nodeStyle","valueStyle","flexDirection","justifyContent","paraStyle","regular","pdfFont","selectFont","defaultFont","addPdfFont","bolditalic","myriad","getDefault","mustWarn","maybe","family","real","WIDTH_FACTOR","FontInfo","paraMargin","FontSelector","defaultXfaFont","defaultParaMargin","defaultLineHeight","pushData","lastFont","popFont","topFont","fontSelector","extraHeight","addPara","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","lastSpaceWidth","currentLineWidth","currentLineHeight","isFirstLine","isEOL","dataset","rootNameSpace","_builder","Builder","_globalData","_ids","_current","buildRoot","_whiteRegex","_nbsps","_richText","_mkAttributes","namespace","prefixes","attributeObj","nsAttrs","_getNameAndPrefix","nsAgnostic","attributesObj","nsPrefix","isNsAgnostic","build","Root","Empty","_namespaceStack","_nsAgnosticLevel","_namespacePrefixes","_namespaces","_nextNsId","_currentNamespace","UnknownNamespace","hasNamespaceDef","_searchNamespace","_addNamespacePrefix","dataTemplate","NamespaceSetUp","xfaAttrs","nsToUse","_getNamespaceToUse","namespaceToUse","hasNamespace","nsName","prefixStack","ConfigNamespace","ConnectionSetNamespace","DatasetsNamespace","LocaleSetNamespace","SignatureNamespace","StylesheetNamespace","XdpNamespace","CONFIG_NS_ID","Acrobat","acrobat7","autoSave","common","validateApprovalSignatures","submitUrl","Acrobat7","dynamicRender","ADBE_JSConsole","ADBE_JSDebugger","AddSilentPrint","AddViewerPreferences","AdjustData","AdobeExtensionLevel","Agent","AlwaysEmbed","Amd","Attributes","AutoSave","Base","BatchOutput","BehaviorOverride","Cache","templateCache","Change","Common","messaging","suppressBanner","validationMessaging","versionControl","Compress","CompressLogicalStructure","CompressObjectStream","Compression","compressLogicalStructure","compressObjectStream","Config","acrobat","present","trace","agent","Conformance","ContentCopy","Copies","Creator","CurrentPage","Data","adjustData","incrementalLoad","outputXSL","startNode","uri","xsl","excludeNS","Debug","DefaultTypeface","writingScript","Destination","DocumentAssembly","Driver","DuplexOption","DynamicRender","Embed","encryptionLevel","EncryptionLevel","Enforce","Equate","force","to","EquateRange","_unicodeRange","unicodeRange","unicodeRegex","Exclude","ExcludeNS","FlipLabel","embed","subsetBelow","alwaysEmbed","defaultTypeface","neverEmbed","FormFieldFilling","GroupParent","IfEmpty","IncludeXDPContent","IncrementalLoad","IncrementalMerge","Interactive","Jog","LabelPrinter","batchOutput","flipLabel","Layout","Level","Linearized","Locale","LocaleSet","Log","threshold","MapElement","equate","equateRange","MediumInfo","msgId","severity","Messaging","Mode","ModifyAnnots","MsgId","NameAttr","NeverEmbed","NumberOfCopies","OpenAction","destination","Output","OutputBin","OutputXSL","Overprint","Packets","PageOffset","PageRange","numbers","Pagination","PaginationOverride","Part","Pcl","jog","mediumInfo","outputBin","pageOffset","staple","Pdf","adobeExtensionLevel","compression","interactive","linearized","pdfa","producer","renderPolicy","scriptModel","silentPrint","submitFormat","tagged","Pdfa","amd","conformance","includeXDPContent","Permissions","accessibleContent","change","contentCopy","documentAssembly","formFieldFilling","modifyAnnots","plaintextMetadata","printHighQuality","PickTrayByPDFSize","PlaintextMetadata","Presence","Present","behaviorOverride","copies","incrementalMerge","overprint","pagination","paginationOverride","driver","labelPrinter","pcl","webClient","zpl","Print","PrintHighQuality","PrintScaling","PrinterName","Producer","Ps","Range","Record","Relevant","Rename","RenderPolicy","RunScripts","currentPage","exclude","runScripts","ScriptModel","Severity","SilentPrint","addSilentPrint","printerName","Staple","StartNode","StartPage","SubmitFormat","SubmitUrl","SubsetBelow","SuppressBanner","Tagged","startPage","Threshold","To","TemplateCache","maxEntries","Trace","groupParent","ifEmpty","nameAttr","rename","whitespace","Uri","ValidateApprovalSignatures","ValidationMessaging","Version","VersionControl","outputBelow","sourceAbove","sourceBelow","ViewerPreferences","addViewerPreferences","duplexOption","enforce","numberOfCopies","pageRange","pickTrayByPDFSize","printScaling","WebClient","Whitespace","Window","Xdc","Xdp","packets","Xsl","debug","Zpl","compress","CONNECTION_SET_NS_ID","ConnectionSet","wsdlConnection","xmlConnection","xsdConnection","EffectiveInputPolicy","EffectiveOutputPolicy","Operation","RootElement","SoapAction","SoapAddress","WsdlAddress","WsdlConnection","dataDescription","effectiveInputPolicy","effectiveOutputPolicy","soapAction","soapAddress","wsdlAddress","XmlConnection","XsdConnection","rootElement","DATASETS_NS_ID","Datasets","LOCALE_SET_NS_ID","CalendarSymbols","dayNames","eraNames","meridiemNames","monthNames","CurrencySymbol","CurrencySymbols","currencySymbol","DatePattern","DatePatterns","datePattern","DateTimeSymbols","Day","DayNames","abbr","day","Era","EraNames","era","calendarSymbols","currencySymbols","datePatterns","dateTimeSymbols","numberPatterns","numberSymbols","timePatterns","typeFaces","Meridiem","MeridiemNames","meridiem","Month","MonthNames","month","NumberPattern","NumberPatterns","numberPattern","NumberSymbol","NumberSymbols","numberSymbol","TimePattern","TimePatterns","timePattern","TypeFace","TypeFaces","typeFace","SIGNATURE_NS_ID","STYLESHEET_NS_ID","Stylesheet","XDP_NS_ID","uuid","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","mapStyle","styleStr","newValue","replaceAll","SUB_SUPER_SCRIPT_FACTOR","VERTICAL_FACTOR","checkStyle","NoWhites","XhtmlObject","mustPop","pushFont","Body","Br","Html","Li","Ol","siblings","Span","Sub","Sup","Ul","br","li","ol","span","sub","sup","ul","namespaceId","xrefstms","_cacheMap","_pendingRefs","_newRefNum","startXRefQueue","trailerDict","readXRef","indexObjects","processXRefTable","tableState","entryNum","parserBuf1","parserBuf2","readXRefTable","firstEntryNum","free","uncompressed","processXRefStream","streamParameters","byteWidths","streamState","entryRanges","readXRefStream","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","typeByte","offsetByte","generationByte","TAB","PERCENT","LT","readToken","skipUntil","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","updateEntries","checkPos","tokenStr","objToken","xrefTagOffset","pagesDict","pagesCount","startXRefParsedCache","getEntry","xrefEntry","fetchUncompressed","fetchCompressed","tableOffset","CallbackKind","DATA","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","_processStreamMessage","cbSourceName","cbTargetName","_createStreamSink","addEventListener","ah","sendWithStream","queueingStrategy","controller","startCapability","startCall","pullCall","cancelCall","pull","pullCapability","cancel","cancelCapability","isCancelled","lastDesiredSize","sinkCapability","onPull","onCancel","streamController","_deleteStreamController","allSettled","removeEventListener","_msgHandler","_contentLength","_fullRequestReader","_rangeRequestReaders","PDFWorkerStreamReader","PDFWorkerStreamRangeReader","_isRangeSupported","_isStreamingSupported","readableStream","_reader","getReader","_headersReady","pdfjsVersion","pdfjsBuild"],"sourceRoot":""}