{"version":3,"file":"332-a72eac494ce65a7ee317.js","mappings":"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CAAC,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IACx3IC,GAAc,CAAC,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,IAdzB,GAcwC,CAAC,IAdzC,GAcwD,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAC53CC,GAAc,CAAC,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,KACjwDC,GAAc,CAAC,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IACzhB,MAAMC,GACJ,WAAA5rB,CAAY6rB,EAAQ/sB,EAAU,CAAC,GAC7B,GAA4B,mBAAjB+sB,GAAQC,KACjB,MAAM,IAAIt1B,MAAM,iDAqBlB,IAAIu1B,EACJ,IApBAh1B,KAAK80B,OAASA,EACd90B,KAAK8yB,KAAM,EACX9yB,KAAKwQ,SAAWzI,EAAQ1B,GAAK,EAC7BrG,KAAKi1B,OAASltB,EAAQmtB,YAAa,EACnCl1B,KAAKm1B,UAAYptB,EAAQqtB,mBAAoB,EAC7Cp1B,KAAKq1B,QAAUttB,EAAQutB,SAAW,KAClCt1B,KAAKu1B,KAAOxtB,EAAQytB,MAAQ,EAC5Bx1B,KAAKy1B,QAAU1tB,EAAQ2tB,aAAc,EACrC11B,KAAK21B,MAAQ5tB,EAAQ6tB,WAAY,EACjC51B,KAAK61B,WAAa,IAAI1qB,YAAYnL,KAAKq1B,QAAU,GACjDr1B,KAAK81B,QAAU,IAAI3qB,YAAYnL,KAAKq1B,QAAU,GAC9Cr1B,KAAK61B,WAAW,GAAK71B,KAAKq1B,QAC1Br1B,KAAK+1B,UAAY,EACjB/1B,KAAKg2B,IAAM,EACXh2B,KAAKi2B,WAAaj2B,KAAKwQ,SAAW,EAClCxQ,KAAKk2B,UAAY,EACjBl2B,KAAKm2B,SAAW,EAChBn2B,KAAKo2B,WAAa,EAClBp2B,KAAKq2B,UAAW,EAEwB,KAAhCrB,EAAQh1B,KAAKs2B,UAAU,MAC7Bt2B,KAAKu2B,SAAS,GAEF,IAAVvB,GACFh1B,KAAKu2B,SAAS,IAEZv2B,KAAKwQ,SAAW,IAClBxQ,KAAKi2B,YAAcj2B,KAAKs2B,UAAU,GAClCt2B,KAAKu2B,SAAS,GAElB,CACA,YAAAC,GACE,GAAIx2B,KAAK8yB,IACP,OAAQ,EAEV,MAAMgD,EAAU91B,KAAK81B,QACfD,EAAa71B,KAAK61B,WAClBR,EAAUr1B,KAAKq1B,QACrB,IAAIoB,EAAQC,EAAatQ,EAAM9kB,EA+O3B8M,EA9OJ,GAAwB,IAApBpO,KAAKo2B,WAAkB,CAIzB,GAHIp2B,KAAKq2B,WACPr2B,KAAK8yB,KAAM,GAET9yB,KAAK8yB,IACP,OAAQ,EAGV,IAAIkC,EAAO2B,EAAOC,EAClB,GAFA52B,KAAKqlB,KAAM,EAEPrlB,KAAKi2B,WAAY,CACnB,IAAK30B,EAAI,EAAGu0B,EAAWv0B,GAAK+zB,IAAW/zB,EACrCw0B,EAAQx0B,GAAKu0B,EAAWv0B,GAQ1B,IANAw0B,EAAQx0B,KAAO+zB,EACfS,EAAQx0B,GAAK+zB,EACbQ,EAAW,GAAK,EAChB71B,KAAK+1B,UAAY,EACjBU,EAAS,EACTC,EAAc,EACPb,EAAW71B,KAAK+1B,WAAaV,GAElC,OADAL,EAAQh1B,KAAK62B,iBACL7B,GACN,KAjFO,EAkFLh1B,KAAK82B,WAAWhB,EAAQW,EAAS,GAAIC,GACjCZ,EAAQW,EAAS,GAAKpB,IACxBoB,GAAU,GAEZ,MACF,KAtFQ,EAwFN,GADAzB,EAAQ2B,EAAQ,EACZD,EAAa,CACf,GACE1B,GAAS4B,EAAQ52B,KAAK+2B,sBACfH,GAAS,IAClB,GACED,GAASC,EAAQ52B,KAAKg3B,sBACfJ,GAAS,GACpB,KAAO,CACL,GACE5B,GAAS4B,EAAQ52B,KAAKg3B,sBACfJ,GAAS,IAClB,GACED,GAASC,EAAQ52B,KAAK+2B,sBACfH,GAAS,GACpB,CAKA,IAJA52B,KAAK82B,WAAWjB,EAAW71B,KAAK+1B,WAAaf,EAAO0B,GAChDb,EAAW71B,KAAK+1B,WAAaV,GAC/Br1B,KAAK82B,WAAWjB,EAAW71B,KAAK+1B,WAAaY,EAAqB,EAAdD,GAE/CZ,EAAQW,IAAWZ,EAAW71B,KAAK+1B,YAAcD,EAAQW,GAAUpB,GACxEoB,GAAU,EAEZ,MACF,KAzGS,EA4GP,GAFAz2B,KAAK82B,WAAWhB,EAAQW,GAAU,EAAGC,GACrCA,GAAe,EACXb,EAAW71B,KAAK+1B,WAAaV,EAE/B,MADEoB,EACKX,EAAQW,IAAWZ,EAAW71B,KAAK+1B,YAAcD,EAAQW,GAAUpB,GACxEoB,GAAU,EAGd,MACF,KArHS,EAwHP,GAFAz2B,KAAK82B,WAAWhB,EAAQW,GAAU,EAAGC,GACrCA,GAAe,EACXb,EAAW71B,KAAK+1B,WAAaV,EAE/B,MADEoB,EACKX,EAAQW,IAAWZ,EAAW71B,KAAK+1B,YAAcD,EAAQW,GAAUpB,GACxEoB,GAAU,EAGd,MACF,KAjIS,EAoIP,GAFAz2B,KAAK82B,WAAWhB,EAAQW,GAAU,EAAGC,GACrCA,GAAe,EACXb,EAAW71B,KAAK+1B,WAAaV,EAE/B,MADEoB,EACKX,EAAQW,IAAWZ,EAAW71B,KAAK+1B,YAAcD,EAAQW,GAAUpB,GACxEoB,GAAU,EAGd,MACF,KA5IQ,EA+IN,GAFAz2B,KAAK82B,WAAWhB,EAAQW,GAASC,GACjCA,GAAe,EACXb,EAAW71B,KAAK+1B,WAAaV,EAE/B,MADEoB,EACKX,EAAQW,IAAWZ,EAAW71B,KAAK+1B,YAAcD,EAAQW,GAAUpB,GACxEoB,GAAU,EAGd,MACF,KAhJS,EAmJP,GAFAz2B,KAAKi3B,cAAcnB,EAAQW,GAAU,EAAGC,GACxCA,GAAe,EACXb,EAAW71B,KAAK+1B,WAAaV,EAM/B,IALIoB,EAAS,IACTA,IAEAA,EAEGX,EAAQW,IAAWZ,EAAW71B,KAAK+1B,YAAcD,EAAQW,GAAUpB,GACxEoB,GAAU,EAGd,MACF,KAhKS,EAmKP,GAFAz2B,KAAKi3B,cAAcnB,EAAQW,GAAU,EAAGC,GACxCA,GAAe,EACXb,EAAW71B,KAAK+1B,WAAaV,EAM/B,IALIoB,EAAS,IACTA,IAEAA,EAEGX,EAAQW,IAAWZ,EAAW71B,KAAK+1B,YAAcD,EAAQW,GAAUpB,GACxEoB,GAAU,EAGd,MACF,KAhLS,EAmLP,GAFAz2B,KAAKi3B,cAAcnB,EAAQW,GAAU,EAAGC,GACxCA,GAAe,EACXb,EAAW71B,KAAK+1B,WAAaV,EAM/B,IALIoB,EAAS,IACTA,IAEAA,EAEGX,EAAQW,IAAWZ,EAAW71B,KAAK+1B,YAAcD,EAAQW,GAAUpB,GACxEoB,GAAU,EAGd,MACF,KAAKnC,GACHt0B,KAAK82B,WAAWzB,EAAS,GACzBr1B,KAAK8yB,KAAM,EACX,MACF,QACE1rB,EAAK,eACLpH,KAAK82B,WAAWzB,EAAS,GACzBr1B,KAAKqlB,KAAM,EAGnB,MAIE,IAHAwQ,EAAW,GAAK,EAChB71B,KAAK+1B,UAAY,EACjBW,EAAc,EACPb,EAAW71B,KAAK+1B,WAAaV,GAAS,CAE3C,GADAL,EAAQ,EACJ0B,EACF,GACE1B,GAAS4B,EAAQ52B,KAAK+2B,sBACfH,GAAS,SAElB,GACE5B,GAAS4B,EAAQ52B,KAAKg3B,sBACfJ,GAAS,IAEpB52B,KAAK82B,WAAWjB,EAAW71B,KAAK+1B,WAAaf,EAAO0B,GACpDA,GAAe,CACjB,CAEF,IAAIQ,GAAS,EAIb,GAHIl3B,KAAKm1B,YACPn1B,KAAKk2B,YAAa,GAEfl2B,KAAKy1B,SAAWz1B,KAAKg2B,MAAQh2B,KAAKu1B,KAAO,EAEvC,CAEL,GADAP,EAAQh1B,KAAKs2B,UAAU,IACnBt2B,KAAKi1B,OACP,KAAOD,IAAUV,IAAsB,IAAVU,GAC3Bh1B,KAAKu2B,SAAS,GACdvB,EAAQh1B,KAAKs2B,UAAU,SAGzB,KAAiB,IAAVtB,GACLh1B,KAAKu2B,SAAS,GACdvB,EAAQh1B,KAAKs2B,UAAU,IAGb,IAAVtB,GACFh1B,KAAKu2B,SAAS,IACdW,GAAS,GACAlC,IAAUV,KACnBt0B,KAAK8yB,KAAM,EAEf,MApBE9yB,KAAKq2B,UAAW,EAyBlB,IAJKr2B,KAAK8yB,KAAO9yB,KAAKwQ,SAAW,IAAMxQ,KAAKq2B,WAC1Cr2B,KAAKi2B,YAAcj2B,KAAKs2B,UAAU,GAClCt2B,KAAKu2B,SAAS,IAEZv2B,KAAKy1B,SAAWyB,GAAUl3B,KAAKm1B,WAEjC,GADAH,EAAQh1B,KAAKs2B,UAAU,IACT,IAAVtB,EAAa,CAMf,GALAh1B,KAAKu2B,SAAS,IACVv2B,KAAKwQ,SAAW,IAClBxQ,KAAKs2B,UAAU,GACft2B,KAAKu2B,SAAS,IAEZv2B,KAAKwQ,UAAY,EACnB,IAAKlP,EAAI,EAAGA,EAAI,IAAKA,EACnB0zB,EAAQh1B,KAAKs2B,UAAU,IACT,IAAVtB,GACF5tB,EAAK,iBAAmB4tB,GAE1Bh1B,KAAKu2B,SAAS,IACVv2B,KAAKwQ,SAAW,IAClBxQ,KAAKs2B,UAAU,GACft2B,KAAKu2B,SAAS,IAIpBv2B,KAAK8yB,KAAM,CACb,OACK,GAAI9yB,KAAKqlB,KAAOrlB,KAAKi1B,OAAQ,CAClC,OAAa,CAEX,GADAD,EAAQh1B,KAAKs2B,UAAU,IACnBtB,IAAUV,GAEZ,OADAt0B,KAAK8yB,KAAM,GACH,EAEV,GAAIkC,GAAS,GAAM,EACjB,MAEFh1B,KAAKu2B,SAAS,EAChB,CACAv2B,KAAKu2B,SAAS,IACVv2B,KAAKwQ,SAAW,IAClBxQ,KAAKu2B,SAAS,GACdv2B,KAAKi2B,aAAuB,EAARjB,GAExB,CACAh1B,KAAKo2B,WAAaP,EAAW,GAAK,EAAIA,EAAW71B,KAAK+1B,UAAY,GAAKF,EAAW71B,KAAK+1B,UAAY,GACnG/1B,KAAKg2B,KACP,CAEA,GAAIh2B,KAAKo2B,YAAc,EACrBhoB,EAAqB,EAAjBpO,KAAK+1B,UAAgB,EAAI,IAC7B/1B,KAAKo2B,YAAc,EACK,IAApBp2B,KAAKo2B,YAAoBP,EAAW71B,KAAK+1B,WAAaV,IACxDr1B,KAAK+1B,YACL/1B,KAAKo2B,WAAaP,EAAW71B,KAAK+1B,WAAaF,EAAW71B,KAAK+1B,UAAY,QAExE,CACL3P,EAAO,EACPhY,EAAI,EACJ,EAAG,CACD,GAA+B,iBAApBpO,KAAKo2B,WACd,MAAM,IAAIzsB,EAAY,gEAEpB3J,KAAKo2B,WAAahQ,GACpBhY,IAAMgY,EACiB,EAAjBpmB,KAAK+1B,YACT3nB,GAAK,KAAQ,EAAIgY,GAEnBpmB,KAAKo2B,YAAchQ,EACnBA,EAAO,IAEPhY,IAAMpO,KAAKo2B,WACY,EAAjBp2B,KAAK+1B,YACT3nB,GAAK,KAAQ,EAAIpO,KAAKo2B,YAExBhQ,GAAQpmB,KAAKo2B,WACbp2B,KAAKo2B,WAAa,EACdP,EAAW71B,KAAK+1B,WAAaV,GAC/Br1B,KAAK+1B,YACL/1B,KAAKo2B,WAAaP,EAAW71B,KAAK+1B,WAAaF,EAAW71B,KAAK+1B,UAAY,IAClE3P,EAAO,IAChBhY,IAAMgY,EACNA,EAAO,GAGb,OAASA,EACX,CAIA,OAHIpmB,KAAK21B,QACPvnB,GAAK,KAEAA,CACT,CACA,UAAA0oB,CAAWK,EAAIT,GACb,MAAMb,EAAa71B,KAAK61B,WACxB,IAAIE,EAAY/1B,KAAK+1B,UACjBoB,EAAKtB,EAAWE,KACdoB,EAAKn3B,KAAKq1B,UACZjuB,EAAK,uBACLpH,KAAKqlB,KAAM,EACX8R,EAAKn3B,KAAKq1B,SAEI,EAAZU,EAAgBW,KAChBX,EAEJF,EAAWE,GAAaoB,GAE1Bn3B,KAAK+1B,UAAYA,CACnB,CACA,aAAAkB,CAAcE,EAAIT,GAChB,MAAMb,EAAa71B,KAAK61B,WACxB,IAAIE,EAAY/1B,KAAK+1B,UACrB,GAAIoB,EAAKtB,EAAWE,GACdoB,EAAKn3B,KAAKq1B,UACZjuB,EAAK,uBACLpH,KAAKqlB,KAAM,EACX8R,EAAKn3B,KAAKq1B,SAEI,EAAZU,EAAgBW,KAChBX,EAEJF,EAAWE,GAAaoB,OACnB,GAAIA,EAAKtB,EAAWE,GAAY,CAMrC,IALIoB,EAAK,IACP/vB,EAAK,gBACLpH,KAAKqlB,KAAM,EACX8R,EAAK,GAEApB,EAAY,GAAKoB,EAAKtB,EAAWE,EAAY,MAChDA,EAEJF,EAAWE,GAAaoB,CAC1B,CACAn3B,KAAK+1B,UAAYA,CACnB,CACA,cAAAqB,CAAene,EAAON,EAAK0e,EAAOC,GAChC,MAAMC,EAAaD,GAAS,EAC5B,IAAK,IAAIh2B,EAAI2X,EAAO3X,GAAKqX,IAAOrX,EAAG,CACjC,IAAI6H,EAAOnJ,KAAKs2B,UAAUh1B,GAC1B,GAAI6H,IAASmrB,GACX,MAAO,EAAC,EAAM,GAAG,GAKnB,GAHIhzB,EAAIqX,IACNxP,IAASwP,EAAMrX,IAEZi2B,GAAcpuB,GAAQouB,EAAY,CACrC,MAAMjqB,EAAI+pB,EAAMluB,EAAOouB,GACvB,GAAIjqB,EAAE,KAAOhM,EAEX,OADAtB,KAAKu2B,SAASj1B,GACP,EAAC,EAAMgM,EAAE,IAAI,EAExB,CACF,CACA,MAAO,EAAC,EAAO,GAAG,EACpB,CACA,cAAAupB,GACE,IACIvpB,EADAnE,EAAO,EAEX,GAAInJ,KAAKy1B,SAGP,GAFAtsB,EAAOnJ,KAAKs2B,UAAU,GACtBhpB,EAAIinB,GAAYprB,GACZmE,IAAI,GAAK,EAEX,OADAtN,KAAKu2B,SAASjpB,EAAE,IACTA,EAAE,OAEN,CACL,MAAM0gB,EAAShuB,KAAKo3B,eAAe,EAAG,EAAG7C,IACzC,GAAIvG,EAAO,IAAMA,EAAO,GACtB,OAAOA,EAAO,EAElB,CAEA,OADA5mB,EAAK,oBACEktB,EACT,CACA,aAAA0C,GACE,IACI1pB,EADAnE,EAAO,EAEX,GAAInJ,KAAKy1B,QAAS,CAEhB,GADAtsB,EAAOnJ,KAAKs2B,UAAU,IAClBntB,IAASmrB,GACX,OAAO,EAGT,GADAhnB,EAAInE,GAAQ,EAA8BsrB,GAAYtrB,GAAQ,GAAxCqrB,GAAYrrB,GAC9BmE,EAAE,GAAK,EAET,OADAtN,KAAKu2B,SAASjpB,EAAE,IACTA,EAAE,EAEb,KAAO,CACL,IAAI0gB,EAAShuB,KAAKo3B,eAAe,EAAG,EAAG3C,IACvC,GAAIzG,EAAO,GACT,OAAOA,EAAO,GAGhB,GADAA,EAAShuB,KAAKo3B,eAAe,GAAI,GAAI5C,IACjCxG,EAAO,GACT,OAAOA,EAAO,EAElB,CAGA,OAFA5mB,EAAK,kBACLpH,KAAKu2B,SAAS,GACP,CACT,CACA,aAAAQ,GACE,IAAI5tB,EAAMmE,EACV,GAAItN,KAAKy1B,QAAS,CAEhB,GADAtsB,EAAOnJ,KAAKs2B,UAAU,IAClBntB,IAASmrB,GACX,OAAO,EAST,GAJEhnB,EAHEnE,GAAQ,IAEDA,GAAQ,IAAWA,GAAQ,EAChCwrB,IAAaxrB,GAAQ,GAAK,IAE1ByrB,GAAYzrB,GAAQ,GAJpBurB,GAAYvrB,GAMdmE,EAAE,GAAK,EAET,OADAtN,KAAKu2B,SAASjpB,EAAE,IACTA,EAAE,EAEb,KAAO,CACL,IAAI0gB,EAAShuB,KAAKo3B,eAAe,EAAG,EAAGxC,IACvC,GAAI5G,EAAO,GACT,OAAOA,EAAO,GAGhB,GADAA,EAAShuB,KAAKo3B,eAAe,EAAG,GAAIzC,GAAa,IAC7C3G,EAAO,GACT,OAAOA,EAAO,GAGhB,GADAA,EAAShuB,KAAKo3B,eAAe,GAAI,GAAI1C,IACjC1G,EAAO,GACT,OAAOA,EAAO,EAElB,CAGA,OAFA5mB,EAAK,kBACLpH,KAAKu2B,SAAS,GACP,CACT,CACA,SAAAD,CAAU/pB,GACR,IAAI6B,EACJ,KAAOpO,KAAKk2B,UAAY3pB,GAAG,CACzB,IAAkC,KAA7B6B,EAAIpO,KAAK80B,OAAOC,QACnB,OAAuB,IAAnB/0B,KAAKk2B,UACA5B,GAEFt0B,KAAKm2B,UAAY5pB,EAAIvM,KAAKk2B,UAAY,OAAU,GAAK3pB,EAE9DvM,KAAKm2B,SAAWn2B,KAAKm2B,UAAY,EAAI/nB,EACrCpO,KAAKk2B,WAAa,CACpB,CACA,OAAOl2B,KAAKm2B,UAAYn2B,KAAKk2B,UAAY3pB,EAAI,OAAU,GAAKA,CAC9D,CACA,QAAAgqB,CAAShqB,IACFvM,KAAKk2B,WAAa3pB,GAAK,IAC1BvM,KAAKk2B,UAAY,EAErB,EAOF,MAAMsB,WAAuB9E,GAC3B,WAAAzpB,CAAYyB,EAAKgpB,EAAazJ,GAC5B7gB,MAAMsqB,GACN1zB,KAAK0K,IAAMA,EACX1K,KAAKyV,KAAO/K,EAAI+K,KACVwU,aAAkBzW,KACtByW,EAASzW,GAAK0B,OAEhB,MAAM4f,EAAS,CACbC,KAAI,IACKrqB,EAAI+M,WAGfzX,KAAKy3B,gBAAkB,IAAI5C,GAAgBC,EAAQ,CACjDzuB,EAAG4jB,EAAOpmB,IAAI,KACdqxB,UAAWjL,EAAOpmB,IAAI,aACtBuxB,iBAAkBnL,EAAOpmB,IAAI,oBAC7ByxB,QAASrL,EAAOpmB,IAAI,WACpB2xB,KAAMvL,EAAOpmB,IAAI,QACjB6xB,WAAYzL,EAAOpmB,IAAI,cACvB+xB,SAAU3L,EAAOpmB,IAAI,aAEzB,CACA,SAAAmvB,GACE,MAAQhzB,KAAK8yB,KAAK,CAChB,MAAM1kB,EAAIpO,KAAKy3B,gBAAgBjB,eAC/B,IAAW,IAAPpoB,EAEF,YADApO,KAAK8yB,KAAM,GAGb9yB,KAAKizB,aAAajzB,KAAK6yB,aAAe,GACtC7yB,KAAKoL,OAAOpL,KAAK6yB,gBAAkBzkB,CACrC,CACF,EAOF,MAAMspB,GAAiB,IAAIC,WAAW,CAAC,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,KAC/FC,GAAe,IAAID,WAAW,CAAC,EAAS,EAAS,EAAS,EAAS,EAAS,EAAS,EAAS,GAAS,MAAS,MAAS,MAAS,MAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,IAAS,IAAS,MAC7SE,GAAa,IAAIF,WAAW,CAAC,EAAS,EAAS,EAAS,EAAS,MAAS,MAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,SAClSG,GAAkB,CAAC,IAAIH,WAAW,CAAC,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAA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,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,GACJC,K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,GAAkB,CAAC,CAAC,CACxB3sB,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,IACD,CAAC,CACHD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,IACD,CAAC,CACHD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,IACD,CAAC,CACHD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,KAEC2sB,GAAsB,CAAC,CAC3BC,OAAQ,CAAC,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GACPA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,MACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,IACZ,IACMiwM,GAAuCvmM,IAAsB,SAAU1J,GAC3EA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,GACX,IACMkwM,GAAoCxmM,IAAsB,SAAU1J,GACxEA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,IACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,IACTA,EAAE,KAAO,GACTA,EAAE,KAAO,IACTA,EAAE,KAAO,GACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EA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,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,EAAG,EAAG,MAAQ,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1tJC,GAAqB,CACzB/U,WAAY,OACZ0I,QAAS,OAELsM,GAA2B,CAAC,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,OAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxwJC,GAA2B,CAC/BjV,WAAY,OACZ0I,QAAS,OAELwM,GAAuB,CAAC,OAAQ,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,MAAQ,QAAS,OAAS,QAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,KAAO,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,MAAQ,KAAO,QAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACzrJC,GAAuB,CAC3BnV,WAAY,OACZ0I,QAAS,OAEL0M,GAAwB,CAAC,OAAQ,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,MAAQ,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,OAAS,OAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnvJC,GAAwB,CAC5BrV,WAAY,OACZ0I,QAAS,OAIL4M,GAAuB,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,MAAQ,EAAG,OAAQ,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,MAAQ,OAAQ,OAAS,EAAG,QAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/iLC,GAAuB,CAC3BvV,WAAY,IACZ0I,QAAS,IAEL8M,GAA6B,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,OAAQ,QAAS,OAAS,QAAS,QAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxjLC,GAA6B,CACjCzV,WAAY,KACZ0I,QAAS,IAELgN,GAAyB,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,MAAQ,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAQ,OAAQ,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,EAAG,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAQ,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,OAAQ,OAAQ,EAAG,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,MAAQ,QAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACt6KC,GAAyB,CAC7B3V,WAAY,KACZ0I,QAAS,IAELkN,GAA0B,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,MAAQ,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAQ,OAAQ,QAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,QAAS,EAAG,MAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,EAAG,OAAS,OAAS,EAAG,QAAS,OAAS,MAAQ,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,EAAG,OAAQ,EAAG,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,MAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,OAAQ,MAAQ,EAAG,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,EAAG,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,MAAQ,QAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC32KC,GAA0B,CAC9B7V,WAAY,IACZ0I,QAAS,IAILoN,GAA2B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACv3GC,GAA4B,EAAE,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC9gHC,GAAiC,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC33GC,GAAkC,EAAE,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACphHC,GAA6B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACt3GC,GAA8B,EAAE,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAChhHC,GAA8B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACz3GC,GAA+B,EAAE,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAGjhHC,GAAuB,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,MAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,MAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,KAAO,QAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,EAAG,EAAG,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,KAAO,MAAQ,KAAO,MAAQ,KAAO,EAAG,OAAS,OAAS,OAAS,KAAO,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,MAAQ,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,KAAO,KAAO,KAAO,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,IAAM,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAQ,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC16IC,GAAuB,CAC3BvW,WAAY,IACZ0I,QAAS,IAEL8N,GAA6B,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,GAAK,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,GAAK,OAAS,GAAK,OAAS,GAAK,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,KAAO,KAAO,KAAO,MAAQ,MAAQ,OAAS,EAAG,KAAM,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACr9IC,GAA6B,CACjCzW,WAAY,IACZ0I,QAAS,IAELgO,GAAyB,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,QAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,OAAS,IAAM,KAAO,KAAO,KAAO,IAAM,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,EAAG,MAAQ,OAAS,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,KAAO,QAAS,EAAG,EAAG,KAAO,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,MAAQ,IAAM,MAAQ,IAAM,MAAQ,IAAM,EAAG,OAAS,OAAS,OAAS,KAAO,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,KAAO,OAAS,OAAS,IAAM,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,MAAQ,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,MAAO,MAAO,MAAO,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACh5IC,GAAyB,CAC7B3W,WAAY,IACZ0I,QAAS,IAELkO,GAA0B,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,IAAM,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAQ,KAAO,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,KAAO,QAAS,QAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,KAAO,QAAS,OAAS,KAAO,QAAS,KAAO,KAAO,KAAO,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAQ,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,IAAM,QAAS,EAAG,EAAG,KAAO,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,KAAO,MAAQ,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,KAAO,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,KAAO,MAAQ,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,MAAO,QAAS,EAAG,EAAG,OAAQ,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACn6IC,GAA0B,CAC9B7W,WAAY,IACZ0I,QAAS,IAILoO,GAAqB,CAAC,QAAS,EAAG,EAAG,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,QAAS,OAAQ,MAAQ,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,KAAO,QAAS,OAAQ,MAAQ,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,MAAQ,QAAS,QAAS,EAAG,QAAS,QAAS,MAAQ,OAAQ,QAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,KAAO,QAAS,KAAO,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAQ,OAAQ,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,KAAO,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5rJC,GAAqB,CACzB/W,WAAY,QACZ0I,QAAS,GAELsO,GAA2B,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,MAAO,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,MAAQ,QAAS,MAAQ,QAAS,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,MAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,MAAO,MAAO,EAAG,MAAO,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,MAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAO,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAQ,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAO,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,MAAO,EAAG,EAAG,EAAG,KAAO,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5tJC,GAA2B,CAC/BjX,WAAY,QACZ0I,QAAS,GAELwO,GAAuB,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,MAAQ,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,MAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,IAAK,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAQ,KAAM,QAAS,IAAK,OAAQ,OAAQ,OAAS,QAAS,QAAS,KAAM,OAAS,QAAS,QAAS,IAAK,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAS,OAAQ,OAAQ,IAAK,OAAQ,OAAS,OAAQ,OAAQ,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,MAAO,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9uJC,GAAuB,CAC3BnX,WAAY,QACZ0I,QAAS,GAEL0O,GAAwB,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,MAAQ,QAAS,MAAQ,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,IAAK,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAQ,OAAS,MAAQ,OAAQ,OAAS,QAAS,IAAK,QAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,IAAK,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,MAAO,EAAG,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OA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AAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC14CC,GAAc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACjkD,SAASC,GAAM52O,GACb,SAAY,EAAJA,EACV,CACA,SAAS62O,GAAO72O,GACd,QAAY,EAAJA,EACV,CACA,SAAS82O,GAAY7lO,EAAK0G,EAAOtQ,GAC/B,IAAIyf,EAAG0nB,EACP,IAAK1nB,EAAInP,EAAO62B,EAAKv9B,EAAIhS,OAAQ6nB,EAAI0nB,IAAM1nB,EACzC,GAAI7V,EAAI6V,KAAOzf,EACb,OAAOyf,EAGX,OAAOA,CACT,CACA,SAASiwN,GAAU9lO,EAAK0G,EAAON,EAAKhQ,GAClC,IAAK,IAAIyf,EAAInP,EAAOmP,EAAIzP,IAAOyP,EAC7B7V,EAAI6V,GAAKzf,CAEb,CACA,SAAS2vO,GAAc/lO,EAAK0G,EAAON,GACjC,IAAK,IAAIrX,EAAI2X,EAAOmP,EAAIzP,EAAM,EAAGrX,EAAI8mB,IAAK9mB,IAAK8mB,EAAG,CAChD,MAAMlb,EAAOqF,EAAIjR,GACjBiR,EAAIjR,GAAKiR,EAAI6V,GACb7V,EAAI6V,GAAKlb,CACX,CACF,CACA,SAASqrO,GAAe7tO,EAAK8tO,EAAO1mN,GAAW,GAC7C,IAAIhvB,EAAM,MAMV,OALIgvB,EACFhvB,EAAM,MACI01O,IACV11O,EAAM,OAED,CACL4H,MACA5H,MAEJ,CACA,MAAM6gO,GAAQ,GACRvoK,GAAQ,GACd,SAASq9K,GAAK/tO,EAAKguO,GAAa,EAAI5mN,GAAW,GAC7C,IAAI0mN,GAAQ,EACZ,MAAMG,EAAYjuO,EAAInK,OACtB,GAAkB,IAAdo4O,GAAmB7mN,EACrB,OAAOymN,GAAe7tO,EAAK8tO,EAAO1mN,GAEpC6xM,GAAMpjO,OAASo4O,EACfv9K,GAAM76D,OAASo4O,EACf,IACIr3O,EAAG0P,EADH4nO,EAAU,EAEd,IAAKt3O,EAAI,EAAGA,EAAIq3O,IAAar3O,EAAG,CAC9BqiO,GAAMriO,GAAKoJ,EAAIwG,OAAO5P,GACtB,MAAM2P,EAAWvG,EAAIE,WAAWtJ,GAChC,IAAIu3O,EAAW,IACX5nO,GAAY,IACd4nO,EAAWb,GAAU/mO,GACZ,MAAUA,GAAYA,GAAY,KAC3C4nO,EAAW,IACF,MAAU5nO,GAAYA,GAAY,MAC3C4nO,EAAWZ,GAAuB,IAAXhnO,GAClB4nO,GACHrxO,EAAK,mCAAqCyJ,EAASzE,SAAS,OAErD,MAAUyE,GAAYA,GAAY,MAAU,OAAUA,GAAYA,GAAY,OAAU,OAAUA,GAAYA,GAAY,SACnI4nO,EAAW,MAEI,MAAbA,GAAiC,OAAbA,GAAkC,OAAbA,GAC3CD,IAEFx9K,GAAM95D,GAAKu3O,CACb,CACA,GAAgB,IAAZD,EAEF,OADAJ,GAAQ,EACDD,GAAe7tO,EAAK8tO,IAET,IAAhBE,IACEE,EAAUD,EAAY,IAAOA,EAAY,GAC3CH,GAAQ,EACRE,EAAa,IAEbF,GAAQ,EACRE,EAAa,IAGjB,MAAMI,EAAS,GACf,IAAKx3O,EAAI,EAAGA,EAAIq3O,IAAar3O,EAC3Bw3O,EAAOx3O,GAAKo3O,EAEd,MAAM54O,EAAIo4O,GAAMQ,GAAc,IAAM,IAC9BK,EAAMj5O,EACNk5O,EAAMD,EACZ,IASIppO,EATAspO,EAAWF,EACf,IAAKz3O,EAAI,EAAGA,EAAIq3O,IAAar3O,EACV,QAAb85D,GAAM95D,GACR85D,GAAM95D,GAAK23O,EAEXA,EAAW79K,GAAM95D,GAKrB,IAFA23O,EAAWF,EAENz3O,EAAI,EAAGA,EAAIq3O,IAAar3O,EAC3BqO,EAAIyrD,GAAM95D,GACA,OAANqO,EACFyrD,GAAM95D,GAAkB,OAAb23O,EAAoB,KAAO,KACvB,MAANtpO,GAAmB,MAANA,GAAmB,OAANA,IACnCspO,EAAWtpO,GAGf,IAAKrO,EAAI,EAAGA,EAAIq3O,IAAar3O,EAC3BqO,EAAIyrD,GAAM95D,GACA,OAANqO,IACFyrD,GAAM95D,GAAK,KAGf,IAAKA,EAAI,EAAGA,EAAIq3O,EAAY,IAAKr3O,EACd,OAAb85D,GAAM95D,IAAgC,OAAjB85D,GAAM95D,EAAI,IAAgC,OAAjB85D,GAAM95D,EAAI,KAC1D85D,GAAM95D,GAAK,MAEI,OAAb85D,GAAM95D,IAAiC,OAAjB85D,GAAM95D,EAAI,IAAgC,OAAjB85D,GAAM95D,EAAI,IAAgB85D,GAAM95D,EAAI,KAAO85D,GAAM95D,EAAI,KACtG85D,GAAM95D,GAAK85D,GAAM95D,EAAI,IAGzB,IAAKA,EAAI,EAAGA,EAAIq3O,IAAar3O,EAC3B,GAAiB,OAAb85D,GAAM95D,GAAa,CACrB,IAAK,IAAI8mB,EAAI9mB,EAAI,EAAG8mB,GAAK,GACN,OAAbgzC,GAAMhzC,KADkBA,EAI5BgzC,GAAMhzC,GAAK,KAEb,IAAK,IAAIA,EAAI9mB,EAAI,EAAG8mB,EAAIuwN,GACL,OAAbv9K,GAAMhzC,KADyBA,EAInCgzC,GAAMhzC,GAAK,IAEf,CAEF,IAAK9mB,EAAI,EAAGA,EAAIq3O,IAAar3O,EAC3BqO,EAAIyrD,GAAM95D,GACA,OAANqO,GAAoB,OAANA,GAAoB,OAANA,GAAoB,OAANA,IAC5CyrD,GAAM95D,GAAK,MAIf,IADA23O,EAAWF,EACNz3O,EAAI,EAAGA,EAAIq3O,IAAar3O,EAC3BqO,EAAIyrD,GAAM95D,GACA,OAANqO,EACFyrD,GAAM95D,GAAkB,MAAb23O,EAAmB,IAAM,KACrB,MAANtpO,GAAmB,MAANA,IACtBspO,EAAWtpO,GAGf,IAAKrO,EAAI,EAAGA,EAAIq3O,IAAar3O,EAC3B,GAAiB,OAAb85D,GAAM95D,GAAa,CACrB,MAAMqX,EAAMy/N,GAAYh9K,GAAO95D,EAAI,EAAG,MACtC,IAAI43O,EAASH,EACTz3O,EAAI,IACN43O,EAAS99K,GAAM95D,EAAI,IAErB,IAAI63O,EAAQH,EACRrgO,EAAM,EAAIggO,IACZQ,EAAQ/9K,GAAMziD,EAAM,IAEP,MAAXugO,IACFA,EAAS,KAEG,MAAVC,IACFA,EAAQ,KAEND,IAAWC,GACbd,GAAUj9K,GAAO95D,EAAGqX,EAAKugO,GAE3B53O,EAAIqX,EAAM,CACZ,CAEF,IAAKrX,EAAI,EAAGA,EAAIq3O,IAAar3O,EACV,OAAb85D,GAAM95D,KACR85D,GAAM95D,GAAKxB,GAGf,IAAKwB,EAAI,EAAGA,EAAIq3O,IAAar3O,EAC3BqO,EAAIyrD,GAAM95D,GACN62O,GAAOW,EAAOx3O,IACN,MAANqO,EACFmpO,EAAOx3O,IAAM,EACE,OAANqO,GAAoB,OAANA,IACvBmpO,EAAOx3O,IAAM,GAEA,MAANqO,GAAmB,OAANA,GAAoB,OAANA,IACpCmpO,EAAOx3O,IAAM,GAGjB,IAEI83O,EAFAC,GAAgB,EAChBC,EAAiB,GAErB,IAAKh4O,EAAI,EAAG0P,EAAK8nO,EAAOv4O,OAAQe,EAAI0P,IAAM1P,EACxC83O,EAAQN,EAAOx3O,GACX+3O,EAAeD,IACjBC,EAAeD,GAEbE,EAAiBF,GAASlB,GAAMkB,KAClCE,EAAiBF,GAGrB,IAAKA,EAAQC,EAAcD,GAASE,IAAkBF,EAAO,CAC3D,IAAIngO,GAAS,EACb,IAAK3X,EAAI,EAAG0P,EAAK8nO,EAAOv4O,OAAQe,EAAI0P,IAAM1P,EACpCw3O,EAAOx3O,GAAK83O,EACVngO,GAAS,IACXq/N,GAAc3U,GAAO1qN,EAAO3X,GAC5B2X,GAAS,GAEFA,EAAQ,IACjBA,EAAQ3X,GAGR2X,GAAS,GACXq/N,GAAc3U,GAAO1qN,EAAO6/N,EAAOv4O,OAEvC,CACA,IAAKe,EAAI,EAAG0P,EAAK2yN,GAAMpjO,OAAQe,EAAI0P,IAAM1P,EAAG,CAC1C,MAAM8Z,EAAKuoN,GAAMriO,GACN,MAAP8Z,GAAqB,MAAPA,IAChBuoN,GAAMriO,GAAK,GAEf,CACA,OAAOi3O,GAAe5U,GAAMn5N,KAAK,IAAKguO,EACxC,CAMA,MAAMe,GAAS,CACbC,MAAO,SACPn7N,OAAQ,UAEJo7N,GAAO,CACXD,MAAO,SACPn7N,OAAQ,QAEJq7N,GAAS,CACbF,MAAO,SACPn7N,OAAQ,UAEJs7N,GAAa,CACjBH,MAAO,SACPn7N,OAAQ,QAEJu7N,GAAkB,IAAIjmO,IAAI,CAAC,CAAC,cAAe,CAC/CkmO,MAAO,CAAC,kBAAmB,cAAe,QAAS,mBAAoB,eAAgB,iBAAkB,QAAS,YAAa,kBAAmB,YAAa,oBAAqB,mBAAoB,eAAgB,uBAAwB,UAChPL,MAAOD,GACPO,SAAU,UACR,CAAC,aAAc,CACjBC,MAAO,cACPP,MAAOC,GACPK,SAAU,UACR,CAAC,eAAgB,CACnBC,MAAO,cACPP,MAAOE,GACPI,SAAU,UACR,CAAC,mBAAoB,CACvBC,MAAO,cACPP,MAAOG,GACPG,SAAU,UACR,CAAC,YAAa,CAChBD,MAAO,CAAC,YAAa,iBAAkB,QAAS,aAAc,kBAAmB,QAAS,cAAe,gBAAiB,OAAQ,iBAAkB,WAAY,cAAe,SAAU,sBAAuB,mBAAoB,uBAAwB,gBAAiB,aAC7Q/9N,KAAM,6BACN09N,MAAOD,GACPO,SAAU,eACR,CAAC,iBAAkB,CACrBC,MAAO,YACPj+N,KAAM,0BACN09N,MAAOC,GACPK,SAAU,eACR,CAAC,oBAAqB,CACxBC,MAAO,YACPj+N,KAAM,4BACN09N,MAAOE,GACPI,SAAU,eACR,CAAC,wBAAyB,CAC5BC,MAAO,YACPj+N,KAAM,gCACN09N,MAAOG,GACPG,SAAU,eACR,CAAC,UAAW,CACdD,MAAO,CAAC,UAAW,cAAe,kBAAmB,cAAe,gBAAiB,UAAW,aAAc,kBAAmB,WAAY,yBAA0B,mBACvKL,MAAOD,GACPO,SAAU,cACR,CAAC,eAAgB,CACnBC,MAAO,UACPP,MAAOC,GACPK,SAAU,cACR,CAAC,kBAAmB,CACtBC,MAAO,UACPP,MAAOE,GACPI,SAAU,cACR,CAAC,sBAAuB,CAC1BC,MAAO,UACPP,MAAOG,GACPG,SAAU,cACR,CAAC,aAAc,CACjBD,MAAO,CAAC,eACRL,MAAO,CACLA,MAAO,SACPn7N,OAAQ,OAEV3C,SAAU,mBACR,CAAC,kBAAmB,CACtBq+N,MAAO,eACL,CAAC,oBAAqB,CACxBA,MAAO,aACPP,MAAO,CACLA,MAAO,SACPn7N,OAAQ,OAEV3C,SAAU,0BACR,CAAC,wBAAyB,CAC5Bq+N,MAAO,sBACL,CAAC,cAAe,CAClBF,MAAO,CAAC,eAAgB,yBAA0B,sBAAuB,qBAAsB,qBAC/FL,MAAOD,GACP79N,SAAU,cACR,CAAC,mBAAoB,CACvBq+N,MAAO,cACPP,MAAOC,GACP/9N,SAAU,mBACR,CAAC,qBAAsB,CACzBq+N,MAAO,cACPP,MAAOE,GACPh+N,SAAU,sBACR,CAAC,yBAA0B,CAC7Bq+N,MAAO,cACPP,MAAOG,GACPj+N,SAAU,0BACR,CAAC,UAAW,CACdm+N,MAAO,CAAC,UAAW,WACnBL,MAAOD,GACP79N,SAAU,cACR,CAAC,eAAgB,CACnBq+N,MAAO,UACPP,MAAOC,GACP/9N,SAAU,mBACR,CAAC,iBAAkB,CACrBq+N,MAAO,UACPP,MAAOE,GACPh+N,SAAU,sBACR,CAAC,qBAAsB,CACzBq+N,MAAO,UACPP,MAAOG,GACPj+N,SAAU,0BACR,CAAC,YAAa,CAChBm+N,MAAO,CAAC,YAAa,gBACrBL,MAAOD,KACL,CAAC,oBAAqB,CACxBQ,MAAO,cACL,CAAC,iBAAkB,CACrBA,MAAO,gBAEHC,GAAc,IAAIrmO,IAAI,CAAC,CAAC,cAAe,gBAmB7C,SAASsmO,GAAcvvO,GACrB,MAAMwvO,EAAW,IAAI5jO,IAAI,CAAC,OAAQ,aAAc,aAAc,YAAa,YAAa,QAAS,OAAQ,UAAW,SAAU,SAAU,WAAY,WAAY,OAAQ,YAAa,YAAa,QAAS,QAAS,aAAc,aAAc,QAAS,SAAU,UAAW,iBAAkB,iBAAkB,YAAa,gBAAiB,SAAU,eAAgB,WAAY,gBAAiB,gBAAiB,eACxZ,OAAO5L,EAAIsR,MAAM,YAAYwX,QAAO2mN,IAAQD,EAASllO,IAAImlO,EAAIv/N,iBAAgBpQ,KAAK,IACpF,CACA,SAAS4vO,IAAa,MACpBL,EAAK,MACLF,EAAK,KACL/9N,EAAI,SACJJ,EAAQ,MACR89N,EAAK,SACLM,GACCn0N,EAAK00N,EAAeC,GAAc,EAAMC,GAAU,EAAMC,EAAS,IAClE,MAAMxsN,EAAS,CACbwrN,MAAO,KACPM,SAAU,MAEZ,GAAID,EAAO,CACT,MAAMY,EAAQD,EAAS,IAAIA,IAAW,GACtC,IAAK,MAAM93O,KAAQm3O,EACjBl0N,EAAIpkB,KAAK,SAASmB,IAAO+3O,KAE7B,CACA,GAAIV,EAAO,CACT,MAAMW,EAAed,GAAgB/1O,IAAIk2O,GACnCY,EAAcH,GA1CxB,SAA0BhB,GACxB,OAAQA,GACN,KAAKC,GACH,MAAO,OACT,KAAKC,GACH,MAAO,SACT,KAAKC,GACH,MAAO,cACT,QACE,GAAsB,SAAlBH,GAAOn7N,OACT,MAAO,OAET,GAAqB,WAAjBm7N,GAAOA,MACT,MAAO,SAGb,MAAO,EACT,CAyBkCoB,CAAiBpB,GAC/C91O,OAAO+5C,OAAOzvB,EAAQosN,GAAaM,EAAc/0N,EAAK00N,EAAeC,IAAgB5+N,EAAU6+N,IAAYz+N,EAAM6+N,GACnH,CAOA,GANInB,IACFxrN,EAAOwrN,MAAQA,GAEbM,IACF9rN,EAAO8rN,SAAWA,GAEhBQ,GAAe5+N,EAAU,CAC3B,MAAMm/N,EAAejB,GAAgB/1O,IAAI6X,IAEvCo+N,SAAUgB,GACRV,GAAaS,EAAcl1N,EAAK00N,EAAeC,EAAaC,IAAYz+N,EAAM0+N,GAClFxsN,EAAO8rN,WAAagB,CACtB,CAIA,OAHIP,GAAWz+N,GAAQu+N,GACrB10N,EAAIpkB,KAAK,OAAO84O,IAAgBv+N,MAE3BkS,CACT,CACA,SAAS+sN,GAAoBC,EAAiBC,EAAWZ,EAAea,EAAcC,EAAkB52O,GACtG,GAAI22O,EAAajzO,WAAW,qBAC1B,OAAO,KAEK,aAAT1D,GAAgC,UAATA,IAAqB,cAAcuZ,KAAKo9N,KAClEA,EAAeA,EAAattO,MAAM,IAGpC,MAAMpK,EADN03O,EAAexiC,GAAkBwiC,GAEjC,IAAIE,EAAmBJ,EAAgBn3O,IAAIL,GAC3C,GAAI43O,EACF,OAAOA,EAET,IAAIV,EAAed,GAAgB/1O,IAAIq3O,GACvC,IAAKR,EACH,IAAK,MAAOX,EAAOsB,KAAUrB,GAC3B,GAAIkB,EAAajzO,WAAW8xO,GAAQ,CAClCmB,EAAe,GAAGG,IAAQH,EAAa7+N,UAAU09N,EAAMx5O,UACvDm6O,EAAed,GAAgB/1O,IAAIq3O,GACnC,KACF,CAGJ,IAAII,GAAkB,EACjBZ,IACHA,EAAed,GAAgB/1O,IAAIs3O,GACnCG,GAAkB,GAEpB,MAAM76B,EAAa,GAAGw6B,EAAUM,eAAeN,EAAUO,iBACzD,IAAKd,EAAc,CACjB,IAAKh9N,GAAiBw9N,GAGpB,OAFA1zO,EAAK,mDAAmD0zO,KACxDF,EAAgBjmO,IAAIvR,EAAK,MAClB,KAET,MAAMy0N,EAAO,SAASn6M,KAAKo9N,GACrBhjB,EAAS,mBAAmBp6M,KAAKo9N,GACjC1B,EAAQvhB,GAAQC,GAAUyhB,IAAc1hB,GAAQwhB,IAAQvhB,GAAUwhB,IAAUH,GAUlF,OATA6B,EAAmB,CACjB3kB,IAAK,IAAIwjB,GAAciB,OAAkBz6B,IACzC+V,eAAe,EACf/V,aACAy6B,eACAv1N,IAAK,SAASu1N,KACd1B,SAEFwB,EAAgBjmO,IAAIvR,EAAK43O,GAClBA,CACT,CACA,MAAMz1N,EAAM,GACR21N,GAAmB59N,GAAiBw9N,IACtCv1N,EAAIpkB,KAAK,SAAS25O,MAEpB,MAAM,MACJ1B,EAAK,SACLM,GACEM,GAAaM,EAAc/0N,EAAK00N,GAC9B7jB,EAA6B,OAAbsjB,EAChBp+N,EAAW86M,EAAgB,GAAK,IAAIsjB,IAU1C,OATAsB,EAAmB,CACjB3kB,IAAK,IAAIwjB,GAAciB,OAAkBz6B,IAAa/kM,IACtD86M,gBACA/V,aACAy6B,eACAv1N,IAAKA,EAAInb,KAAK,KACdgvO,SAEFwB,EAAgBjmO,IAAIvR,EAAK43O,GAClBA,CACT,CASA,MAAMK,GACJtuN,SAJoB,KAKpBA,SAAkCniB,EAAYS,wBAC9C,WAAAxC,CAAYyyO,EAASC,GACnB37O,KAAK47O,SAAWF,EAChB17O,KAAK67O,QAAUF,CACjB,CACA,6BAAWzkM,GACT,OAAOxuC,EAAO1I,KAAM,qBAAsBA,MAAK,EAA2B0L,aAAa+vC,gBAAgB,aAAe/oC,QAAQG,SAAQ,GACxI,CACA,uBAAOipO,CAAiBj8N,EAAOC,GAC7B,GAAID,GAAS7f,MAAK,GAAqB8f,GAAU9f,MAAK,EACpD,OAAO,EAET,MAAM,QACJ+7O,GACE/7O,KACJ,GAAI6f,EAAQk8N,GAAWj8N,EAASi8N,EAC9B,OAAO,EAET,MAAMC,EAAOn8N,EAAQC,EACrB,OAAI9f,KAAKi8O,YACAD,EAAOh8O,KAAKk8O,WAEjBF,EAAOh8O,MAAK,GAAqB,KAGjCA,KAAKm8O,aAAat8N,EAAOC,IAC3B9f,MAAK,EAAoBoK,KAAK2D,IAAI/N,MAAK,EAAmBoK,KAAK6W,MAAM7W,KAAKmE,KAAKsR,EAAQC,MAChF,IAET9f,MAAK,EAAoBA,KAAKo8O,UAAUp8O,MAAK,EAAmB+7O,EAhClD,IAgCsE,GAE7EC,GADSh8O,KAAKk8O,SAAWl8O,MAAK,GAAqB,IAE5D,CACA,kBAAW+7O,GACT,OAAOrzO,EAAO1I,KAAM,UAAWA,KAAKo8O,UAvClB,KACA,MAsC0D,EAAG,GACjF,CACA,mBAAWF,GAET,OADAl8O,KAAKi8O,aAAc,EACZvzO,EAAO1I,KAAM,WAAYA,KAAKo8O,UAAUp8O,MAAK,EAAmBA,KAAK+7O,QAzC9D,IAyCkF,IAAM,EACxG,CACA,mBAAWG,CAASF,GACdA,GAAQ,IACVh8O,KAAKi8O,aAAc,EACnBvzO,EAAO1I,KAAM,WAAYg8O,GAE7B,CACA,iBAAOtgM,EAAW,qBAChB2gM,GAAuB,EAAE,wBACzB5wO,GAA0B,IAErBzL,KAAKi8O,cACRj8O,KAAKk8O,SAAWG,GAAwB,GAE1Cr8O,MAAK,EAA2ByL,CAClC,CACA,mBAAO0wO,CAAat8N,EAAOC,GACzB,IACE,MAAMw8N,EAAS,IAAI9wO,gBAAgBqU,EAAOC,GACpCy8N,EAAMD,EAAOE,WAAW,MAC9BD,EAAIE,SAAS,EAAG,EAAG,EAAG,GACtB,MAAMC,EAAUH,EAAI5kO,aAAa,EAAG,EAAG,EAAG,GAAGoC,KAAK,GAElD,OADAuiO,EAAOz8N,MAAQy8N,EAAOx8N,OAAS,EACZ,IAAZ48N,CACT,CAAE,MACA,OAAO,CACT,CACF,CACA,gBAAON,CAAUnjO,EAAON,EAAKgkO,EAAWC,GACtC,KAAO3jO,EAAQ0jO,EAAY,EAAIhkO,GAAK,CAClC,MAAMkkO,EAASzyO,KAAK6W,OAAOhI,EAAQN,GAAO,GACpCmH,EAAS88N,GAAiBC,EAC5B78O,KAAKm8O,aAAaU,EAAQ/8N,GAC5B7G,EAAQ4jO,EAERlkO,EAAMkkO,CAEV,CACA,OAAO5jO,CACT,CACA,wBAAa6jO,CAAYpB,EAASC,GAAS,GACzC,OAAO,IAAIF,GAAaC,EAASC,GAAQoB,cAC3C,CACA,kBAAMA,GACJ,MACEnB,SAAUF,GACR17O,MACE,MACJ6f,EAAK,OACLC,GACE47N,EACJ,GAAI77N,EAAQC,EAAS,EAAI1G,GAAY,CACnC,MAAM4U,EAAShuB,MAAK,IACpB,GAAIguB,EACF,OAAOA,CAEX,CACA,MAAMjU,EAAO/Z,KAAKg9O,aAClB,IAAIvsO,EAASwsO,QACHxB,GAAavkM,oBACrBzmC,EAAU,IAAI/E,aAAa,CACzBqO,OACAxV,KAAM,YACN63C,iBAAiB,EACjB8gM,SAAU,CAACnjO,EAAK3O,UAElB6xO,EAAexsO,EAAQI,SAASsT,OAAMC,IACpC5c,EAAK,8BAA8B4c,KAC5B+4N,kBAAkB,IAAIC,KAAK,CAACp9O,KAAKg9O,aAAa5xO,QAAS,CAC5D7G,KAAM,kBAEP84O,SAAQ,KACT5sO,EAAQooB,OAAO,KAGjBokN,EAAeE,kBAAkB,IAAIC,KAAK,CAACrjO,EAAK3O,QAAS,CACvD7G,KAAM,eAGV,MAAM,SACJ23O,EAAQ,QACRH,GACEN,GACE6B,EAAYlzO,KAAK2D,IAAI8R,EAAQk8N,EAASj8N,EAASi8N,EAAS3xO,KAAKmE,KAAKsR,EAAQC,EAASo8N,IACnFqB,EAAcnzO,KAAK2D,IAAIuvO,EAAW,GAClC31B,EAASv9M,KAAK0U,MAAM,IAAMw+N,EAAY,OAAS,GAAKC,EACpDhtN,EAAInmB,KAAK6W,MAAM7W,KAAKyQ,KAAK8sM,IACzB61B,EAAQ,IAAIp8O,MAAMmvB,EAAI,GAAGgX,KAAK,GACpCi2M,EAAM,GAAKD,EACXC,EAAMtyB,QAAQ,EAAG,EAAGvD,GAAU,GAAKp3L,IACnC,IAAIktN,EAAW59N,EACX69N,EAAY59N,EAChB,MAAMkO,QAAeivN,EACrB,IAAIz/M,EAASxP,EAAOquB,OAASruB,EAC7B,IAAK,MAAM63M,KAAQ2X,EAAO,CACxB,MAAMG,EAAYF,EACZG,EAAaF,EACnBD,EAAWrzO,KAAK6W,MAAMw8N,EAAW5X,GAAQ,EACzC6X,EAAYtzO,KAAK6W,MAAMy8N,EAAY7X,GAAQ,EAC3C,MAAMyW,EAAS,IAAI9wO,gBAAgBiyO,EAAUC,GACjCpB,EAAOE,WAAW,MAC1BqB,UAAUrgN,EAAQ,EAAG,EAAGmgN,EAAWC,EAAY,EAAG,EAAGH,EAAUC,GACnElgN,EAAO3E,QACP2E,EAAS8+M,EAAOwB,uBAClB,CAKA,OAJApC,EAAQ3hO,KAAO,KACf2hO,EAAQl+M,OAASA,EACjBk+M,EAAQ77N,MAAQ49N,EAChB/B,EAAQ57N,OAAS49N,EACVhC,CACT,CACA,KACE,MACEE,SAAUF,GACR17O,MACE,KACJ+Z,EAAI,MACJ8F,EAAK,OACLC,EAAM,KACN0vB,GACEksM,EACEqC,EAAWl+N,EAAQC,EAAS,EAC5BzZ,EAAI+D,KAAK0Q,KAAK1Q,KAAKyQ,KAAKkjO,EAAW3kO,KACnCqkO,EAAW59N,GAASxZ,EACpBq3O,EAAY59N,GAAUzZ,EAC5B,IAAIg1C,EACA2iM,EAAYl+N,EAChB,IACEu7B,EAAW,IAAI1wC,WAAWozO,EAC5B,CAAE,MACA,IAAIxxO,EAAInC,KAAK6W,MAAM7W,KAAKyQ,KAAKkjO,EAAW,IACxC,OACE,IACE1iM,EAAW,IAAI1wC,WAAW,GAAK4B,EAAI,GACnC,KACF,CAAE,MACAA,GAAK,CACP,CAEFyxO,EAAY5zO,KAAK6W,OAAO,GAAK1U,EAAI,IAAc,EAARsT,IACvC,MAAMgkC,EAAUhkC,EAAQm+N,EAAY,EAChCn6L,EAAUxI,EAAS96C,SACrB86C,EAAW,IAAI1wC,WAAWk5C,GAE9B,CACA,MAAM53B,EAAQ,IAAI9gB,YAAYkwC,EAASjwC,QACjC8gB,EAAS,IAAI/gB,YAAYsyO,EAAWC,GAC1C,IAAIhuM,EAAS,EACT1nB,EAAW,EACf,MAAM69M,EAAOz7N,KAAK0Q,KAAKgF,EAASk+N,GAC1BC,EAAYn+N,EAASk+N,GAAc,EAAIl+N,EAASA,EAASk+N,EAC/D,IAAK,IAAIxxN,EAAI,EAAGA,EAAIq5M,EAAMr5M,IAAK,CAC7B,MAAM+mB,EAAI/mB,EAAIq5M,EAAO,EAAImY,EAAYC,IAEnCvuM,UACEH,GAAc,CAChBC,OACA7pB,IAAK5L,EACLiM,KAAMiG,EACNpM,QACAC,OAAQyzB,EACRtD,cAAejwC,KAAK67O,QACpBnsM,YAEF,IAAK,IAAIpuC,EAAI,EAAG0P,EAAKuiC,GAAKltC,EAAG/E,EAAI0P,EAAI1P,IAAK,CACxC,MAAMme,EAAMwM,EAAM1hB,UAAUjJ,GAAK+E,GAAKwZ,GACtC,IAAK,IAAIuI,EAAI,EAAGA,EAAIq1N,EAAUr1N,IAC5B8D,EAAOlE,KAAcvI,EAAI2I,GAAK/hB,EAElC,CACF,CACA,GAAIo1O,GAAaK,iBAAiB2B,EAAUC,GAK1C,OAJAhC,EAAQ3hO,KAAOmS,EACfwvN,EAAQ77N,MAAQ49N,EAChB/B,EAAQ57N,OAAS49N,EACjBhC,EAAQlsM,KA543BA,EA643BD,KAET,MAAM8sM,EAAS,IAAI9wO,gBAAgBiyO,EAAUC,GAS7C,OARYpB,EAAOE,WAAW,KAAM,CAClC0B,oBAAoB,IAElBC,aAAa,IAAIC,UAAU,IAAIt4N,kBAAkBoG,EAAO9gB,QAASqyO,EAAUC,GAAY,EAAG,GAC9FhC,EAAQ3hO,KAAO,KACf2hO,EAAQl+M,OAAS8+M,EAAOwB,wBACxBpC,EAAQ77N,MAAQ49N,EAChB/B,EAAQ57N,OAAS49N,EACVhC,CACT,CACA,UAAAsB,GACE,MAAM,MACJn9N,EAAK,OACLC,EAAM,KACN0vB,GACExvC,KAAK47O,SACT,IACIyC,EADAtkO,EAAO/Z,KAAK47O,SAAS7hO,KAErBukO,EAAa,IAAI3zO,WAAW,GAC5B4zO,EAAYD,EACZE,EAAc,EAClB,OAAQhvM,GACN,KAx63BY,EAy63BV,CACE6uM,EAAc,EACdC,EAAa,IAAI3zO,WAAW3K,KAAK67O,QAAU,CAAC,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,MAC1G,MAAM4C,EAAS5+N,EAAQ,GAAK,EACtBynB,EAAUm3M,EAAS,GAAK,EAC9B,GAAIA,IAAWn3M,EAAS,CACtB,MAAMo3M,EAAU,IAAI/zO,WAAW28B,EAAUxnB,GACzC,IAAI0M,EAAI,EACR,IAAK,IAAIlrB,EAAI,EAAG0P,EAAK8O,EAAS2+N,EAAQn9O,EAAI0P,EAAI1P,GAAKm9O,EAAQjyN,GAAK8a,EAC9Do3M,EAAQ3pO,IAAIgF,EAAKxP,SAASjJ,EAAGA,EAAIm9O,GAASjyN,GAE5CzS,EAAO2kO,CACT,CACA,KACF,CACF,KAv73BO,EA073BH,GADAL,EAAc,GACF,EAARx+N,EAAW,CACb,MAAM4+N,EAAS,EAAI5+N,EACbynB,EAAUm3M,EAAS,GAAK,EACxBE,EAAWr3M,EAAUm3M,EACrBC,EAAU,IAAI/zO,WAAW28B,EAAUxnB,GACzC,IAAI0M,EAAI,EACR,IAAK,IAAIlrB,EAAI,EAAG0P,EAAK8O,EAAS2+N,EAAQn9O,EAAI0P,EAAI1P,GAAKm9O,EAAQ,CACzD,MAAMzoN,EAAMjc,EAAKxP,SAASjJ,EAAGA,EAAIm9O,GACjC,IAAK,IAAIr2N,EAAI,EAAGA,EAAIq2N,EAAQr2N,GAAK,EAC/Bs2N,EAAQlyN,KAAOwJ,EAAI5N,EAAI,GACvBs2N,EAAQlyN,KAAOwJ,EAAI5N,EAAI,GACvBs2N,EAAQlyN,KAAOwJ,EAAI5N,GAErBoE,GAAKmyN,CACP,CACA5kO,EAAO2kO,CACT,MACE,IAAK,IAAIp9O,EAAI,EAAG0P,EAAK+I,EAAKxZ,OAAQe,EAAI0P,EAAI1P,GAAK,EAAG,CAChD,MAAM0wB,EAAMjY,EAAKzY,GACjByY,EAAKzY,GAAKyY,EAAKzY,EAAI,GACnByY,EAAKzY,EAAI,GAAK0wB,CAChB,CAEF,MAEJ,KAl93BQ,EAm93BNqsN,EAAc,GACdG,EAAc,EACdD,EAAY,IAAI5zO,WAAW,IAC3B,MAAMi0O,EAAO,IAAIl4B,SAAS63B,EAAUnzO,QAChCJ,EAAYC,gBACd2zO,EAAK33B,UAAU,EAAG,KAAY,GAC9B23B,EAAK33B,UAAU,EAAG,OAAY,GAC9B23B,EAAK33B,UAAU,EAAG,UAAY,GAC9B23B,EAAK33B,UAAU,GAAI,YAAY,KAE/B23B,EAAK33B,UAAU,EAAG,YAAY,GAC9B23B,EAAK33B,UAAU,EAAG,UAAY,GAC9B23B,EAAK33B,UAAU,EAAG,OAAY,GAC9B23B,EAAK33B,UAAU,GAAI,KAAY,IAEjC,MACF,QACE,MAAM,IAAIxnN,MAAM,kBAEpB,IAAI6B,EAAI,EACR,MAAMu9O,EAAe,GAAKN,EAAUh+O,OAC9Bu+O,EAAa,GAAKD,EAAeP,EAAW/9O,OAASwZ,EAAKxZ,OAC1Dw+O,EAAU,IAAIp0O,WAAWm0O,GACzBF,EAAO,IAAIl4B,SAASq4B,EAAQ3zO,QAoClC,OAnCAwzO,EAAK13B,UAAU5lN,EAAG,OAAQ,GAC1BA,GAAK,EACLs9O,EAAK33B,UAAU3lN,EAAGw9O,GAAY,GAC9Bx9O,GAAK,EACLs9O,EAAK33B,UAAU3lN,EAAG,GAAG,GACrBA,GAAK,EACLs9O,EAAK33B,UAAU3lN,EAAG,GAAKu9O,EAAeP,EAAW/9O,QAAQ,GACzDe,GAAK,EACLs9O,EAAK33B,UAAU3lN,EAAGu9O,GAAc,GAChCv9O,GAAK,EACLs9O,EAAKI,SAAS19O,EAAGue,GAAO,GACxBve,GAAK,EACLs9O,EAAKI,SAAS19O,GAAIwe,GAAQ,GAC1Bxe,GAAK,EACLs9O,EAAK13B,UAAU5lN,EAAG,GAAG,GACrBA,GAAK,EACLs9O,EAAK13B,UAAU5lN,EAAG+8O,GAAa,GAC/B/8O,GAAK,EACLs9O,EAAK33B,UAAU3lN,EAAGk9O,GAAa,GAC/Bl9O,GAAK,EACLs9O,EAAK33B,UAAU3lN,EAAG,GAAG,GACrBA,GAAK,EACLs9O,EAAKI,SAAS19O,EAAG,GAAG,GACpBA,GAAK,EACLs9O,EAAKI,SAAS19O,EAAG,GAAG,GACpBA,GAAK,EACLs9O,EAAK33B,UAAU3lN,EAAGg9O,EAAW/9O,OAAS,GAAG,GACzCe,GAAK,EACLs9O,EAAK33B,UAAU3lN,EAAG,GAAG,GACrBA,GAAK,EACLy9O,EAAQhqO,IAAIwpO,EAAWj9O,GACvBA,GAAKi9O,EAAUh+O,OACfw+O,EAAQhqO,IAAIupO,EAAYh9O,GACxBA,GAAKg9O,EAAW/9O,OAChBw+O,EAAQhqO,IAAIgF,EAAMzY,GACXy9O,CACT,EAIF,MAAME,GAAO,WACPC,GAAY,WACZC,GAAW,MACjB,MAAMC,GACJ,WAAAn2O,CAAYo2O,GACVr/O,KAAK0nB,GAAK23N,EAAc,WAAPA,EAAoBJ,GACrCj/O,KAAK4nB,GAAKy3N,EAAc,WAAPA,EAAoBJ,EACvC,CACA,MAAAK,CAAOrrN,GACL,IAAIla,EAAMxZ,EACV,GAAqB,iBAAV0zB,EAAoB,CAC7Bla,EAAO,IAAIpP,WAA0B,EAAfspB,EAAM1zB,QAC5BA,EAAS,EACT,IAAK,IAAIe,EAAI,EAAG0P,EAAKijB,EAAM1zB,OAAQe,EAAI0P,EAAI1P,IAAK,CAC9C,MAAM6H,EAAO8qB,EAAMrpB,WAAWtJ,GAC1B6H,GAAQ,IACV4Q,EAAKxZ,KAAY4I,GAEjB4Q,EAAKxZ,KAAY4I,IAAS,EAC1B4Q,EAAKxZ,KAAmB,IAAP4I,EAErB,CACF,KAAO,KAAIoS,YAAYC,OAAOyY,GAI5B,MAAM,IAAIx0B,MAAM,wDAHhBsa,EAAOka,EAAMrmB,QACbrN,EAASwZ,EAAKD,UAGhB,CACA,MAAMylO,EAAch/O,GAAU,EACxBi/O,EAAaj/O,EAAuB,EAAdg/O,EACtBE,EAAa,IAAIt0O,YAAY4O,EAAK3O,OAAQ,EAAGm0O,GACnD,IAAIG,EAAK,EACPC,EAAK,EACHj4N,EAAK1nB,KAAK0nB,GACZE,EAAK5nB,KAAK4nB,GACZ,MAAMg4N,EAAK,WACTC,EAAK,UACDC,EAASF,MACbG,EAASF,MACX,IAAK,IAAIv+O,EAAI,EAAGA,EAAIi+O,EAAaj+O,IACvB,EAAJA,GACFo+O,EAAKD,EAAWn+O,GAChBo+O,EAAKA,EAAKE,EAAKV,GAAYQ,EAAKI,EAASX,GACzCO,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKG,EAAKX,GAAYQ,EAAKK,EAASZ,GACzCz3N,GAAMg4N,EACNh4N,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAU,EAALA,EAAS,aAEdi4N,EAAKF,EAAWn+O,GAChBq+O,EAAKA,EAAKC,EAAKV,GAAYS,EAAKG,EAASX,GACzCQ,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKE,EAAKX,GAAYS,EAAKI,EAASZ,GACzCv3N,GAAM+3N,EACN/3N,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAU,EAALA,EAAS,YAIlB,OADA83N,EAAK,EACGF,GACN,KAAK,EACHE,GAAM3lO,EAAmB,EAAdwlO,EAAkB,IAAM,GACrC,KAAK,EACHG,GAAM3lO,EAAmB,EAAdwlO,EAAkB,IAAM,EACrC,KAAK,EACHG,GAAM3lO,EAAmB,EAAdwlO,GACXG,EAAKA,EAAKE,EAAKV,GAAYQ,EAAKI,EAASX,GACzCO,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKG,EAAKX,GAAYQ,EAAKK,EAASZ,GACvB,EAAdI,EACF73N,GAAMg4N,EAEN93N,GAAM83N,EAGZ1/O,KAAK0nB,GAAKA,EACV1nB,KAAK4nB,GAAKA,CACZ,CACA,SAAAo4N,GACE,IAAIt4N,EAAK1nB,KAAK0nB,GACZE,EAAK5nB,KAAK4nB,GAQZ,OAPAF,GAAME,IAAO,EACbF,EAAU,WAALA,EAAkBw3N,GAAiB,MAALx3N,EAAcy3N,GACjDv3N,EAAU,WAALA,EAAkBs3N,IAAsC,YAAxBt3N,GAAM,GAAKF,IAAO,IAAmBw3N,MAAe,GACzFx3N,GAAME,IAAO,EACbF,EAAU,UAALA,EAAkBw3N,GAAiB,MAALx3N,EAAcy3N,GACjDv3N,EAAU,WAALA,EAAkBs3N,IAAsC,YAAxBt3N,GAAM,GAAKF,IAAO,IAAmBw3N,MAAe,GACzFx3N,GAAME,IAAO,GACLF,IAAO,GAAGlb,SAAS,IAAIC,SAAS,EAAG,MAAQmb,IAAO,GAAGpb,SAAS,IAAIC,SAAS,EAAG,IACxF,EAKF,SAASwzO,GAASC,EAAaC,EAASC,EAASC,EAAWC,GAC1D,IAAI/1L,EAAQ21L,EACZ,IAAK,IAAI5+O,EAAI,EAAG0P,EAAKmvO,EAAQ5/O,OAAS,EAAGe,EAAI0P,EAAI1P,IAAK,CACpD,MAAM0Y,EAAOmmO,EAAQ7+O,GACrBipD,EAAQA,EAAMvwC,KAAU,EAC1B,CACAuwC,EAAM41L,EAAQ/iN,IAAI,IAAM,CACtBgjN,UACAC,YACAC,YAEJ,CACA,MAAMC,GAAe,GACrBN,GAASM,GAAc,CAACt5O,EAAUA,EAj83BP,GAi83BmDA,GAAc,MAAM,SAAiC+/N,EAAS1lO,GAC1I,MAAMwxO,EAAU9L,EAAQ8L,QAElB36N,GAAO7W,GADM0lO,EAAQwZ,MAAQ,IACJ,EAC/B,OAAQroO,GACN,KAAK,EACH,OAAO26N,EAAQxxO,KAAO2F,EACxB,KAAK,EACH,OAAO6rO,EAAQxxO,KAAO2F,EACxB,KAAK,EACH,OA383BqB,KA283Bd6rO,EAAQxxO,GACjB,KAAK,EACH,OAAOwxO,EAAQxxO,KAAO2F,EAE1B,MAAM,IAAIxH,MAAM,0CAA0C0Y,IAC5D,IAAG,SAA+B6uN,EAAS1lO,GACzC,MAIMwxO,EAAU9L,EAAQ8L,QACtB2N,EAAYzZ,EAAQyZ,UAChB57L,EAAOmiL,EAAQwZ,MACfE,EAAa77L,EAAO,EACpB87L,EAAkB97L,EAAO,EACzB+7L,EAAc/7L,EAAO,EACrB1+B,EAAQ/b,KAAKC,IAAID,KAAK6W,OAAO3f,EAAIo/O,GAAc,GATX,KAU1C,GAAIv6N,EAXsC,GAYxC,OAAO7kB,GAAKA,EAAIo/O,GAAc,EAEhC,IAAIpiN,EAAO,EACX,MAAMriB,EAAM,GACZ,IAAI4kO,EAAgB,EAChBC,EAdkB,EAepBC,EAfoB,EAgBtB,IAAK,IAAIh1N,EAAI,EAAGA,EAAI5F,EAAO4F,IAAK,CAC9B,MAAM/e,EAAYyzO,EAAUE,GAAmB50N,GAAK,IAC9Ci1N,EAAMP,EAAUG,GAAe70N,GAAK,IAAI,GAC1C+0N,EAAWE,EAAInhO,MApBH,MAqBdye,EAAOl0B,KAAK2D,IAAIuwB,EAAMwiN,GACtBC,GAAYF,EAAgB,EAC5BC,EAAW,EACXD,EAAgB,GAElB5kO,EAAI1a,KAAK,CACPyL,YACA+C,EAAG+wO,EACH9wO,EAAG+wO,EACHhtD,EAAGitD,EAAInhO,MACP0zB,EAAGytM,EAAIlhO,SAETghO,GAAYE,EAAInhO,MAAQ,EACxBghO,EAAgBz2O,KAAK2D,IAAI8yO,EAAeG,EAAIlhO,OAC9C,CACA,MAAMmhO,EAAW72O,KAAK2D,IAAIuwB,EAAMwiN,GAnCV,EAoChBI,EAAYH,EAAWF,EApCP,EAqChBnF,EAAU,IAAI/wO,WAAWs2O,EAAWC,EAAY,GAChDC,EAAaF,GAAY,EAC/B,IAAK,IAAIl1N,EAAI,EAAGA,EAAI5F,EAAO4F,IAAK,CAC9B,MAAMhS,EAAO0mO,EAAUG,GAAe70N,GAAK,IAAI,GAAGhS,KAC5CutB,EAAUrrB,EAAI8P,GAAGgoK,GAAK,EAC5B,IAAI93H,EAAa,EACbjhD,EAASiB,EAAI8P,GAAGhc,EAAIkM,EAAI8P,GAAG/b,EAAIixO,GAAY,EAC/CvF,EAAQ3mO,IAAIgF,EAAKxP,SAAS,EAAG+8B,GAAUtsB,EAASmmO,GAChD,IAAK,IAAI30N,EAAI,EAAGm8B,EAAK1sC,EAAI8P,GAAGwnB,EAAG/mB,EAAIm8B,EAAIn8B,IACrCkvN,EAAQ3mO,IAAIgF,EAAKxP,SAAS0xD,EAAYA,EAAa30B,GAAUtsB,GAC7DihD,GAAc30B,EACdtsB,GAAUmmO,EAGZ,IADAzF,EAAQ3mO,IAAIgF,EAAKxP,SAAS0xD,EAAa30B,EAAS20B,GAAajhD,GACtDA,GAAU,GACfjB,EAAKiB,EAAS,GAAKjB,EAAKiB,GACxBjB,EAAKiB,EAAS,GAAKjB,EAAKiB,EAAS,GACjCjB,EAAKiB,EAAS,GAAKjB,EAAKiB,EAAS,GACjCjB,EAAKiB,EAAS,GAAKjB,EAAKiB,EAAS,GACjCjB,EAAKiB,EAASssB,GAAWvtB,EAAKiB,EAASssB,EAAU,GACjDvtB,EAAKiB,EAASssB,EAAU,GAAKvtB,EAAKiB,EAASssB,EAAU,GACrDvtB,EAAKiB,EAASssB,EAAU,GAAKvtB,EAAKiB,EAASssB,EAAU,GACrDvtB,EAAKiB,EAASssB,EAAU,GAAKvtB,EAAKiB,EAASssB,EAAU,GACrDtsB,GAAUmmO,CAEd,CACA,MAAMH,EAAM,CACVnhO,MAAOohO,EACPnhO,OAAQohO,GAEV,GAAIla,EAAQz7N,2BAA4B,CACtC,MAAM+wO,EAAS,IAAI9wO,gBAAgBy1O,EAAUC,GACjC5E,EAAOE,WAAW,MAC1B2B,aAAa,IAAIC,UAAU,IAAIt4N,kBAAkB41N,EAAQtwO,QAAS61O,EAAUC,GAAY,EAAG,GAC/FF,EAAIxjN,OAAS8+M,EAAOwB,wBACpBkD,EAAIjnO,KAAO,IACb,MACEinO,EAAIxxM,KA3t4BM,EA4t4BVwxM,EAAIjnO,KAAO2hO,EAIb,OAFA5I,EAAQ5nB,OAAOw1B,EAAoB,EAARv6N,EAhi4BG,IAii4B9Bs6N,EAAUv1B,OAAOw1B,EAAoB,EAARv6N,EAAW,CAAC66N,EAAK/kO,IACvCykO,EAAa,CACtB,IACAT,GAASM,GAAc,CAACt5O,EAAUA,EAAeA,EAA2BA,GAAc,MAAM,SAA+B+/N,EAAS1lO,GACtI,MAAMwxO,EAAU9L,EAAQ8L,QAElB36N,GAAO7W,GADM0lO,EAAQwZ,MAAQ,IACJ,EAC/B,OAAQroO,GACN,KAAK,EACH,OAAO26N,EAAQxxO,KAAO2F,EACxB,KAAK,EACH,OAAO6rO,EAAQxxO,KAAO2F,EACxB,KAAK,EACH,OAAO6rO,EAAQxxO,KAAO2F,EACxB,KAAK,EACH,OAAO6rO,EAAQxxO,KAAO2F,EAE1B,MAAM,IAAIxH,MAAM,wCAAwC0Y,IAC1D,IAAG,SAA6B6uN,EAAS1lO,GACvC,MAGMwxO,EAAU9L,EAAQ8L,QACtB2N,EAAYzZ,EAAQyZ,UAChB57L,EAAOmiL,EAAQwZ,MACfE,EAAa77L,EAAO,EACpB87L,EAAkB97L,EAAO,EACzBu8L,EAAcv8L,EAAO,EAC3B,IAAI1+B,EAAQ/b,KAAK6W,OAAO3f,EAAIo/O,GAAc,GAC1C,GAAIv6N,EAV8B,GAWhC,OAAO7kB,GAAKA,EAAIo/O,GAAc,EAEhC,IACIW,EAAYC,EADZC,GAAc,EAElB,MAAMC,EAAiBf,EAAUW,GAAa,GACxCK,EAAqBhB,EAAUE,GAAiB,GACpDe,EAAqBjB,EAAUE,GAAiB,GAChDgB,EAAqBlB,EAAUE,GAAiB,GAChDiB,EAAqBnB,EAAUE,GAAiB,GAClD,GAAIe,IAAuBC,EAAoB,CAC7CJ,GAAc,EACdF,EAAaV,EAAkB,EAC/B,IAAIkB,EAAST,EAAc,EAC3B,IAAK,IAAIr1N,EAAI,EAAGA,EAAI5F,EAAO4F,IAAKs1N,GAAc,EAAGQ,GAAU,EAEzD,GADAP,EAAgBb,EAAUY,GACtBZ,EAAUoB,GAAQ,KAAOL,GAAkBF,EAAc,KAAOG,GAAsBH,EAAc,KAAOI,GAAsBJ,EAAc,KAAOK,GAAsBL,EAAc,KAAOM,EAAoB,CACnN71N,EA3BwB,GA4B1Bw1N,GAAc,EAEdp7N,EAAQ4F,EAEV,KACF,CAEJ,CACA,GAAIw1N,EAAa,CACfp7N,EAAQ/b,KAAKC,IAAI8b,EAnCoB,KAoCrC,MAAM09M,EAAY,IAAIv4M,aAAqB,EAARnF,GACnCk7N,EAAaV,EACb,IAAK,IAAI50N,EAAI,EAAGA,EAAI5F,EAAO4F,IAAKs1N,GAAc,EAC5CC,EAAgBb,EAAUY,GAC1Bxd,EAAU93M,GAAK,GAAKu1N,EAAc,GAClCzd,EAAqB,GAAV93M,GAAK,IAAUu1N,EAAc,GAE1CxO,EAAQ5nB,OAAOw1B,EAAoB,EAARv6N,EA/l4BA,IAgm4B3Bs6N,EAAUv1B,OAAOw1B,EAAoB,EAARv6N,EAAW,CAACq7N,EAAgBC,EAAoBC,EAAoBC,EAAoBC,EAAoB/d,GAC3I,KAAO,CACL19M,EAAQ/b,KAAKC,IAAI8b,EA/Ce,KAgDhC,MAAM27N,EAAS,GACf,IAAK,IAAI/1N,EAAI,EAAGA,EAAI5F,EAAO4F,IAAK,CAC9Bu1N,EAAgBb,EAAUE,GAAmB50N,GAAK,IAClD,MAAMg2N,EAAatB,EAAUW,GAAer1N,GAAK,IAAI,GACrD+1N,EAAOvgP,KAAK,CACVwY,KAAMgoO,EAAWhoO,KACjB8F,MAAOkiO,EAAWliO,MAClBC,OAAQiiO,EAAWjiO,OACnBkzN,YAAa+O,EAAW/O,YACxB7sN,MAAO47N,EAAW57N,MAClBnZ,UAAWs0O,GAEf,CACAxO,EAAQ5nB,OAAOw1B,EAAoB,EAARv6N,EArn4BD,IAsn4B1Bs6N,EAAUv1B,OAAOw1B,EAAoB,EAARv6N,EAAW,CAAC27N,GAC3C,CACA,OAAOpB,EAAa,CACtB,IACAT,GAASM,GAAc,CAACt5O,EAAUA,EAAeA,EAAuBA,IAAc,SAAU+/N,GAC9F,MAAMyZ,EAAYzZ,EAAQyZ,UACpBE,EAAkB3Z,EAAQwZ,MAAQ,EACxC,OAAyC,IAAlCC,EAAUE,GAAiB,IAA8C,IAAlCF,EAAUE,GAAiB,EAC3E,IAAG,SAA2B3Z,EAAS1lO,GACrC,MAAMwxO,EAAU9L,EAAQ8L,QACtB2N,EAAYzZ,EAAQyZ,UAEhBtoO,GAAO7W,GADM0lO,EAAQwZ,MAAQ,IACJ,EAC/B,OAAQroO,GACN,KAAK,EACH,OAAO26N,EAAQxxO,KAAO2F,EACxB,KAAK,EACH,GAAI6rO,EAAQxxO,KAAO2F,EACjB,OAAO,EAET,MAAM05O,EAAkB3Z,EAAQwZ,MAAQ,EAClCiB,EAAqBhB,EAAUE,GAAiB,GAChDiB,EAAqBnB,EAAUE,GAAiB,GACtD,OAAIF,EAAUn/O,GAAG,KAAOmgP,GAA0C,IAApBhB,EAAUn/O,GAAG,IAAgC,IAApBm/O,EAAUn/O,GAAG,IAAYm/O,EAAUn/O,GAAG,KAAOsgP,EAItH,KAAK,EACH,GAAI9O,EAAQxxO,KAAO2F,EACjB,OAAO,EAET,MACM+6O,EAAgBvB,EADHzZ,EAAQwZ,MAAQ,GACS,GAC5C,OAAIC,EAAUn/O,GAAG,KAAO0gP,EAI1B,KAAK,EACH,OAAOlP,EAAQxxO,KAAO2F,EAE1B,MAAM,IAAIxH,MAAM,oCAAoC0Y,IACtD,IAAG,SAAU6uN,EAAS1lO,GACpB,MAEMwxO,EAAU9L,EAAQ8L,QACtB2N,EAAYzZ,EAAQyZ,UAChB57L,EAAOmiL,EAAQwZ,MACfE,EAAa77L,EAAO,EACpB87L,EAAkB97L,EAAO,EAEzBm9L,EAAgBvB,EADH57L,EAAO,GACkB,GACtC48L,EAAqBhB,EAAUE,GAAiB,GAChDiB,EAAqBnB,EAAUE,GAAiB,GAChDx6N,EAAQ/b,KAAKC,IAAID,KAAK6W,OAAO3f,EAAIo/O,GAAc,GAVzB,KAW5B,GAAIv6N,EAZwB,EAa1B,OAAO7kB,GAAKA,EAAIo/O,GAAc,EAEhC,MAAM7c,EAAY,IAAIv4M,aAAqB,EAARnF,GACnC,IAAIk7N,EAAaV,EACjB,IAAK,IAAI50N,EAAI,EAAGA,EAAI5F,EAAO4F,IAAKs1N,GAAc,EAAG,CAC/C,MAAMC,EAAgBb,EAAUY,GAChCxd,EAAU93M,GAAK,GAAKu1N,EAAc,GAClCzd,EAAqB,GAAV93M,GAAK,IAAUu1N,EAAc,EAC1C,CACA,MAAMngP,EAAO,CAAC6gP,EAAeP,EAAoBG,EAAoB/d,GAGrE,OAFAiP,EAAQ5nB,OAAOw1B,EAAoB,EAARv6N,EAnr4BF,IAor4BzBs6N,EAAUv1B,OAAOw1B,EAAoB,EAARv6N,EAAWhlB,GACjCu/O,EAAa,CACtB,IACAT,GAASM,GAAc,CA7u4BV,GA6u4B0Bt5O,EAlu4BtB,GAku4BsDA,EA5u4B5D,IA4u4BwF,MAAM,SAA8B+/N,EAAS1lO,GAC9I,MAAMwxO,EAAU9L,EAAQ8L,QACtB2N,EAAYzZ,EAAQyZ,UAEhBtoO,GAAO7W,GADM0lO,EAAQwZ,MAAQ,IACJ,EAC/B,OAAQroO,GACN,KAAK,EACH,OApv4BO,KAov4BA26N,EAAQxxO,GACjB,KAAK,EACH,OAAOwxO,EAAQxxO,KAAO2F,EACxB,KAAK,EACH,OA7u4BW,KA6u4BJ6rO,EAAQxxO,GACjB,KAAK,EACH,GAAIwxO,EAAQxxO,KAAO2F,EACjB,OAAO,EAET,MAAMg7O,EAAgBjb,EAAQwZ,MAAQ,EAChC0B,EAAmBzB,EAAUwB,GAAe,GAC5CE,EAAmB1B,EAAUwB,GAAe,GAClD,OAAIxB,EAAUn/O,GAAG,KAAO4gP,GAAoBzB,EAAUn/O,GAAG,KAAO6gP,EAIlE,KAAK,EACH,OApw4BK,KAow4BErP,EAAQxxO,GAEnB,MAAM,IAAI7B,MAAM,uCAAuC0Y,IACzD,IAAG,SAAU6uN,EAAS1lO,GACpB,MAEMwxO,EAAU9L,EAAQ8L,QACtB2N,EAAYzZ,EAAQyZ,UAChB57L,EAAOmiL,EAAQwZ,MACf4B,EAAkBv9L,EAAO,EACzBo9L,EAAgBp9L,EAAO,EACvBw9L,EAAsBx9L,EAAO,EAC7By9L,EAAiBz9L,EAAO,EACxB09L,EAAgB19L,EAChBq9L,EAAmBzB,EAAUwB,GAAe,GAC5CE,EAAmB1B,EAAUwB,GAAe,GAClD,IAAI97N,EAAQ/b,KAAKC,IAAID,KAAK6W,OAAO3f,EAAI8gP,GAAmB,GAX7B,KAY3B,GAAIj8N,EAbuB,EAczB,OAAO7kB,GAAKA,EAAI8gP,GAAmB,EAErC,IAAII,EAASJ,EACTA,GAAmB,GAAKtP,EAAQsP,EAAkB,KAAOtP,EAAQmP,IAAkBnP,EAAQsP,EAAkB,KAAOtP,EAAQuP,IAAwBvP,EAAQsP,EAAkB,KAAOtP,EAAQwP,IAAmBxP,EAAQsP,EAAkB,KAAOtP,EAAQyP,IAAkB9B,EAAU2B,EAAkB,GAAG,KAAOF,GAAoBzB,EAAU2B,EAAkB,GAAG,KAAOD,IAC7Wh8N,IACAq8N,GAAU,GAEZ,IAAIC,EAAWD,EAAS,EACxB,IAAK,IAAIz2N,EAAI,EAAGA,EAAI5F,EAAO4F,IACzB+mN,EAAQ5nB,OAAOu3B,EAAU,GACzBhC,EAAUv1B,OAAOu3B,EAAU,GAC3BA,GAAY,EAEd,OAAOA,EAAW,CACpB,IACA,MAAMC,GACJ,WAAAz5O,CAAY9I,GACVH,KAAKG,MAAQA,CACf,CACA,SAAAwiP,GAAa,CACb,IAAAphP,CAAKqR,EAAIzR,GACPnB,KAAKG,MAAM2yO,QAAQvxO,KAAKqR,GACxB5S,KAAKG,MAAMsgP,UAAUl/O,KAAKJ,GAC1BnB,KAAK2iP,WACP,CACA,KAAAC,GAAS,CACT,KAAA9pO,GAAS,EAEX,MAAM+pO,WAAuBH,GAC3B,WAAAz5O,CAAY9I,GACViJ,MAAMjJ,GACNH,KAAKuqD,MAAQ,KACbvqD,KAAKgnO,QAAU,CACbwZ,MAAO,EACP1N,QAAS3yO,EAAM2yO,QACf2N,UAAWtgP,EAAMsgP,UACjBl1O,4BAA4B,GAE9BvL,KAAKmI,MAAQ,KACbnI,KAAK8iP,cAAgB,CACvB,CACA,8BAAIv3O,CAA2B5C,GAC7B3I,KAAKgnO,QAAQz7N,2BAA6B5C,CAC5C,CACA,SAAAg6O,GACE,MAAM7P,EAAU9yO,KAAKG,MAAM2yO,QAC3B,IAAIxxO,EAAItB,KAAK8iP,cACX9xO,EAAK8hO,EAAQvyO,OACXgqD,EAAQvqD,KAAKuqD,MACbpiD,EAAQnI,KAAKmI,MACjB,IAAKoiD,IAAUpiD,GAAS7G,EAAI,IAAM0P,IAAOuvO,GAAazN,EAAQxxO,IAE5D,YADAtB,KAAK8iP,cAAgB9xO,GAGvB,MAAMg2N,EAAUhnO,KAAKgnO,QACrB,KAAO1lO,EAAI0P,GAAI,CACb,GAAI7I,EAAO,CAET,IADgB,EAAIA,EAAMk4O,WAAWrZ,EAAS1lO,GACjC,CACXA,IACA,QACF,CAKA,GAJAA,GAAI,EAAI6G,EAAMm4O,WAAWtZ,EAAS1lO,EAAI,GACtC0P,EAAK8hO,EAAQvyO,OACb4H,EAAQ,KACRoiD,EAAQ,KACJjpD,GAAK0P,EACP,KAEJ,CACAu5C,GAASA,GAASg2L,IAAczN,EAAQxxO,IACnCipD,IAASnpD,MAAMsT,QAAQ61C,IAI5By8K,EAAQwZ,MAAQl/O,EAChBA,KACIipD,EAAM61L,UAAY,EAAI71L,EAAM61L,SAASpZ,IAIzC7+N,EAAQoiD,EACRA,EAAQ,MAJNA,EAAQ,MANRjpD,GAWJ,CACAtB,KAAKuqD,MAAQA,EACbvqD,KAAKmI,MAAQA,EACbnI,KAAK8iP,cAAgBxhP,CACvB,CACA,KAAAshP,GACE,KAAO5iP,KAAKmI,OAAO,CACjB,MAAM5H,EAASP,KAAKG,MAAM2yO,QAAQvyO,OAClCP,KAAK8iP,eAAgB,EAAI9iP,KAAKmI,MAAMm4O,WAAWtgP,KAAKgnO,QAASzmO,GAC7DP,KAAKmI,MAAQ,KACbnI,KAAKuqD,MAAQ,KACbvqD,KAAK2iP,WACP,CACF,CACA,KAAA7pO,GACE9Y,KAAKuqD,MAAQ,KACbvqD,KAAKmI,MAAQ,KACbnI,KAAK8iP,cAAgB,CACvB,EAEF,MAAMC,GACJ51N,kBAAoB,IACpBA,wBAA0BntB,KAAKgjP,WAAa,EAC5C,WAAA/5O,CAAYg6O,EAAS,EAAGC,GACtBljP,KAAKmjP,YAAcD,EACnBljP,KAAK8yO,QAAU,GACf9yO,KAAKygP,UAAY,GACjBzgP,KAAKojP,WAAYF,GAxk5BX,IAwk5B2BD,EAAkE,IAAIP,GAAc1iP,MAA7C,IAAI6iP,GAAe7iP,MAC3FA,KAAKqjP,aAAe,IAAI/sO,IACxBtW,KAAKsjP,aAAe,EACpBtjP,KAAKqe,OAAS,EACdre,KAAKujP,UAAYL,EAAa,KAAOxwO,QAAQG,SAC/C,CACA,8BAAItH,CAA2B5C,GAC7B3I,KAAKojP,UAAU73O,2BAA6B5C,CAC9C,CACA,UAAIpI,GACF,OAAOP,KAAKygP,UAAUlgP,MACxB,CACA,SAAIm4B,GACF,OAAO14B,KAAKujP,WAAavjP,KAAKmjP,YAAYzqN,KAC5C,CACA,eAAII,GACF,OAAO94B,KAAKsjP,aAAetjP,KAAKO,MAClC,CACA,KAAAijP,CAAM5wO,EAAIzR,GACRnB,KAAKojP,UAAU7hP,KAAKqR,EAAIzR,GACxBnB,KAAKqe,SACDre,KAAKmjP,cACHnjP,KAAKqe,QAAU0kO,GAAaC,YAErBhjP,KAAKqe,QAAU0kO,GAAaU,mBAAqB7wO,IAAO3L,GA554B9D,KA454B6E2L,KADhF5S,KAAK4iP,OAKX,CACA,WAAAc,CAAY9wO,EAAIzR,EAAMwiP,EAAiBC,GAAU,GAC3CA,IACF5jP,KAAKwjP,MAAMv8O,GACXjH,KAAKwjP,MA374BE,EA274BmB,CAAC,CAAC,CAAC,SAAS,YAEhBpgP,IAApBugP,GACF3jP,KAAKwjP,MAAMv8O,EAA6B,CAAC,KAAM08O,IAEjD3jP,KAAKwjP,MAAM5wO,EAAIzR,QACSiC,IAApBugP,GACF3jP,KAAKwjP,MAAMv8O,EAAsB,IAE/B28O,GACF5jP,KAAKwjP,MAAMv8O,EAEf,CACA,aAAA48O,CAAcC,GACR9jP,KAAKqjP,aAAaruO,IAAI8uO,KAG1B9jP,KAAKqjP,aAAa7sO,IAAIstO,GACtB9jP,KAAKwjP,MAr94BK,EAq94BiB,CAACM,IAC9B,CACA,eAAAC,CAAgBV,GACd,IAAK,MAAMS,KAAcT,EACvBrjP,KAAK6jP,cAAcC,EAEvB,CACA,SAAAE,CAAUC,GACR,GAAMA,aAAkBlB,GAAxB,CAIA,IAAK,MAAMe,KAAcG,EAAOZ,aAC9BrjP,KAAKqjP,aAAa7sO,IAAIstO,GAExB,IAAK,IAAIxiP,EAAI,EAAG0P,EAAKizO,EAAO1jP,OAAQe,EAAI0P,EAAI1P,IAC1CtB,KAAKwjP,MAAMS,EAAOnR,QAAQxxO,GAAI2iP,EAAOxD,UAAUn/O,GALjD,MAFEkG,EAAK,mDAST,CACA,KAAAq9N,GACE,MAAO,CACLiO,QAAS9yO,KAAK8yO,QACd2N,UAAWzgP,KAAKygP,UAChBlgP,OAAQP,KAAKO,OAEjB,CACA,cAAI2jP,GACF,MAAMC,EAAY,IACZ,QACJrR,EAAO,UACP2N,EAAS,OACTlgP,GACEP,KACJ,IAAK,IAAIsB,EAAI,EAAGA,EAAIf,EAAQe,IAC1B,OAAQwxO,EAAQxxO,IACd,KAt64BmB,GAu64BnB,KAt64BwB,GAu64BxB,KAAK2F,EACH,MAAMyvO,EAAM+J,EAAUn/O,GAAG,IACpBo1O,EAAI0N,QAAU1N,EAAI38N,MAAM3O,kBAAkBmQ,aAC7C4oO,EAAU5iP,KAAKm1O,EAAI38N,KAAK3O,QAKhC,OAAO+4O,CACT,CACA,KAAAvB,CAAMz9N,GAAY,EAAOk/N,EAAiB,MACxCrkP,KAAKojP,UAAUR,QACf,MAAMriP,EAASP,KAAKO,OACpBP,KAAKsjP,cAAgB/iP,EACrBP,KAAKmjP,YAAYmB,QAAQ,CACvBxR,QAAS9yO,KAAK8yO,QACd2N,UAAWzgP,KAAKygP,UAChBt7N,YACAk/N,iBACA9jP,UACC,EAAGP,KAAKkkP,YACXlkP,KAAKqjP,aAAaztO,QAClB5V,KAAK8yO,QAAQvyO,OAAS,EACtBP,KAAKygP,UAAUlgP,OAAS,EACxBP,KAAKqe,OAAS,EACdre,KAAKojP,UAAUtqO,OACjB,EAaF,SAASyrO,GAAe57O,EAAO67O,EAAQC,EAAa12O,GAOlD,OANApF,EAAQ67O,EAAS77O,EAAQ87O,GACb,EACV97O,EAAQ,EACCA,EAAQoF,IACjBpF,EAAQoF,GAEHpF,CACT,CACA,SAAS+7O,GAAgB/+N,EAAKgB,EAAKc,EAAIC,EAAIC,EAAIC,GAC7C,MAAMrnB,EAASonB,EAAKC,EACpB,IAAI5B,EAEFA,EADEW,GAAO,EACF,IAAIhc,WAAWpK,GACbomB,GAAO,GACT,IAAIU,YAAY9mB,GAEhB,IAAI4K,YAAY5K,GAEzB,MAAMsnB,EAASJ,EAAKE,EACdG,EAASJ,EAAKE,EACpB,IAAItmB,EACF8mB,EACAD,EAEAJ,EADAC,EAAW,EAEb,MAAMC,EAAU,IAAIZ,YAAYM,GAC1BO,EAAaT,EACnB,IAAKnmB,EAAI,EAAGA,EAAIqmB,EAAIrmB,IAClB2mB,EAAQ3mB,GAAK8I,KAAK6W,MAAM3f,EAAIumB,GAE9B,IAAKvmB,EAAI,EAAGA,EAAIsmB,EAAItmB,IAElB,IADA6mB,EAAK/d,KAAK6W,MAAM3f,EAAIwmB,GAAUI,EACzBE,EAAI,EAAGA,EAAIT,EAAIS,IAClBL,EAAWI,EAAKF,EAAQG,GACxBpC,EAAKgC,KAAcrC,EAAIoC,GAG3B,OAAO/B,CACT,CACA,MAAM2+N,GACJ,WAAA17O,EAAY,KACVwK,EAAI,IACJ+wN,EAAG,MACHnoL,EAAK,SACLuoM,GAAW,EAAK,MAChBC,EAAQ,KAAI,KACZl9M,EAAO,KAAI,OACXg0M,GAAS,EAAK,mBACdvyN,EAAkB,qBAClBX,IAEAzoB,KAAKq8C,MAAQA,EACb,MAAM5mC,EAAO4mC,EAAM5mC,KACb+d,EAAS/d,EAAK5R,IAAI,IAAK,UAC7B,IAAI+nD,EACJ,GAAIp4B,aAAkBngB,GACpBu4C,EAAap4B,EAAO9wB,UACf,GAAItB,MAAMsT,QAAQ8e,GAAS,CAChC,MAAMq4B,EAAap4C,EAAK+V,WAAWgK,EAAO,IACtCq4B,aAAsBx4C,KACxBu4C,EAAaC,EAAWnpD,KAE5B,CACA,OAAQkpD,GACN,IAAK,cAED/rC,MAAOw8B,EAAMx8B,MACbC,OAAQu8B,EAAMv8B,OACdi5B,gBAAiBsD,EAAM52B,SACvBo2B,iBAAkBQ,EAAMR,kBACtBiK,GAASE,qBAAqB3J,EAAMr6B,SACxCq6B,EAAMr6B,OAAOlJ,QACb9Y,KAAK8kP,kBAAoB,CACvB3tM,cAAe,EACf2F,mBAAmB,EACnBC,YAAatnC,EAAKT,IAAI,gBAExB,MACF,IAAK,cACHqnC,EAAMR,iBAAmB,EACzBQ,EAAM52B,SAAW,EAGrB,IAAI5F,EAAQpK,EAAK5R,IAAI,IAAK,SACtBic,EAASrK,EAAK5R,IAAI,IAAK,UAM3B,GALI2W,OAAOC,UAAU4hC,EAAMx8B,QAAUw8B,EAAMx8B,MAAQ,GAAKrF,OAAOC,UAAU4hC,EAAMv8B,SAAWu8B,EAAMv8B,OAAS,IAAMu8B,EAAMx8B,QAAUA,GAASw8B,EAAMv8B,SAAWA,KACvJtY,EAAK,0FACLqY,EAAQw8B,EAAMx8B,MACdC,EAASu8B,EAAMv8B,QAEbD,EAAQ,GAAKC,EAAS,EACxB,MAAM,IAAInW,EAAY,wBAAwBkW,gBAAoBC,KAEpE9f,KAAK6f,MAAQA,EACb7f,KAAK8f,OAASA,EACd9f,KAAKgzO,YAAcv9N,EAAK5R,IAAI,IAAK,eACjC7D,KAAK+kP,UAAYtvO,EAAK5R,IAAI,KAAM,eAAgB,EAChD7D,KAAKglP,MAAQvvO,EAAK5R,IAAI,WAAY,EAClC,IAAIg4C,EAAmBQ,EAAMR,iBAC7B,IAAKA,IACHA,EAAmBpmC,EAAK5R,IAAI,MAAO,qBAC9Bg4C,GAAkB,CACrB,IAAI77C,KAAK+kP,UAGP,MAAM,IAAIp7O,EAAY,wCAAwC3J,KAAK+kP,aAFnElpM,EAAmB,CAIvB,CAGF,GADA77C,KAAK2mB,IAAMk1B,GACN77C,KAAK+kP,UAAW,CACnB,IAAI5d,EAAa1xN,EAAKd,OAAO,OAASc,EAAKd,OAAO,cAClD,MAAMswO,IAAkB9d,EACxB,GAAK8d,EAkBMjlP,KAAK8kP,mBAAmB/nM,cACjCoqL,EAAa9zN,GAAKxP,IAAI,oBAlBtB,GAAI7D,KAAK8kP,kBACP3d,EAAa9zN,GAAKxP,IAAI,mBAEtB,OAAQw4C,EAAM52B,UACZ,KAAK,EACH0hN,EAAa9zN,GAAKxP,IAAI,cACtB,MACF,KAAK,EACHsjO,EAAa9zN,GAAKxP,IAAI,aACtB,MACF,KAAK,EACHsjO,EAAa9zN,GAAKxP,IAAI,cACtB,MACF,QACE,MAAM,IAAIpE,MAAM,eAAe48C,EAAM52B,4CAM7CzlB,KAAKmnO,WAAa3hN,GAAW8D,MAAM,CACjCJ,GAAIi+M,EACJ1zN,OACA0V,UAAWy7N,EAAWpgB,EAAM,KAC5Bp7M,qBACAX,yBAEFzoB,KAAKylB,SAAWzlB,KAAKmnO,WAAW1hN,SAC5BzlB,KAAK8kP,oBACP9kP,KAAK8kP,kBAAkB3tM,cAAgB8tM,EAAgBjlP,KAAKklP,QAAU,EACtEllP,KAAK8kP,kBAAkBhoM,kBAA6C,YAAzB98C,KAAKmnO,WAAWzkO,KAE/D,CAGA,GAFA1C,KAAK6Q,OAAS4E,EAAKhB,SAAS,IAAK,UACjCzU,KAAKmlP,aAAc,EACfnlP,KAAK6Q,SAAW7Q,KAAKmnO,aAAennO,KAAKmnO,WAAW1gN,gBAAgBzmB,KAAK6Q,OAAQgrC,IAAqB8/L,IAAWn2N,GAAWiB,gBAAgBzmB,KAAK6Q,OAAQ,IAAK,CAChK7Q,KAAKmlP,aAAc,EACnB,MAAMp3O,GAAO,GAAK8tC,GAAoB,EACtC77C,KAAKolP,mBAAqB,GAC1BplP,KAAKqlP,cAAgB,GACrB,MAAMC,EAAsC,YAA1BtlP,KAAKmnO,YAAYzkO,KACnC,IAAK,IAAIpB,EAAI,EAAG8mB,EAAI,EAAG9mB,EAAItB,KAAK6Q,OAAOtQ,OAAQe,GAAK,IAAK8mB,EAAG,CAC1D,MAAMisN,EAAOr0O,KAAK6Q,OAAOvP,GACnBgzO,EAAOt0O,KAAK6Q,OAAOvP,EAAI,GAC7BtB,KAAKolP,mBAAmBh9N,GAAKk9N,GAAahR,EAAOD,GAAQtmO,EAAMumO,EAAOD,EACtEr0O,KAAKqlP,cAAcj9N,GAAKk9N,EAAYjR,EAAOtmO,EAAMsmO,CACnD,CACF,CACIwQ,EACF7kP,KAAK6kP,MAAQ,IAAIF,GAAS,CACxBlxO,OACA+wN,MACAnoL,MAAOwoM,EACPD,WACAx7N,qBACAX,yBAEOkf,IACLA,aAAgBrwB,GACDqwB,EAAKlyB,KACC5R,IAAI,KAAM,aAI/B7D,KAAK2nC,KAAO,IAAIg9M,GAAS,CACvBlxO,OACA+wN,MACAnoL,MAAO1U,EACPi9M,WACAjJ,QAAQ,EACRvyN,qBACAX,yBATFjhB,EAAK,+CAaPxH,KAAK2nC,KAAOA,EAGlB,CACA,uBAAa49M,EAAW,KACtB9xO,EAAI,IACJ+wN,EAAG,MACHnoL,EAAK,SACLuoM,GAAW,EAAK,mBAChBx7N,EAAkB,qBAClBX,IAEA,MAAM80B,EAAYlB,EAClB,IAAImpM,EAAY,KACZC,EAAW,KACf,MAAMZ,EAAQxoM,EAAM5mC,KAAK5R,IAAI,SACvB8jC,EAAO0U,EAAM5mC,KAAK5R,IAAI,QAc5B,OAbIghP,EACEA,aAAiBvtO,GACnBkuO,EAAYX,EAEZr9O,EAAK,8BAEEmgC,IACLA,aAAgBrwB,IAAclW,MAAMsT,QAAQizB,GAC9C89M,EAAW99M,EAEXngC,EAAK,8BAGF,IAAIm9O,GAAS,CAClBlxO,OACA+wN,MACAnoL,MAAOkB,EACPqnM,WACAC,MAAOW,EACP79M,KAAM89M,EACNr8N,qBACAX,wBAEJ,CACA,oBAAOi9N,EAAc,SACnBC,EAAQ,MACR9lO,EAAK,OACLC,EAAM,wBACN8lO,EAAuB,cACvB31M,EAAa,YACb+iM,IAEA,MAAM6S,GAAkBhmO,EAAQ,GAAK,GAAKC,EACpC4uM,EAAei3B,EAAS7rO,WAE9B,IAAIC,EAAMzY,EAUV,IATIskP,GAA6B31M,GAFZ41M,IAAmBn3B,EAI5Bz+K,GAGVl2B,EAAO,IAAIpP,WAAWk7O,GACtB9rO,EAAKhF,IAAI4wO,GACT5rO,EAAKwtB,KAAK,IAAMmnL,IAJhB30M,EAAO,IAAIpP,WAAWg7O,GAFtB5rO,EAAO4rO,EAQL11M,EACF,IAAK3uC,EAAI,EAAGA,EAAIotN,EAAcptN,IAC5ByY,EAAKzY,IAAM,IAGf,MAAO,CACLyY,OACA8F,QACAC,SACAkzN,cAEJ,CACA,uBAAa8S,EAAW,SACtBH,EAAQ,MACR9lO,EAAK,OACLC,EAAM,wBACN8lO,EAAuB,cACvB31M,EAAa,YACb+iM,EAAW,2BACXznO,GAA6B,IAE7B,MAAMw6O,EAAgC,IAAVlmO,GAA0B,IAAXC,GAAgBmwB,KAAuC,IAApB01M,EAASplP,WAAiC,IAAdolP,EAAS,KACnH,GAAII,EACF,MAAO,CACLA,uBAGJ,GAAIx6O,EAA4B,CAC9B,GAAIkwO,GAAaK,iBAAiBj8N,EAAOC,GAAS,CAChD,MAAM/F,EAAO,IAAI+L,kBAAkBjG,EAAQC,EAAS,GASpD,OARA2vB,GAA2B,CACzB9pB,IAAKggO,EACL3/N,KAAMjM,EACN8F,QACAC,SACAkwB,cAAe,EACfC,kBAEKwrM,GAAaqB,YAAY,CAC9BttM,KA/65BI,EAg75BJz1B,OACA8F,QACAC,SACAkzN,eAEJ,CACA,MAAMsJ,EAAS,IAAI9wO,gBAAgBqU,EAAOC,GACpCy8N,EAAMD,EAAOE,WAAW,MACxBd,EAAUa,EAAIyJ,gBAAgBnmO,EAAOC,GAW3C,OAVA2vB,GAA2B,CACzB9pB,IAAKggO,EACL3/N,KAAM01N,EAAQ3hO,KACd8F,QACAC,SACAkwB,cAAe,EACfC,kBAEFssM,EAAI4B,aAAazC,EAAS,EAAG,GAEtB,CACL3hO,KAAM,KACN8F,QACAC,SACAkzN,cACAx1M,OANa8+M,EAAOwB,wBAQxB,CACA,OAAO99O,KAAK0lP,cAAc,CACxBC,WACA9lO,QACAC,SACAmwB,gBACA21M,0BACA5S,eAEJ,CACA,aAAI92L,GACF,OAAO9xC,KAAK2D,IAAI/N,KAAK6f,MAAO7f,KAAK6kP,OAAOhlO,OAAS,EAAG7f,KAAK2nC,MAAM9nB,OAAS,EAC1E,CACA,cAAIs8B,GACF,OAAO/xC,KAAK2D,IAAI/N,KAAK8f,OAAQ9f,KAAK6kP,OAAO/kO,QAAU,EAAG9f,KAAK2nC,MAAM7nB,QAAU,EAC7E,CACA,YAAAmmO,CAAa76O,GACX,MAAMub,EAAM3mB,KAAK2mB,IACXlB,EAAWzlB,KAAKylB,SAChB4/N,EAAgBrlP,KAAKqlP,cACrBD,EAAqBplP,KAAKolP,mBAC1Br3O,GAAO,GAAK4Y,GAAO,EACzB,IAAIrlB,EAAG0P,EACP,GAAY,IAAR2V,EAAW,CACb,IAAKrlB,EAAI,EAAG0P,EAAK5F,EAAO7K,OAAQe,EAAI0P,EAAI1P,IACtC8J,EAAO9J,KAAO8J,EAAO9J,GAEvB,MACF,CACA,IAAIstC,EAAQ,EACZ,IAAKttC,EAAI,EAAG0P,EAAKhR,KAAK6f,MAAQ7f,KAAK8f,OAAQxe,EAAI0P,EAAI1P,IACjD,IAAK,IAAI8mB,EAAI,EAAGA,EAAI3C,EAAU2C,IAC5Bhd,EAAOwjC,GAAS21M,GAAen5O,EAAOwjC,GAAQy2M,EAAcj9N,GAAIg9N,EAAmBh9N,GAAIra,GACvF6gC,GAGN,CACA,aAAAs3M,CAAc96O,GACZ,MAAMub,EAAM3mB,KAAK2mB,IACjB,GAAY,IAARA,EACF,OAAOvb,EAET,MAAMyU,EAAQ7f,KAAK6f,MACbC,EAAS9f,KAAK8f,OACd2F,EAAWzlB,KAAKylB,SAChBllB,EAASsf,EAAQC,EAAS2F,EAChC,IACIm0B,EADAusM,EAAY,EAGdvsM,EADEjzB,GAAO,EACA,IAAIhc,WAAWpK,GACfomB,GAAO,GACP,IAAIU,YAAY9mB,GAEhB,IAAI4K,YAAY5K,GAE3B,MAAM6lP,EAAWvmO,EAAQ4F,EACnB1X,GAAO,GAAK4Y,GAAO,EACzB,IACE3V,EACAyO,EAFEne,EAAI,EAGR,GAAY,IAARqlB,EAAW,CACb,IAAIghB,EAAM0+M,EAAUC,EACpB,IAAK,IAAIl+N,EAAI,EAAGA,EAAItI,EAAQsI,IAAK,CAG/B,IAFAi+N,EAAW/kP,IAAgB,EAAX8kP,GAChBE,EAAWhlP,EAAI8kP,EACR9kP,EAAI+kP,GACT5mO,EAAMrU,EAAO+6O,KACbvsM,EAAOt4C,GAAKme,GAAO,EAAI,EACvBm6B,EAAOt4C,EAAI,GAAKme,GAAO,EAAI,EAC3Bm6B,EAAOt4C,EAAI,GAAKme,GAAO,EAAI,EAC3Bm6B,EAAOt4C,EAAI,GAAKme,GAAO,EAAI,EAC3Bm6B,EAAOt4C,EAAI,GAAKme,GAAO,EAAI,EAC3Bm6B,EAAOt4C,EAAI,GAAKme,GAAO,EAAI,EAC3Bm6B,EAAOt4C,EAAI,GAAKme,GAAO,EAAI,EAC3Bm6B,EAAOt4C,EAAI,GAAW,EAANme,EAChBne,GAAK,EAEP,GAAIA,EAAIglP,EAGN,IAFA7mO,EAAMrU,EAAO+6O,KACbx+M,EAAO,IACArmC,EAAIglP,GACT1sM,EAAOt4C,SAAWme,EAAMkoB,GACxBA,IAAS,CAGf,CACF,KAAO,CACL,IAAIvhB,EAAO,EAEX,IADA3G,EAAM,EACDne,EAAI,EAAG0P,EAAKzQ,EAAQe,EAAI0P,IAAM1P,EAAG,CAKpC,IAJIA,EAAI8kP,GAAa,IACnB3mO,EAAM,EACN2G,EAAO,GAEFA,EAAOO,GACZlH,EAAMA,GAAO,EAAIrU,EAAO+6O,KACxB//N,GAAQ,EAEV,MAAMmgO,EAAgBngO,EAAOO,EAC7B,IAAIhe,EAAQ8W,GAAO8mO,EACf59O,EAAQ,EACVA,EAAQ,EACCA,EAAQoF,IACjBpF,EAAQoF,GAEV6rC,EAAOt4C,GAAKqH,EACZ8W,IAAQ,GAAK8mO,GAAiB,EAC9BngO,EAAOmgO,CACT,CACF,CACA,OAAO3sM,CACT,CACA,iBAAM4sM,CAAYC,EAAS5mO,EAAOC,EAAQiH,EAAcs1B,GACtD,MAAMwoM,EAAQ7kP,KAAK6kP,MACbl9M,EAAO3nC,KAAK2nC,KAClB,IAAI++M,EAAUC,EAAIC,EAAItlP,EAAG0P,EAAIoX,EAC7B,GAAIy8N,EACF8B,EAAK9B,EAAMhlO,MACX+mO,EAAK/B,EAAM/kO,OACX4mO,EAAW,IAAI5gO,kBAAkB6gO,EAAKC,SAChC/B,EAAMgC,eAAeH,GACvBC,IAAO9mO,GAAS+mO,IAAO9mO,IACzB4mO,EAAWhC,GAAgBgC,EAAU7B,EAAMl+N,IAAKggO,EAAIC,EAAI/mO,EAAOC,SAE5D,GAAI6nB,EACT,GAAIA,aAAgBg9M,GAAU,CAM5B,IALAgC,EAAKh/M,EAAK9nB,MACV+mO,EAAKj/M,EAAK7nB,OACV4mO,EAAW,IAAI5gO,kBAAkB6gO,EAAKC,GACtCj/M,EAAKliB,SAAW,QACVkiB,EAAKk/M,eAAeH,GACrBplP,EAAI,EAAG0P,EAAK21O,EAAKC,EAAItlP,EAAI0P,IAAM1P,EAClColP,EAASplP,GAAK,IAAMolP,EAASplP,GAE3BqlP,IAAO9mO,GAAS+mO,IAAO9mO,IACzB4mO,EAAWhC,GAAgBgC,EAAU/+M,EAAKhhB,IAAKggO,EAAIC,EAAI/mO,EAAOC,GAElE,KAAO,KAAI1e,MAAMsT,QAAQizB,GAiBvB,MAAM,IAAIh+B,EAAY,wBAjBQ,CAC9B+8O,EAAW,IAAI5gO,kBAAkBjG,EAAQC,GACzC,MAAM2F,EAAWzlB,KAAKylB,SACtB,IAAKnkB,EAAI,EAAG0P,EAAK6O,EAAQC,EAAQxe,EAAI0P,IAAM1P,EAAG,CAC5C,IAAIo7O,EAAU,EACd,MAAMoK,EAAcxlP,EAAImkB,EACxB,IAAK2C,EAAI,EAAGA,EAAI3C,IAAY2C,EAAG,CAC7B,MAAM+F,EAAQkuB,EAAMyqM,EAAc1+N,GAC5B2+N,EAAiB,EAAJ3+N,EACnB,GAAI+F,EAAQwZ,EAAKo/M,IAAe54N,EAAQwZ,EAAKo/M,EAAa,GAAI,CAC5DrK,EAAU,IACV,KACF,CACF,CACAgK,EAASplP,GAAKo7O,CAChB,CACF,CAEA,CAEF,GAAIgK,EACF,IAAKplP,EAAI,EAAG8mB,EAAI,EAAGpX,EAAK6O,EAAQkH,EAAczlB,EAAI0P,IAAM1P,EAAG8mB,GAAK,EAC9Dq+N,EAAQr+N,GAAKs+N,EAASplP,QAGxB,IAAKA,EAAI,EAAG8mB,EAAI,EAAGpX,EAAK6O,EAAQkH,EAAczlB,EAAI0P,IAAM1P,EAAG8mB,GAAK,EAC9Dq+N,EAAQr+N,GAAK,GAGnB,CACA,YAAA4+N,CAAa57O,EAAQyU,EAAOC,GAC1B,MAAMklO,EAAQhlP,KAAK6kP,OAAOG,MAC1B,IAAKA,EACH,OAEF,MAAMiC,EAAWjnP,KAAKmnO,WAAWzhN,OAAOs/N,EAAO,GACzCkC,EAASD,EAAS,GAClBE,EAASF,EAAS,GAClBG,EAASH,EAAS,GAClB1mP,EAASsf,EAAQC,EAAS,EAChC,IAAK,IAAIxe,EAAI,EAAGA,EAAIf,EAAQe,GAAK,EAAG,CAClC,MAAM8/F,EAAQh2F,EAAO9J,EAAI,GACzB,GAAc,IAAV8/F,EAAa,CACfh2F,EAAO9J,GAAK,IACZ8J,EAAO9J,EAAI,GAAK,IAChB8J,EAAO9J,EAAI,GAAK,IAChB,QACF,CACA,MAAMkrB,EAAI,IAAM40E,EAChBh2F,EAAO9J,IAAM8J,EAAO9J,GAAK4lP,GAAU16N,EAAI06N,EACvC97O,EAAO9J,EAAI,IAAM8J,EAAO9J,EAAI,GAAK6lP,GAAU36N,EAAI26N,EAC/C/7O,EAAO9J,EAAI,IAAM8J,EAAO9J,EAAI,GAAK8lP,GAAU56N,EAAI46N,CACjD,CACF,CACA,qBAAMpB,CAAgB7qM,GAAY,EAAO5vC,GAA6B,GACpE,MAAM2wC,EAAYl8C,KAAKk8C,UACjBC,EAAan8C,KAAKm8C,WAClBu/L,EAAU,CACd77N,MAAOq8B,EACPp8B,OAAQq8B,EACR62L,YAAahzO,KAAKgzO,YAClBxjM,KAAM,EACNz1B,KAAM,MAEF0L,EAAWzlB,KAAKylB,SAChBoB,EAAgB7mB,KAAK6f,MACrBiH,EAAiB9mB,KAAK8f,OACtB6G,EAAM3mB,KAAK2mB,IACXshC,EAAWphC,EAAgBpB,EAAWkB,EAAM,GAAK,EACjD0gO,EAAgB97O,GAA8BkwO,GAAaK,iBAAiB5/L,EAAWC,GAC7F,IAAKn8C,KAAK6kP,QAAU7kP,KAAK2nC,MAAiC,eAAzB3nC,KAAKmnO,WAAWzkO,KAAuB,CACtEg5O,EAAQlsM,KA1p6BA,EA2p6BR,MAAMm2M,EAAWjK,EAAQ3hO,WAAa/Z,KAAKsnP,cAAcxgO,EAAiBD,EAAgB,EAAG,CAAC,GAC9F,OAAItb,EACG87O,EAGE5L,GAAaqB,YAAYpB,GAAS,GAFhC17O,KAAKunP,aA9p6BR,EA8p6B2CrrM,EAAWC,EAAYwpM,GAInEjK,CACT,CACA,IAAKvgM,EAAW,CACd,IAAI3L,EAMJ,GAL6B,eAAzBxvC,KAAKmnO,WAAWzkO,MAAiC,IAARikB,EAC3C6oB,EAzq6BU,EA0q6BwB,cAAzBxvC,KAAKmnO,WAAWzkO,MAAgC,IAARikB,GAAc3mB,KAAKmlP,cACpE31M,EA1q6BK,GA4q6BHA,IAASxvC,KAAK6kP,QAAU7kP,KAAK2nC,MAAQuU,IAAcr1B,GAAiBs1B,IAAer1B,EAAgB,CACrG,MAAMu1B,QAAcr8C,MAAK,EAAU6mB,EAAeC,GAClD,GAAIu1B,EACF,OAAOA,EAET,MAAMtiC,QAAa/Z,KAAKsnP,cAAcxgO,EAAiBmhC,EAAU,CAAC,GAClE,GAAI18C,EACF,OAAI87O,EACK5L,GAAaqB,YAAY,CAC9B/iO,OACAy1B,OACA3vB,MAAOq8B,EACPp8B,OAAQq8B,EACR62L,YAAahzO,KAAKgzO,aACjBhzO,KAAKmlP,aAEHnlP,KAAKunP,aAAa/3M,EAAM3oB,EAAeC,EAAgB/M,GAIhE,GAFA2hO,EAAQlsM,KAAOA,EACfksM,EAAQ3hO,KAAOA,EACX/Z,KAAKmlP,YAAa,CACpBz9O,EAls6BQ,IAks6BD8nC,EAAmC,0DAC1C,MAAMpkC,EAASswO,EAAQ3hO,KACvB,IAAK,IAAIzY,EAAI,EAAG0P,EAAK5F,EAAO7K,OAAQe,EAAI0P,EAAI1P,IAC1C8J,EAAO9J,IAAM,GAEjB,CACA,OAAOo6O,CACT,CACA,GAAI17O,KAAKq8C,iBAAiBb,KAAex7C,KAAK6kP,QAAU7kP,KAAK2nC,OAAS3nC,KAAKmlP,YAAa,CACtF,IAAIqC,EAAc1gO,EAAiBmhC,EACnC,GAAI18C,IAA+B87O,EAAe,CAChD,IAAII,GAAY,EAChB,OAAQznP,KAAKmnO,WAAWzkO,MACtB,IAAK,aACH8kP,GAAe,EACfC,GAAY,EACZ,MACF,IAAK,YACHD,EAAcA,EAAc,EAAI,EAChCC,GAAY,EACZ,MACF,IAAK,aACHA,GAAY,EAGhB,GAAIA,EAAW,CACb,MAAMprM,QAAcr8C,MAAK,EAAUk8C,EAAWC,GAC9C,GAAIE,EACF,OAAOA,EAET,MAAM1yB,QAAa3pB,KAAKsnP,cAAcE,EAAa,CACjDtrM,YACAC,aACAhB,WAAW,IAEb,OAAOn7C,KAAKunP,aAnu6BV,EAmu6B6CrrM,EAAWC,EAAYxyB,EACxE,CACF,MACE,OAAQ3pB,KAAKmnO,WAAWzkO,MACtB,IAAK,aACH8kP,GAAe,EACjB,IAAK,YACL,IAAK,aAOH,OANA9L,EAAQlsM,KA5u6BT,EA6u6BCksM,EAAQ3hO,WAAa/Z,KAAKsnP,cAAcE,EAAa,CACnDtrM,YACAC,aACAf,UAAU,IAERisM,EACK5L,GAAaqB,YAAYpB,GAE3BA,EAGf,CACF,CACA,MAAMiK,QAAiB3lP,KAAKsnP,cAAcxgO,EAAiBmhC,EAAU,CACnEy/L,UAAU,IAEN3gO,EAAe,EAAI4+N,EAASplP,OAAS0nD,EAAW9L,EAAar1B,EAC7DE,EAAQhnB,KAAKkmP,cAAcP,GACjC,IAAIt/N,EAASshO,EACTrL,EAAQC,EAAKqL,EAAe7tO,EAkChC,OAjCIxO,IAA+B87O,IACjC/K,EAAS,IAAI9wO,gBAAgB0wC,EAAWC,GACxCogM,EAAMD,EAAOE,WAAW,MACxBoL,EAAgBrL,EAAIyJ,gBAAgB9pM,EAAWC,GAC/CpiC,EAAO6tO,EAAc7tO,MAEvB2hO,EAAQlsM,KAtw6BE,EAuw6BL2L,GAAcn7C,KAAK6kP,OAAU7kP,KAAK2nC,MAYhCp8B,IAA8B87O,IACjCttO,EAAO,IAAI+L,kBAAkBo2B,EAAYC,EAAa,IAExD91B,EAAU,EACVshO,GAAoB,QACd3nP,KAAKwmP,YAAYzsO,EAAMmiC,EAAWC,EAAYp1B,EAAcC,MAhB7Dzb,GAA8B87O,GACjC3L,EAAQlsM,KA1w6BH,EA2w6BLz1B,EAAO,IAAI+L,kBAAkBo2B,EAAYC,EAAa,GACtD91B,EAAU,IAEE,IAAIlb,YAAY4O,EAAK3O,QAC7Bm8B,KAAKv8B,EAAYC,eAAiB,WAAa,KACnDob,EAAU,GAEZshO,GAAoB,GASlB3nP,KAAKmlP,aACPnlP,KAAKimP,aAAaj/N,GAEpBhnB,KAAKmnO,WAAWvgN,QAAQ7M,EAAM8M,EAAeC,EAAgBo1B,EAAWC,EAAYp1B,EAAcJ,EAAKK,EAAOX,GAC1GshO,GACF3nP,KAAKgnP,aAAajtO,EAAMmiC,EAAWn1B,GAEjCxb,IAA+B87O,GACjC9K,EAAI4B,aAAayJ,EAAe,EAAG,GAE5B,CACL7tO,KAAM,KACN8F,MAAOq8B,EACPp8B,OAAQq8B,EACR3e,OALa8+M,EAAOwB,wBAMpB9K,YAAahzO,KAAKgzO,eAGtB0I,EAAQ3hO,KAAOA,EACXstO,EACK5L,GAAaqB,YAAYpB,GAE3BA,EACT,CACA,oBAAMmL,CAAez7O,GACnB,MAAMqa,EAAWzlB,KAAKylB,SACtB,GAAiB,IAAbA,EACF,MAAM,IAAI9b,EAAY,0CAA0C8b,KAElE,MAAM5F,EAAQ7f,KAAK6f,MACbC,EAAS9f,KAAK8f,OACd6G,EAAM3mB,KAAK2mB,IACXshC,EAAWpoC,EAAQ4F,EAAWkB,EAAM,GAAK,EACzCg/N,QAAiB3lP,KAAKsnP,cAAcxnO,EAASmoC,EAAU,CAC3Dy/L,UAAU,IAEN1gO,EAAQhnB,KAAKkmP,cAAcP,GACjC,IAAIrkP,EAAGf,EACP,GAAY,IAARomB,EAAW,CAEb,GADApmB,EAASsf,EAAQC,EACb9f,KAAKmlP,YACP,IAAK7jP,EAAI,EAAGA,EAAIf,IAAUe,EACxB8J,EAAO9J,GAAK0lB,EAAM1lB,GAAK,EAAI,SAG7B,IAAKA,EAAI,EAAGA,EAAIf,IAAUe,EACxB8J,EAAO9J,GAAiB,KAAX0lB,EAAM1lB,GAGvB,MACF,CACItB,KAAKmlP,aACPnlP,KAAKimP,aAAaj/N,GAEpBzmB,EAASsf,EAAQC,EACjB,MAAMyL,EAAQ,MAAQ,GAAK5E,GAAO,GAClC,IAAKrlB,EAAI,EAAGA,EAAIf,IAAUe,EACxB8J,EAAO9J,GAAKiqB,EAAQvE,EAAM1lB,EAE9B,CACA,YAAAimP,CAAa/3M,EAAM3vB,EAAOC,EAAQ6F,GAChC,MAAM22N,EAAS,IAAI9wO,gBAAgBqU,EAAOC,GACpCy8N,EAAMD,EAAOE,WAAW,MAC9B,IAAId,EAgBJ,OAz26BU,IA016BNlsM,EACFksM,EAAU,IAAI0C,UAAUz4N,EAAK9F,EAAOC,IAEpC47N,EAAUa,EAAIyJ,gBAAgBnmO,EAAOC,GACrCyvB,GAAc,CACZC,OACA7pB,MACAK,KAAM,IAAI7a,YAAYuwO,EAAQ3hO,KAAK3O,QACnCyU,QACAC,SACAmwB,cAAejwC,KAAKmlP,eAGxB5I,EAAI4B,aAAazC,EAAS,EAAG,GAEtB,CACL3hO,KAAM,KACN8F,QACAC,SACA0d,OALa8+M,EAAOwB,wBAMpB9K,YAAahzO,KAAKgzO,YAEtB,CACA,OAAM,CAAUnzN,EAAOC,GACrB,MAAM0d,QAAex9B,KAAKq8C,MAAMrkC,uBAChC,OAAKwlB,EAGE,CACLzjB,KAAM,KACN8F,QACAC,SACA0d,SACAw1M,YAAahzO,KAAKgzO,aAPX,IASX,CACA,mBAAMsU,CAAc/mP,GAAQ,UAC1B27C,EAAS,WACTC,EAAU,UACVhB,GAAY,EAAK,SACjBC,GAAW,EAAK,SAChBssM,GAAW,IAEX1nP,KAAKq8C,MAAMvjC,QACX9Y,KAAKq8C,MAAMH,UAAYA,GAAal8C,KAAK6f,MACzC7f,KAAKq8C,MAAMF,WAAaA,GAAcn8C,KAAK8f,OAC3C9f,KAAKq8C,MAAMlB,YAAcA,EACzBn7C,KAAKq8C,MAAMjB,WAAaA,EACxB,MAAMysM,QAAmB7nP,KAAKq8C,MAAM1kC,aAAapX,EAAQP,KAAK8kP,mBAC9D,OAAI4C,GAAY1nP,KAAKq8C,iBAAiB3pB,GAC7Bm1N,GAETngP,EAAOmgP,aAAsBl9O,WAAY,0DAClC,IAAIA,WAAWk9O,GACxB,EAgCF,MAAMC,GAAiCpkP,OAAOqkP,OAAO,CACnDC,cAAe,EACfxyB,iBAAiB,EACjByyB,cAAc,EACd58O,iBAAiB,EACjBE,4BAA4B,EAC5BE,yBAAyB,EACzB4wO,sBAAuB,EACvB6L,qBAAqB,EACrBC,gBAAgB,EAChBC,QAAS,KACTC,oBAAqB,OAOjBC,GAAW51O,QAAQG,UACzB,SAAS01O,GAAmB5/O,EAAO6/O,GAAe,GAChD,GAAIpnP,MAAMsT,QAAQ/L,GAAQ,CACxB,IAAK,MAAMukB,KAAOvkB,EAAO,CACvB,MAAM8/O,EAAUF,GAAmBr7N,GAAK,GACxC,GAAIu7N,EACF,OAAOA,CAEX,CAEA,OADAjhP,EAAK,iCAAiCmB,KAC/B,aACT,CACA,KAAMA,aAAiB0K,IACrB,OAAIm1O,EACK,KAEF,cAET,OAAQ7/O,EAAMjG,MACZ,IAAK,SACL,IAAK,aACH,MAAO,cACT,IAAK,WACH,MAAO,WACT,IAAK,SACH,MAAO,SACT,IAAK,UACH,MAAO,UACT,IAAK,SACH,MAAO,SACT,IAAK,UACH,MAAO,UACT,IAAK,aACH,MAAO,cACT,IAAK,YACH,MAAO,aACT,IAAK,YACH,MAAO,aACT,IAAK,YACH,MAAO,aACT,IAAK,aACH,MAAO,aACT,IAAK,YACH,MAAO,YACT,IAAK,MACH,MAAO,MACT,IAAK,aACH,MAAO,aACT,IAAK,QACH,MAAO,QACT,IAAK,aACH,MAAO,aAEX,OAAI8lP,EACK,MAEThhP,EAAK,2BAA2BmB,EAAMjG,QAC/B,cACT,CACA,SAASgmP,GAAyBzE,EAAQlqO,GACpCA,EAAKnG,OACPqwO,EAAOJ,cAAc9pO,EAAKnG,OAE5BqwO,EAAOP,YAAY3pO,EAAKnH,GAAImH,EAAK5Y,KAAM4Y,EAAK4pO,gBAAiB5pO,EAAK6pO,SAC9D7pO,EAAKnH,KAAO3L,GAA6B8S,EAAK5Y,KAAK,IAAIglB,MAAQ,GACjEpM,EAAK5Y,KAAK,GAAGglB,OAEjB,CACA,MAAMwiO,GACJx7N,6BAA+B,GAC/BA,wBAA0B,IAC1B,WAAAlkB,GACEjJ,KAAK8Y,OACP,CACA,KAAA2gB,GACE,UAAMz5B,KAAK4oP,QAAUD,GAAgBE,oBAGrC7oP,KAAK4oP,QAAU,EACR5oP,KAAK8oP,SAAWj3O,KAAK+wC,MAC9B,CACA,KAAA9pC,GACE9Y,KAAK8oP,QAAUj3O,KAAK+wC,MAAQ+lM,GAAgBI,sBAC5C/oP,KAAK4oP,QAAU,CACjB,EAEF,MAAMI,GACJ,WAAA//O,EAAY,KACVwK,EAAI,QACJw1O,EAAO,UACP7pO,EAAS,UACT67N,EAAS,UACTiO,EAAS,iBACTC,EAAgB,sBAChBC,EAAqB,iBACrBC,EAAgB,gBAChBrO,EAAe,QACfjzO,EAAU,OAEV/H,KAAKyT,KAAOA,EACZzT,KAAKipP,QAAUA,EACfjpP,KAAKof,UAAYA,EACjBpf,KAAKi7O,UAAYA,EACjBj7O,KAAKkpP,UAAYA,EACjBlpP,KAAKmpP,iBAAmBA,EACxBnpP,KAAKopP,sBAAwBA,EAC7BppP,KAAKqpP,iBAAmBA,EACxBrpP,KAAKg7O,gBAAkBA,EACvBh7O,KAAK+H,QAAUA,GAAW+/O,GAC1B9nP,KAAKspP,cAAgB,KACrBtpP,KAAKupP,oBAAsB,IAAI1Y,GAC/B7wO,KAAKwpP,uBAAyBxpP,KAAK0xD,iBAAiB3uC,KAAK/iB,MACzDy7O,GAAa//L,WAAW17C,KAAK+H,SAC7ByzC,GAAWE,WAAW17C,KAAK+H,QAC7B,CACA,uBAAI0hP,GAKF,OAAO/gP,EAAO1I,KAAM,sBAJO,IAAI2xO,GAAmB,CAChDl+N,KAAMzT,KAAKyT,KACXpI,gBAAiBrL,KAAK+H,QAAQsD,kBAGlC,CACA,oBAAIq+O,GACF,QAAS1pP,KAAKspP,aAChB,CACA,KAAAzzO,CAAM8zO,EAAa,MACjB,MAAMC,EAAelmP,OAAOwP,OAAOlT,MAEnC,OADA4pP,EAAa7hP,QAAUrE,OAAO+5C,OAAO/5C,OAAOwP,OAAO,MAAOlT,KAAK+H,QAAS4hP,GACjEC,CACT,CACA,aAAAC,CAAc1gO,EAAW2gO,GACvB,KAAM3gO,aAAqB3V,IACzB,OAAO,EAET,GAAI2V,EAAUvV,OAASk2O,EAAiB90O,IAAImU,EAAUvV,OACpD,OAAO,EAET,MAAMm2O,EAAY,IAAI5zO,GAAO2zO,GACzB3gO,EAAUvV,OACZm2O,EAAUxzO,IAAI4S,EAAUvV,OAE1B,MAAMo2O,EAAQ,CAAC7gO,GACb1V,EAAOzT,KAAKyT,KACd,KAAOu2O,EAAMzpP,QAAQ,CACnB,MAAMqtC,EAAOo8M,EAAMp2N,QACbq2N,EAAgBr8M,EAAK/pC,IAAI,aAC/B,GAAIomP,aAAyBz2O,GAC3B,IAAK,IAAI02O,KAAgBD,EAAcp1O,eAAgB,CACrD,GAAIq1O,aAAwB71O,GAAK,CAC/B,GAAI01O,EAAU/0O,IAAIk1O,GAChB,SAEF,IACEA,EAAez2O,EAAKa,MAAM41O,EAC5B,CAAE,MAAOn5O,GACPg5O,EAAUxzO,IAAI2zO,GACd9iP,EAAK,wCAAwC2J,OAC7C,QACF,CACF,CACA,KAAMm5O,aAAwB12O,IAC5B,SAEE02O,EAAat2O,OACfm2O,EAAUxzO,IAAI2zO,EAAat2O,OAE7B,MAAMu2O,EAAKD,EAAarmP,IAAI,MAC5B,GAAIsmP,aAAc92O,IAChB,GAAgB,WAAZ82O,EAAGznP,KACL,OAAO,OAIX,QAAWU,IAAP+mP,GAAoB/oP,MAAMsT,QAAQy1O,GACpC,IAAK,MAAMxtO,KAAWwtO,EACpB,GAAIxtO,aAAmBtJ,IAAyB,WAAjBsJ,EAAQja,KACrC,OAAO,CAIf,CAEF,MAAM0nP,EAAWx8M,EAAK/pC,IAAI,WAC1B,GAAMumP,aAAoB52O,GAG1B,IAAK,IAAI62O,KAAWD,EAASv1O,eAAgB,CAC3C,GAAIw1O,aAAmBh2O,GAAK,CAC1B,GAAI01O,EAAU/0O,IAAIq1O,GAChB,SAEF,IACEA,EAAU52O,EAAKa,MAAM+1O,EACvB,CAAE,MAAOt5O,GACPg5O,EAAUxzO,IAAI8zO,GACdjjP,EAAK,sCAAsC2J,OAC3C,QACF,CACF,CACA,KAAMs5O,aAAmB/yO,IACvB,SAEE+yO,EAAQ50O,KAAK7B,OACfm2O,EAAUxzO,IAAI8zO,EAAQ50O,KAAK7B,OAE7B,MAAM02O,EAAaD,EAAQ50O,KAAK5R,IAAI,aAC9BymP,aAAsB92O,KAGxB82O,EAAW12O,OAASm2O,EAAU/0O,IAAIs1O,EAAW12O,SAGjDo2O,EAAMzoP,KAAK+oP,GACPA,EAAW12O,OACbm2O,EAAUxzO,IAAI+zO,EAAW12O,QAE7B,CACF,CACA,IAAK,MAAMoC,KAAO+zO,EAChBD,EAAiBvzO,IAAIP,GAEvB,OAAO,CACT,CACA,OAAM,CAAWnO,GACf,MAAM0iP,QAAiBj2O,MAAMzM,GAC7B,IAAK0iP,EAASC,GACZ,MAAM,IAAI/qP,MAAM,yBAAyBoI,YAAc0iP,EAASE,gBAElE,OAAO,IAAI9/O,iBAAiB4/O,EAAStqO,cACvC,CACA,sBAAMyxC,CAAiBhvD,GACrB,MAAMgkD,EAAa1mD,KAAKmpP,iBAAiBtlP,IAAInB,GAC7C,GAAIgkD,EACF,OAAOA,EAET,IAAI3sC,EAaJ,OAVEA,EAF2B,OAAzB/Z,KAAK+H,QAAQqgP,QAER,CACLn2L,eAFqBjyD,MAAK,EAAW,GAAGA,KAAK+H,QAAQqgP,UAAU1lP,WAG/DwvD,cAAc,SAGHlyD,KAAKipP,QAAQyB,gBAAgB,mBAAoB,CAC5DhoP,SAGJ1C,KAAKmpP,iBAAiBp0O,IAAIrS,EAAMqX,GACzBA,CACT,CACA,2BAAM4wO,CAAsBjoP,GAC1B,MAAMgkD,EAAa1mD,KAAKopP,sBAAsBvlP,IAAInB,GAClD,GAAIgkD,EACF,OAAO,IAAI1mC,GAAO0mC,GAEpB,GAAI1mD,KAAK+H,QAAQogP,gBAA2B,WAATzlP,GAA8B,iBAATA,EACtD,OAAO,KAET,MACEy8C,EADiCu6J,KACKh3M,GACxC,IAAIqX,EACJ,IAEIA,EADuC,OAArC/Z,KAAK+H,QAAQsgP,0BACFroP,MAAK,EAAW,GAAGA,KAAK+H,QAAQsgP,sBAAsBlpM,WAEtDn/C,KAAKipP,QAAQyB,gBAAgB,wBAAyB,CACjEvrM,YAGN,CAAE,MAAOpuC,GAEP,OADAvJ,EAAKuJ,GACE,IACT,CAEA,OADA/Q,KAAKopP,sBAAsBr0O,IAAIrS,EAAMqX,GAC9B,IAAIiG,GAAOjG,EACpB,CACA,sBAAM6wO,CAAiBzhO,EAAW0hO,EAAMhG,EAAO1Z,EAAc2f,EAAMC,EAActiO,GAC/E,MAAMhT,EAAOo1O,EAAKp1O,KACZ8U,EAAS9O,GAAahG,EAAKhB,SAAS,UAAW,MAC/Ci7M,EAAO9zM,GAAiBnG,EAAKhB,SAAS,QAAS,MACrD,IAAIkvO,EAAiBqH,EACjBv1O,EAAKT,IAAI,QACX2uO,QAAwB3jP,KAAKirP,wBAAwBx1O,EAAK5R,IAAI,MAAOslB,SAE/C/lB,IAApBugP,GACFxY,EAAaqY,MAAMv8O,EAA6B,CAAC,KAAM08O,IAEzD,MAAMuH,EAAQz1O,EAAK5R,IAAI,SACvB,GAAIqnP,EAAO,CACTF,EAAe,CACbzgO,SACAmlM,OACAm1B,QACAsG,UAAU,EACVC,UAAU,GAGZ,IAAIjkB,EAAa,KACjB,GAAIpwN,GAFiBm0O,EAAMrnP,IAAI,KAEN,kBACvBmnP,EAAaG,SAAWD,EAAMrnP,IAAI,OAAQ,EAC1CmnP,EAAaI,SAAWF,EAAMrnP,IAAI,OAAQ,EACtCqnP,EAAMl2O,IAAI,OAAO,CACnB,MAAMkU,EAAKgiO,EAAMv2O,OAAO,MAGtBwyN,EAFuB3hN,GAAWqD,UAAUK,EAAIlpB,KAAKyT,KAAMgV,UAIxCzoB,KAAKqrP,gBAAgB,CACtCniO,KACAC,YACAV,wBAGN,CAEEo8N,GAAOyG,WACTnkB,IAAe3hN,GAAWiE,WAAW5D,IACrCg/N,EAAMyG,SAAWnkB,EAAWzhN,OAAOm/N,EAAMyG,SAAU,IAErDngB,EAAaqY,MA3k7BL,GA2k7B2B,CAACwH,GACtC,CACA,MAAM7pP,EAAO+pP,EAAQ,CAAC3gO,EAAQ,MAAQ,CAACA,EAAQmlM,GAC/Cyb,EAAaqY,MAhl7BQ,GAgl7ByBriP,SACxCnB,KAAKurP,gBAAgB,CACzBvpO,OAAQ6oO,EACRC,OACA3hO,UAAW1T,EAAK5R,IAAI,cAAgBslB,EACpCgiN,eACA4f,iBAEF5f,EAAaqY,MAvl7BM,GAul7ByB,IACxC0H,GACF/f,EAAaqY,MAvl7BP,GAul7B2B,CAACwH,SAEZ5nP,IAApBugP,GACFxY,EAAaqY,MAAMv8O,EAAsB,GAE7C,CACA,YAAAukP,CAAa53O,EAAO8nO,EAAS+P,GAAgB,GAC3C,MAAMtH,EAAYzI,EAAU,CAACA,EAAQl+M,QAAUk+M,EAAQ3hO,KAAK3O,QAAU,KACtE,OAAIpL,KAAK0pP,kBAAoB+B,EACpBzrP,KAAKipP,QAAQlkO,KAAK,YAAa,CAACnR,EAAO,QAAS8nO,GAAUyI,GAE5DnkP,KAAKipP,QAAQlkO,KAAK,MAAO,CAACnR,EAAO5T,KAAKof,UAAW,QAASs8N,GAAUyI,EAC7E,CACA,4BAAMuH,EAAuB,UAC3BviO,EAAS,MACTkzB,EAAK,SACLuoM,GAAW,EAAK,aAChBzZ,EAAY,SACZ3iN,EAAQ,gBACRmjO,EAAe,qBACfljO,IAEA,MAAMhT,EAAO4mC,EAAM5mC,KACbm2O,EAAWn2O,EAAK7B,MAChBmgL,EAAIt+K,EAAK5R,IAAI,IAAK,SAClB0vC,EAAI99B,EAAK5R,IAAI,IAAK,UACxB,IAAMkwL,GAAkB,iBAANA,IAAqBxgJ,GAAkB,iBAANA,EAEjD,YADA/rC,EAAK,iDAGP,MAAMwgP,EAAehoP,KAAK+H,QAAQigP,aAClC,IAAsB,IAAlBA,GAAuBj0D,EAAIxgJ,EAAIy0M,EAAc,CAC/C,MAAM3gP,EAAM,uDACZ,GAAIrH,KAAK+H,QAAQkgP,aAEf,YADAzgP,EAAKH,GAGP,MAAM,IAAI5H,MAAM4H,EAClB,CACA,IAAIs8O,EAKAjI,EAASv6O,EACb,GALIsU,EAAKT,IAAI,QACX2uO,QAAwB3jP,KAAKirP,wBAAwBx1O,EAAK5R,IAAI,MAAOslB,IAErD1T,EAAK5R,IAAI,KAAM,aAElB,CACb,MAAMmvO,EAAcv9N,EAAK5R,IAAI,IAAK,eAC5BgoP,EAAkB93D,EAAI,GAAK,EAC3B4xD,EAAWtpM,EAAM3kC,SAASm0O,EAAkBt4M,GAC5C1iC,EAAS4E,EAAKhB,SAAS,IAAK,UAClC,GAAIzU,KAAK0pP,iBAAkB,CAYzB,GAXAhO,EAAUiJ,GAASe,cAAc,CAC/BC,WACA9lO,MAAOk0K,EACPj0K,OAAQyzB,EACRqyM,wBAAyBvpM,aAAiB3pB,GAC1Cud,cAAep/B,IAAS,GAAK,EAC7BmiO,gBAEF0I,EAAQ0I,SAAW57N,EACnBrnB,EAAO,CAACu6O,GACRvQ,EAAauY,YAAYz8O,EAA2B9F,EAAMwiP,GACtDn7N,EAAU,CACZ,MAAMsjO,EAAY,CAChBl5O,GAAI3L,EACJ9F,OACAwiP,mBAEFgI,EAAgB52O,IAAIyT,EAAUojO,EAAUE,GACpCF,GACF5rP,KAAKupP,oBAAoBx0O,IAAI,KAAM62O,EAAUE,EAEjD,CACA,MACF,CAUA,GATApQ,QAAgBiJ,GAASmB,WAAW,CAClCH,WACA9lO,MAAOk0K,EACPj0K,OAAQyzB,EACRqyM,wBAAyBvpM,aAAiB3pB,GAC1Cud,cAAep/B,IAAS,GAAK,EAC7BmiO,cACAznO,2BAA4BvL,KAAK+H,QAAQwD,6BAEvCmwO,EAAQqK,oBAAqB,CAE/B,GADA5a,EAAauY,YAlq7BO,GAkq7BmC,GAAIC,GACvDn7N,EAAU,CACZ,MAAMsjO,EAAY,CAChBl5O,GArq7BgB,GAsq7BhBzR,KAAM,GACNwiP,mBAEFgI,EAAgB52O,IAAIyT,EAAUojO,EAAUE,GACpCF,GACF5rP,KAAKupP,oBAAoBx0O,IAAI,KAAM62O,EAAUE,EAEjD,CACA,MACF,CACA,MAAMl4O,EAAQ,QAAQ5T,KAAKi7O,UAAU8Q,gBAYrC,GAXA5gB,EAAa0Y,cAAcjwO,GAC3B8nO,EAAQsQ,QAAUtQ,EAAQl+M,OAASk+M,EAAQ77N,MAAQ67N,EAAQ57N,OAAS,EAAI47N,EAAQ3hO,KAAKxZ,OACrFP,KAAKwrP,aAAa53O,EAAO8nO,GACzBv6O,EAAO,CAAC,CACN4Y,KAAMnG,EACNiM,MAAO67N,EAAQ77N,MACfC,OAAQ47N,EAAQ57N,OAChBkzN,YAAa0I,EAAQ1I,YACrB7sN,MAAO,IAETglN,EAAauY,YAAYz8O,EAA2B9F,EAAMwiP,GACtDn7N,EAAU,CACZ,MAAMsjO,EAAY,CAChBl4O,QACAhB,GAAI3L,EACJ9F,OACAwiP,mBAEFgI,EAAgB52O,IAAIyT,EAAUojO,EAAUE,GACpCF,GACF5rP,KAAKupP,oBAAoBx0O,IAAI,KAAM62O,EAAUE,EAEjD,CACA,MACF,CACA,MACMlI,EAAUnuO,EAAKT,IAAI,UAAYS,EAAKT,IAAI,QAC9C,GAAI4vO,GAAY7wD,EAAIxgJ,EAFW,MAEoBqwM,EAAS,CAC1D,IACE,MAAMqI,EAAW,IAAItH,GAAS,CAC5BlxO,KAAMzT,KAAKyT,KACX+wN,IAAKr7M,EACLkzB,QACAuoM,WACAx7N,mBAAoBppB,KAAKypP,oBACzBhhO,yBAEFizN,QAAgBuQ,EAASjG,iBAAgB,GAAM,GAC/C7a,EAAa5/N,2BAA6BvL,KAAK+H,QAAQwD,2BACvD4/N,EAAauY,YA5t7BM,GA4t7BmC,CAAChI,GAAUiI,EACnE,CAAE,MAAOv/N,GACP,MAAM/c,EAAM,mCAAmC+c,MAC/C,IAAKpkB,KAAK+H,QAAQkgP,aAChB,MAAM,IAAIxoP,MAAM4H,GAElBG,EAAKH,EACP,CACA,MACF,CACA,IAAIuM,EAAQ,OAAO5T,KAAKi7O,UAAU8Q,gBAChCN,GAAgB,EAalB,GAZIzrP,KAAK0pP,iBACP91O,EAAQ,GAAG5T,KAAKi7O,UAAUM,oBAAoB3nO,IACrC4U,GAAYojO,IACrBH,EAAgBzrP,KAAKqpP,iBAAiBlY,YAAYya,EAAU5rP,KAAKof,WAC7DqsO,IACF/jP,GAAQk9O,EAAU,0CAClBhxO,EAAQ,GAAG5T,KAAKi7O,UAAUM,cAAc3nO,MAG5Cu3N,EAAa0Y,cAAcjwO,GAC3BzS,EAAO,CAACyS,EAAOmgL,EAAGxgJ,GAClB43L,EAAauY,YAAYz8O,EAAuB9F,EAAMwiP,EAAiBC,GACnE6H,EAAe,CACjB,GAAIzrP,KAAKqpP,iBAAiB9X,gBAAgBqa,GAUxC,OATA5rP,KAAKqpP,iBAAiB5X,QAAQma,EAAU,CACtCh4O,QACAhB,GAAI3L,EACJ9F,OACAwiP,kBACAC,UACA5S,SAAU,SAEZhxO,KAAKwrP,aAAa53O,EAAO,KAAM63O,GAGjC,GAAI13D,EAAIxgJ,EAAI,MAAUqwM,EAAS,CAC7B,MAAMsI,QAAoBlsP,KAAKipP,QAAQyB,gBAAgB,YAAa,CAAC92O,EAAO,iBAAkB,CAC5Fg4O,cAEF,GAAIM,EAUF,OATAlsP,KAAKqpP,iBAAiB5X,QAAQma,EAAU,CACtCh4O,QACAhB,GAAI3L,EACJ9F,OACAwiP,kBACAC,UACA5S,SAAU,SAEZhxO,KAAKqpP,iBAAiB7X,YAAYoa,EAAUM,EAGhD,CACF,CAuBA,GAtBAvH,GAASY,WAAW,CAClB9xO,KAAMzT,KAAKyT,KACX+wN,IAAKr7M,EACLkzB,QACAuoM,WACAx7N,mBAAoBppB,KAAKypP,oBACzBhhO,yBACCnF,MAAKsV,UACN8iN,QAAgBuQ,EAASjG,iBAAgB,EAAOhmP,KAAK+H,QAAQwD,4BAC7DmwO,EAAQsQ,QAAUtQ,EAAQl+M,OAASk+M,EAAQ77N,MAAQ67N,EAAQ57N,OAAS,EAAI47N,EAAQ3hO,KAAKxZ,OACrFm7O,EAAQ1lO,IAAM41O,EACVH,GACFzrP,KAAKqpP,iBAAiB7X,YAAYoa,EAAUlQ,EAAQsQ,SAE/ChsP,KAAKwrP,aAAa53O,EAAO8nO,EAAS+P,MACxCtnO,OAAMC,IACP5c,EAAK,2BAA2BoM,QAAYwQ,OACxCwnO,GACF5rP,KAAKqpP,iBAAiB/X,gBAAgBsa,GAEjC5rP,KAAKwrP,aAAa53O,EAAO,KAAM63O,MAEpCjjO,EAAU,CACZ,MAAMsjO,EAAY,CAChBl4O,QACAhB,GAAI3L,EACJ9F,OACAwiP,kBACAC,WAEF+H,EAAgB52O,IAAIyT,EAAUojO,EAAUE,GACpCF,IACF5rP,KAAKupP,oBAAoBx0O,IAAI,KAAM62O,EAAUE,GACzCL,GACFzrP,KAAKqpP,iBAAiB5X,QAAQma,EAAU,CACtCh4O,QACAhB,GAAI3L,EACJ9F,OACAwiP,kBACAC,UACA5S,SAAU,IAIlB,CACF,CACA,WAAAmb,CAAYtH,EAAO17N,EAAWgiN,EAAc2f,EAAMsB,EAAc3jO,GAC9D,MAAM4jO,EAAexH,EAAMhhP,IAAI,KACzByoP,EAAe,CACnBn2B,QAAS0uB,EAAMhhP,IAAI,KAAKnB,KACxB4oP,SAAUzG,EAAMhhP,IAAI,OAEhB0oP,EAAc1H,EAAMhhP,IAAI,MAC9B,GAAIuxO,GAAcmX,GAAc,CAC9B,MAAMC,EAAaxsP,KAAKypP,oBAAoBv2O,OAAOq5O,GAC7CE,EAAc,IAAI9hP,WAAW,KAC7BqnB,EAAM,IAAI1G,aAAa,GAC7B,IAAK,IAAIhqB,EAAI,EAAGA,EAAI,IAAKA,IACvB0wB,EAAI,GAAK1wB,EAAI,IACbkrP,EAAWx6N,EAAK,EAAGA,EAAK,GACxBy6N,EAAYnrP,GAAc,IAAT0wB,EAAI,GAAW,EAElCs6N,EAAaG,YAAcA,CAC7B,CACA,OAAOzsP,KAAK4qP,iBAAiBzhO,EAAWkjO,EAAcC,EAAcnhB,EAAc2f,EAAMsB,EAAa7hM,MAAM10C,QAAS4S,EACtH,CACA,sBAAAikO,CAAuBC,GACrB,IAAIC,EACJ,GAAIxrP,MAAMsT,QAAQi4O,GAChBC,EAAgBD,MACX,KAAIvX,GAAcuX,GAGvB,OAAO,KAFPC,EAAgB,CAACD,EAGnB,CACA,MAAME,EAAe,GACrB,IAAIC,EAAS,EACXC,EAAkB,EACpB,IAAK,MAAMvwO,KAASowO,EAAe,CACjC,MAAML,EAAcvsP,KAAKyT,KAAK+V,WAAWhN,GAEzC,GADAswO,IACI/1O,GAAOw1O,EAAa,YAAa,CACnCM,EAAatrP,KAAK,MAClB,QACF,CAAO,IAAK6zO,GAAcmX,GACxB,OAAO,KAET,MAAMC,EAAaxsP,KAAKypP,oBAAoBv2O,OAAOq5O,GAC7CE,EAAc,IAAI9hP,WAAW,KACjCqnB,EAAM,IAAI1G,aAAa,GACzB,IAAK,IAAIlD,EAAI,EAAGA,EAAI,IAAKA,IACvB4J,EAAI,GAAK5J,EAAI,IACbokO,EAAWx6N,EAAK,EAAGA,EAAK,GACxBy6N,EAAYrkO,GAAc,IAAT4J,EAAI,GAAW,EAElC66N,EAAatrP,KAAKkrP,GAClBM,GACF,CACA,OAAiB,IAAXD,GAA2B,IAAXA,GAGE,IAApBC,EAFK,KAKFF,CACT,CACA,gBAAAG,CAAiBp6O,EAAIub,EAAOhF,EAAWg3N,EAAS8M,EAAa9hB,EAAc2f,EAAMoC,GAC/E,MAAMC,EAAe,IAAIpK,GACnBqK,EAAmB55O,GAAK4B,MAAM,CAClC3B,KAAMzT,KAAKyT,KACX4B,UAAW,CAAC43O,EAAYppP,IAAI,aAAcslB,KAE5C,OAAOnpB,KAAKurP,gBAAgB,CAC1BvpO,OAAQm+N,EACR2K,OACA3hO,UAAWikO,EACXjiB,aAAcgiB,IACb7pO,MAAK,WACN,MAAM+pO,EAAiBF,EAAatoB,QAC9ByoB,EAAkBpiB,GAAmBmiB,EAAgBJ,EAAa9+N,GACxEg9M,EAAa4Y,gBAAgBoJ,EAAa9J,cAC1ClY,EAAaqY,MAAM5wO,EAAI06O,GACnBL,EAAYr5O,OACds5O,EAAwBn4O,IAAI,KAAMk4O,EAAYr5O,MAAO,CACnDy5O,iBACA53O,KAAMw3O,GAGZ,IAAG9oO,OAAMC,IACP,KAAIA,aAAkBxa,GAAtB,CAGA,IAAI5J,KAAK+H,QAAQkgP,aAIjB,MAAM7jO,EAHJ5c,EAAK,yCAAyC4c,MAFhD,CAKY,GAEhB,CACA,mBAAMmpO,CAAcpkO,EAAWqkO,EAAUC,EAAStiB,EAAc2f,EAAMvgM,EAAOmjM,EAAmB,KAAMzvO,EAAc,MAClH,MAAM8hM,EAAWytC,IAAW,aAAcn6O,GAAOm6O,EAAS,GAAG9qP,KAAO,KACpE,IAAIirP,QAAmB3tP,KAAK4tP,SAAS7tC,EAAU0tC,EAAStkO,EAAWukO,EAAkBzvO,GACrF,GAAI0vO,EAAWrrC,KAAKmT,YAClB,UACQk4B,EAAWE,cAAc7tP,KAAMmpB,EAAW2hO,GAChD3f,EAAa4Y,gBAAgB4J,EAAWG,kBAC1C,CAAE,MAAO1pO,GACPupO,EAAa,IAAII,GAAe,CAC9BttC,WAAY,eACZ6B,KAAM,IAAI8hB,GAAU,0BAA0BhgN,KAC9C3O,KAAMk4O,EAAWrrC,KACjB0rC,iBAAkBhuP,KAAK+H,SAE3B,CAIF,OAFAwiD,EAAM+3J,KAAOqrC,EAAWrrC,KACxBqrC,EAAW5oO,KAAK/kB,KAAKipP,SACd0E,EAAWltC,UACpB,CACA,UAAAwtC,CAAWtqB,EAAOp5K,GAChB,MAAM+3J,EAAO/3J,EAAM+3J,KACbN,EAASM,EAAKohB,cAAcC,GAOlC,OANIrhB,EAAKvoM,OAvn8BO,EAwn8BYwwC,EAAM2jM,mBACoB,YAA9B3jM,EAAM4jM,eAAezrP,MAAsB4/M,EAAKkT,iBAAmBx1N,KAAK+H,QAAQytN,kBACpGwzB,GAAiBoF,eAAe9rC,EAAMN,EAAQhiN,KAAKipP,QAASjpP,KAAK+H,SAG9Di6M,CACT,CACA,eAAAqsC,CAAgB9jM,GACd,GAAIA,EAAM+3J,KACR,OAEF,MAAMl+L,EAAS,IAAIza,EAAY,iEAC/B,IAAI3J,KAAK+H,QAAQkgP,aAIjB,MAAM7jO,EAHJ5c,EAAK,qBAAqB4c,MAI9B,CACA,eAAMkqO,EAAU,UACdnlO,EAAS,OACTolO,EAAM,aACNpjB,EAAY,SACZ3iN,EAAQ,KACRsiO,EAAI,aACJsB,EAAY,iBACZoC,EAAgB,qBAChB/lO,IAEA,MAAMgmO,EAAYF,EAAO36O,MACzB,IAAI86O,GAAiB,EACrB,MAAMC,EAAY,GAClB,IAAIjrO,EAAUhR,QAAQG,UACtB,IAAK,MAAMrP,KAAO+qP,EAAO35O,UAAW,CAClC,MAAMjM,EAAQ4lP,EAAO1qP,IAAIL,GACzB,OAAQA,GACN,IAAK,OACH,MACF,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACHmrP,EAAUptP,KAAK,CAACiC,EAAKmF,IACrB,MACF,IAAK,OACH+lP,GAAiB,EACjBhrO,EAAUA,EAAQJ,MAAK,IAAMtjB,KAAKutP,cAAcpkO,EAAW,KAAMxgB,EAAM,GAAIwiO,EAAc2f,EAAMsB,EAAa7hM,OAAOjnC,MAAK,SAAUm9L,GAChI0qB,EAAa0Y,cAAcpjC,GAC3BkuC,EAAUptP,KAAK,CAACiC,EAAK,CAACi9M,EAAY93M,EAAM,KAC1C,MACA,MACF,IAAK,KACHgmP,EAAUptP,KAAK,CAACiC,EAAK+kP,GAAmB5/O,KACxC,MACF,IAAK,QACH,GAAIoO,GAAOpO,EAAO,QAAS,CACzBgmP,EAAUptP,KAAK,CAACiC,GAAK,IACrB,KACF,CACImF,aAAiB6K,IACnBk7O,GAAiB,EACjBhrO,EAAUA,EAAQJ,MAAK,IAAMtjB,KAAKmsP,YAAYxjP,EAAOwgB,EAAWgiN,EAAc2f,EAAMsB,EAAc3jO,KAClGkmO,EAAUptP,KAAK,CAACiC,GAAK,KAErBgE,EAAK,0BAEP,MACF,IAAK,KACH,MAAMqlP,EAAe7sP,KAAK0sP,uBAAuB/jP,GACjDgmP,EAAUptP,KAAK,CAACiC,EAAKqpP,IACrB,MACF,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,MACL,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,KACHzlP,EAAK,0BAA4B5D,GACjC,MACF,QACE4D,EAAK,kCAAoC5D,GAG/C,OACMkgB,EACFirO,EAAUpuP,OAAS,GACrB4qO,EAAaqY,MAjm8BN,EAim8B2B,CAACmL,IAEjCD,GACFF,EAAiBz5O,IAAIyT,EAAUimO,EAAWE,EAE9C,CACA,QAAAf,CAAS7tC,EAAUuC,EAAMn5L,EAAWukO,EAAmB,KAAMzvO,EAAc,MACzE,MAAM2wO,EAAYh2N,SACT,IAAIm1N,GAAe,CACxBttC,WAAY,eACZ6B,KAAM,IAAI8hB,GAAU,SAASrkB,wBAC7BtqM,KAAM6sM,EACN0rC,iBAAkBhuP,KAAK+H,UAG3B,IAAI0lP,EACJ,GAAInrC,EACEA,aAAgBjuM,KAClBo5O,EAAUnrC,OAEP,CACL,MAAMusC,EAAU1lO,EAAUtlB,IAAI,QAC1BgrP,IACFpB,EAAUoB,EAAQl6O,OAAOorM,GAE7B,CACA,GAAI0tC,EAAS,CACX,GAAIztP,KAAKspP,eAAet0O,IAAIy4O,GAC1B,OAAOmB,IAET,GAAI5uP,KAAKkpP,UAAUl0O,IAAIy4O,GACrB,OAAOztP,KAAKkpP,UAAUrlP,IAAI4pP,GAE5B,IACEnrC,EAAOtiN,KAAKyT,KAAK+V,WAAWikO,EAC9B,CAAE,MAAO18O,GACPvJ,EAAK,8BAA8BuJ,MACrC,CACF,CACA,KAAMuxM,aAAgB9uM,IAAO,CAC3B,IAAKxT,KAAK+H,QAAQkgP,eAAiBjoP,KAAK0pP,iBAEtC,OADAliP,EAAK,SAASu4M,wBACP6uC,IAETpnP,EAAK,SAASu4M,oEACduC,EAAOorC,GAAoB1E,GAAiB0E,gBAC9C,CACA,GAAIprC,EAAK95L,UAAYxoB,KAAKkpP,UAAUl0O,IAAIstM,EAAK95L,UAC3C,OAAOxoB,KAAKkpP,UAAUrlP,IAAIy+M,EAAK95L,UAEjC,MAAM,QACJ9E,EAAO,QACP7Q,GACEH,QAAQ+P,gBACZ,IAAIqsO,EACJ,IACEA,EAAmB9uP,KAAK+uP,gBAAgBzsC,GACxCwsC,EAAiB7wO,YAAcA,CACjC,CAAE,MAAOmG,GAEP,OADA5c,EAAK,uCAAuC4c,OACrCwqO,GACT,CACA,MAAM,WACJhgB,EAAU,KACVogB,GACEF,EACEG,EAAexB,aAAmBp5O,GACxC,IAAI66O,EACJ,GAAIF,GAAQpgB,aAAsBp7N,GAAM,CACtC,MAAMwmO,EAAcpL,EAAWoL,cAAgBt2O,OAAOwP,OAAO,MAC7D,GAAI8mO,EAAYgV,GAAO,CACrB,MAAMG,EAAenV,EAAYgV,GAAMn4O,SACvC,GAAIo4O,GAAgBE,GAAgBnvP,KAAKkpP,UAAUl0O,IAAIm6O,GAErD,OADAnvP,KAAKkpP,UAAUtyO,SAAS62O,EAAS0B,GAC1BnvP,KAAKkpP,UAAUrlP,IAAI4pP,EAE9B,MACEzT,EAAYgV,GAAQ,CAClBE,OAAQlvP,KAAKi7O,UAAUO,gBAGvByT,IACFjV,EAAYgV,GAAMn4O,SAAW42O,GAE/ByB,EAASlV,EAAYgV,GAAME,MAC7B,MACEA,EAASlvP,KAAKi7O,UAAUO,eA0B1B,OAxBA9zO,EAAOwnP,GAAQjnP,WAAW,KAAM,6CAC5BgnP,EACFjvP,KAAKkpP,UAAU3yO,IAAIk3O,EAAS/pO,IAE5B4+L,EAAK95L,SAAW,YAAY0mO,IAC5BlvP,KAAKkpP,UAAU3yO,IAAI+rM,EAAK95L,SAAU9E,IAEpC4+L,EAAK7B,WAAa,GAAGzgN,KAAKi7O,UAAUM,cAAc2T,IAClDlvP,KAAKovP,cAAcN,GAAkBxrO,MAAK+rO,IACxCx8O,EAAQ,IAAIk7O,GAAe,CACzBttC,WAAY6B,EAAK7B,WACjB6B,KAAM+sC,EACN55O,KAAM6sM,EACN0rC,iBAAkBhuP,KAAK+H,UACtB,IACFoc,OAAMC,IACP5c,EAAK,qCAAqC4c,OAC1CvR,EAAQ,IAAIk7O,GAAe,CACzBttC,WAAY6B,EAAK7B,WACjB6B,KAAM,IAAI8hB,GAAUhgN,aAAkB3kB,MAAQ2kB,EAAOpb,QAAUob,GAC/D3O,KAAM6sM,EACN0rC,iBAAkBhuP,KAAK+H,UACtB,IAEE2b,CACT,CACA,SAAA4rO,CAAUnkB,EAAcv4N,EAAIzR,EAAMouP,GAAc,GAC9C,MAAMC,EAAYrkB,EAAa5qO,OAAS,EAIxC,GAHKY,IACHA,EAAO,IAELquP,EAAY,GAzo8BH,KAyo8BQrkB,EAAa2H,QAAQ0c,GAAkC,CAK1E,IAAIviP,EACJ,OALIsiP,IACF/nP,EAAK,8BAA8BoL,+BACnCu4N,EAAaqY,MAAMv8O,EAAU,OAGvB2L,GACN,KArt8BK,GAst8BH,MAAM7C,EAAI5O,EAAK,GAAKA,EAAK,GACnB6O,EAAI7O,EAAK,GAAKA,EAAK,GACzB8L,EAAS,CAAC7C,KAAKC,IAAIlJ,EAAK,GAAI4O,GAAI3F,KAAKC,IAAIlJ,EAAK,GAAI6O,GAAI5F,KAAK2D,IAAI5M,EAAK,GAAI4O,GAAI3F,KAAK2D,IAAI5M,EAAK,GAAI6O,IAC9F,MACF,KAhu8BE,GAiu8BF,KAhu8BE,GAiu8BA/C,EAAS,CAAC9L,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1C,MACF,QACE8L,EAAS,CAACwiP,IAAUA,KAAU,KAAW,KAG7CtkB,EAAaqY,MA7p8BF,GA6p8B2B,CAAC,CAAC5wO,GAAKzR,EAAM8L,IAC/CsiP,GACFpkB,EAAaqY,MAAMv8O,EAAa,KAEpC,KAAO,CACL,MAAMyoP,EAASvkB,EAAasV,UAAU+O,GACtCE,EAAO,GAAGnuP,KAAKqR,GACf88O,EAAO,GAAGnuP,QAAQJ,GAClB,MAAM8L,EAASyiP,EAAO,GACtB,OAAQ98O,GACN,KA5u8BK,GA6u8BH,MAAM7C,EAAI5O,EAAK,GAAKA,EAAK,GACnB6O,EAAI7O,EAAK,GAAKA,EAAK,GACzB8L,EAAO,GAAK7C,KAAKC,IAAI4C,EAAO,GAAI9L,EAAK,GAAI4O,GACzC9C,EAAO,GAAK7C,KAAKC,IAAI4C,EAAO,GAAI9L,EAAK,GAAI6O,GACzC/C,EAAO,GAAK7C,KAAK2D,IAAId,EAAO,GAAI9L,EAAK,GAAI4O,GACzC9C,EAAO,GAAK7C,KAAK2D,IAAId,EAAO,GAAI9L,EAAK,GAAI6O,GACzC,MACF,KA1v8BE,GA2v8BF,KA1v8BE,GA2v8BA/C,EAAO,GAAK7C,KAAKC,IAAI4C,EAAO,GAAI9L,EAAK,IACrC8L,EAAO,GAAK7C,KAAKC,IAAI4C,EAAO,GAAI9L,EAAK,IACrC8L,EAAO,GAAK7C,KAAK2D,IAAId,EAAO,GAAI9L,EAAK,IACrC8L,EAAO,GAAK7C,KAAK2D,IAAId,EAAO,GAAI9L,EAAK,IAG3C,CACF,CACA,eAAAkqP,EAAgB,GACdniO,EAAE,UACFC,EAAS,qBACTV,IAEA,OAAOjD,GAAWyD,WAAW,CAC3BC,KACAzV,KAAMzT,KAAKyT,KACX0V,YACAC,mBAAoBppB,KAAKypP,oBACzBhhO,yBACCtE,OAAMC,IACP,GAAIA,aAAkBxa,EACpB,OAAO,KAET,GAAI5J,KAAK+H,QAAQkgP,aAEf,OADAzgP,EAAK,2CAA2C4c,OACzC,KAET,MAAMA,CAAM,GAEhB,CACA,YAAAkgN,EAAa,QACXC,EAAO,UACPp7M,EAAS,qBACTV,EAAoB,yBACpBknO,IAEA,IAIIC,EAJA/zN,EAAK8zN,EAAyB9rP,IAAI0gO,GACtC,GAAI1oM,EACF,OAAOA,EAGT,IAEE+zN,EADoBvrB,GAAQC,aAAaC,EAASvkO,KAAKyT,KAAM0V,EAAWnpB,KAAKypP,oBAAqBhhO,GAC1Eo8M,OAC1B,CAAE,MAAOzgN,GACP,GAAIA,aAAkBxa,EACpB,OAAO,KAET,GAAI5J,KAAK+H,QAAQkgP,aAGf,OAFAzgP,EAAK,qCAAqC4c,OAC1CurO,EAAyB56O,IAAIwvN,EAAS,MAC/B,KAET,MAAMngN,CACR,CAWA,OAVAyX,EAAK,WAAW77B,KAAKi7O,UAAU8Q,gBAC3B/rP,KAAK0pP,mBACP7tN,EAAK,GAAG77B,KAAKi7O,UAAUM,oBAAoB1/M,KAE7C8zN,EAAyB56O,IAAIwvN,EAAS1oM,GAClC77B,KAAK0pP,iBACP1pP,KAAKipP,QAAQlkO,KAAK,YAAa,CAAC8W,EAAI,UAAW+zN,IAE/C5vP,KAAKipP,QAAQlkO,KAAK,MAAO,CAAC8W,EAAI77B,KAAKof,UAAW,UAAWwwO,IAEpD/zN,CACT,CACA,YAAAg0N,CAAa1kB,EAAcv4N,EAAIzR,EAAM+nB,EAAIkiB,EAAUjiB,EAAW2hO,EAAMriO,EAAsBykO,EAAyByC,GACjH,MAAMG,EAAc3uP,EAAKmwC,MACzB,GAAIw+M,aAAuBz8O,GAAM,CAC/B,MAAM08O,EAAa3kN,EAASz2B,OAAOm7O,EAAYptP,MACzCstP,EAAqBD,aAAsB17O,IAAO64O,EAAwBnkO,SAASgnO,GACzF,GAAIC,EACF,IACE,MAAM7hO,EAAQjF,EAAGkC,KAAOlC,EAAGkC,KAAK1F,OAAOvkB,EAAM,GAAK,KAC5CmsP,EAAkBpiB,GAAmB8kB,EAAmB3C,eAAgB2C,EAAmBv6O,KAAM0Y,GAEvG,YADAg9M,EAAaqY,MAAM5wO,EAAI06O,EAEzB,CAAE,MAAO,CAEX,MAAMnN,EAAUngP,KAAKyT,KAAK+V,WAAWumO,GACrC,GAAI5P,EAAS,CACX,MAAM1qO,EAAO0qO,aAAmB7oO,GAAa6oO,EAAQ1qO,KAAO0qO,EACtD8P,EAAUx6O,EAAK5R,IAAI,eACzB,GAzgCE,IAygCEosP,EAAgC,CAClC,MAAM9hO,EAAQjF,EAAGkC,KAAOlC,EAAGkC,KAAK1F,OAAOvkB,EAAM,GAAK,KAClD,OAAOnB,KAAKgtP,iBAAiBp6O,EAAIub,EAAOhF,EAAWg3N,EAAS1qO,EAAM01N,EAAc2f,EAAMoC,EACxF,CAAO,GA3gCJ,IA2gCQ+C,EAAiC,CAC1C,MAAM1rB,EAAU9uN,EAAK5R,IAAI,WACnB+P,EAAQ5T,KAAKskO,aAAa,CAC9BC,UACAp7M,YACAV,uBACAknO,6BAEF,GAAI/7O,EAAO,CACT,MAAM2W,EAAS9O,GAAahG,EAAKhB,SAAS,UAAW,MACrD02N,EAAaqY,MAAM5wO,EAAI,CAAC,UAAWgB,EAAO2W,GAC5C,CACA,MACF,CACA,MAAM,IAAI5gB,EAAY,wBAAwBsmP,IAChD,CACF,CACA,MAAM,IAAItmP,EAAY,wBAAwBmmP,IAChD,CACA,0BAAAI,CAA2BlvP,EAAOmvP,EAAgBC,GAEhD,KAAMD,EADc,GAGlB,YADA3oP,EAAK,8CAGP,MAAMjH,EAASS,EAAMT,OACfq1O,EAAW51O,KAAKyT,KAAK+V,WAAWxoB,EAAM,IAC5C,KAAIT,EAAS,IAAOq1O,aAAoBviO,GAAxC,CAIA,OAAQuiO,EAASlzO,MACf,IAAK,MACL,IAAK,KACL,IAAK,MACH0tP,EAAc7uP,KAAKq0O,EAASlzO,MAC5B,MACF,QAEE,YADA8E,EAAK,oBAAoBouO,EAASlzO,iCAGtC,IAAK,IAAIpB,EAAI,EAAGA,EAAIf,EAAQe,IAAK,CAC/B,MAAMu4D,EAAM74D,EAAMM,GACZ+uP,EAASrwP,KAAKyT,KAAK+V,WAAWqwC,GACpC,GAAIz4D,MAAMsT,QAAQ27O,GAAS,CACzB,MAAMC,EAAe,GACrBF,EAAc7uP,KAAK+uP,GACnBtwP,KAAKkwP,2BAA2BG,EAAQF,EAAgBG,EAC1D,MAAWz2L,aAAexlD,IACxB+7O,EAAc7uP,KAAKs4D,EAAIrtD,WAE3B,CArBA,MAFEhF,EAAK,gCAwBT,CACA,6BAAMyjP,CAAwBsF,EAAmBpnO,GAC/C,IAAIw6N,EACJ,GAAI4M,aAA6Bl9O,GAE/BswO,EADmBx6N,EAAUtlB,IAAI,cACJA,IAAI0sP,EAAkB7tP,UAC9C,MAAI6tP,aAA6B/8O,IAGtC,MAAM,IAAI7J,EAAY,0CAFtBg6O,EAAkB4M,CAGpB,CACA,MAAMC,EAAsB7M,EAAgB9/O,IAAI,SAASnB,KACzD,GAA4B,QAAxB8tP,EACF,MAAO,CACLjsP,KAAMisP,EACN30N,GAAI8nN,EAAgB/vO,OAEjB,GAA4B,SAAxB48O,EAAgC,CACzC,MAAMC,EAAa9M,EAAgB9/O,IAAI,MACvC,GAAIzC,MAAMsT,QAAQ+7O,GAAa,CAC7B,MAAMziO,EAAS,GAEf,GADAhuB,KAAKkwP,2BAA2BO,EAAY,EAAGziO,GAC3CA,EAAOztB,OAAS,EAClB,MAAO,CACLgE,KAAM,OACNksP,WAAYziO,EAGlB,CACA,MAAM0iO,EAAwB/M,EAAgB9/O,IAAI,QAClD,GAAIzC,MAAMsT,QAAQg8O,IAA0BA,aAAiCl9O,GAAM,CACjF,MAAMm9O,EAAW,GACjB,GAAIvvP,MAAMsT,QAAQg8O,GAChB,IAAK,MAAME,KAAOF,EAChBC,EAASpvP,KAAKqvP,EAAIpkP,iBAGpBmkP,EAASpvP,KAAKmvP,EAAsB98O,OAEtC,MAAO,CACLrP,KAAMisP,EACN3uC,IAAK8uC,EACLE,OAAQlN,EAAgB9/O,IAAI,eAAgBwP,GAAOswO,EAAgB9/O,IAAI,KAAKnB,KAAO,KACnF+tP,WAAY,KAEhB,CAAO,GAAIC,aAAiCr8O,GAC1C,MAAO,CACL9P,KAAMisP,EACN30N,GAAI60N,EAAsBlkP,WAGhC,CACA,OAAO,IACT,CACA,eAAA++O,EAAgB,OACdvpO,EAAM,KACN8oO,EAAI,UACJ3hO,EAAS,aACTgiN,EAAY,aACZ4f,EAAe,KAAI,iBACnB2C,EAAmB,OAInB,GAFAvkO,IAAc3V,GAAK0B,MACnB61O,IAAiB,IAAI+F,IAChB3lB,EACH,MAAM,IAAI1rO,MAAM,qDAElB,MAAMsxP,EAAO/wP,KACPyT,EAAOzT,KAAKyT,KAClB,IAAI87O,GAAc,EAClB,MAAM5D,EAAkB,IAAInb,GACtB/nN,EAAuB,IAAIgoN,GAC3B+d,EAAmB,IAAI7d,GACvBuc,EAA0B,IAAItc,GAC9B+e,EAA2B,IAAIh8O,IAC/Bq9O,EAAQ7nO,EAAUtlB,IAAI,YAAc2P,GAAK0B,MACzCk2B,EAAWjiB,EAAUtlB,IAAI,YAAc2P,GAAK0B,MAC5Ck3O,EAAe,IAAI6E,GAAalG,GAChCmG,EAAe,IAAIC,GAAsBnvO,EAAQvO,EAAM24O,GACvDgF,EAAkB,IAAIzI,GAC5B,SAAS0I,EAAuBC,GAC9B,IAAK,IAAIhwP,EAAI,EAAG0P,EAAKkgP,EAAaK,iBAAkBjwP,EAAI0P,EAAI1P,IAC1D6pO,EAAaqY,MAAMv8O,EAAa,GAEpC,CACA,OAAO,IAAIyL,SAAQ,SAAS8+O,EAAY3+O,EAASoQ,GAC/C,MAAM8R,EAAO,SAAUrR,GACrBhR,QAAQ++O,IAAI,CAAC/tO,EAASynN,EAAazyM,QAAQpV,MAAK,WAC9C,IACEkuO,EAAY3+O,EAASoQ,EACvB,CAAE,MAAOlS,GACPkS,EAAOlS,EACT,CACF,GAAGkS,EACL,EACA6nO,EAAK4G,sBACLN,EAAgBt4O,QAChB,MAAMs+N,EAAY,CAAC,EACnB,IAAIua,EAAMrwP,EAAG0P,EAAIkY,EAAIxmB,EAAMkvP,EAC3B,OAASD,EAAOP,EAAgB33N,WAC9B29M,EAAUj2O,KAAO,KACZ+vP,EAAa7tO,KAAK+zN,KAFiB,CAKxC,IAAIj2O,EAAOi2O,EAAUj2O,KACjByR,EAAKwkO,EAAUxkO,GACnB,OAAa,EAALA,GACN,KA778BM,GAg88BJ,GAFAg/O,EAAczwP,EAAK,aAAckS,GACjC3Q,EAAOvB,EAAK,GAAGuB,KACXkvP,EAAa,CACf,MAAMC,EAAalG,EAAgB3iO,UAAUtmB,GAC7C,GAAImvP,EAAY,CACdnJ,GAAyBvd,EAAc0mB,GACvC1wP,EAAO,KACP,QACF,CACF,CA8DA,YA7DA4zB,EAAK,IAAIriB,SAAQ,SAAUo/O,EAAgBC,GACzC,IAAKH,EACH,MAAM,IAAIjoP,EAAY,wCAExB,IAAIkhP,EAAOmG,EAAMr8O,OAAOjS,GACxB,GAAImoP,aAAgBx2O,GAAK,CACvB,MAAMw9O,EAAalG,EAAgB5iO,SAAS8hO,IAASkG,EAAKxH,oBAAoBxgO,SAAS8hO,GACvF,GAAIgH,EAGF,OAFAnJ,GAAyBvd,EAAc0mB,QACvCC,IAGF,MAAME,EAAcjB,EAAK1H,iBAAiBnuM,QAAQ2vM,EAAMkG,EAAK3xO,WAC7D,GAAI4yO,EAIF,OAHA7mB,EAAa0Y,cAAcmO,EAAYp+O,OACvCu3N,EAAauY,YAAYsO,EAAYp/O,GAAIo/O,EAAY7wP,KAAM6wP,EAAYrO,gBAAiBqO,EAAYpO,cACpGkO,IAGFjH,EAAOp3O,EAAKa,MAAMu2O,EACpB,CACA,KAAMA,aAAgBvzO,IACpB,MAAM,IAAI3N,EAAY,8BAExB,MAAMpF,EAAOsmP,EAAKp1O,KAAK5R,IAAI,WAC3B,KAAMU,aAAgB8O,IACpB,MAAM,IAAI1J,EAAY,sCAExB,GAAkB,SAAdpF,EAAK7B,KAMP,OALA0pP,EAAalpC,YACb6tC,EAAKnG,iBAAiBzhO,EAAW0hO,EAAM,KAAM1f,EAAc2f,EAAMsB,EAAa7hM,MAAM10C,QAAS4S,GAAsBnF,MAAK,WACtH8oO,EAAajpC,UACb2uC,GACF,GAAGC,GAEE,GAAkB,UAAdxtP,EAAK7B,KAAT,CAUA,GAAkB,OAAd6B,EAAK7B,KAGd,MAAM,IAAIiH,EAAY,6BAA6BpF,EAAK7B,QAFxD0E,EAAK,8BAIP0qP,GADA,MAbEf,EAAKrF,uBAAuB,CAC1BviO,YACAkzB,MAAOwuM,EACP1f,eACA3iN,SAAU9lB,EACVipP,kBACAljO,yBACCnF,KAAKwuO,EAAgBC,EAQ5B,IAAG5tO,OAAM,SAAUC,GACjB,KAAIA,aAAkBxa,GAAtB,CAGA,IAAImnP,EAAKhpP,QAAQkgP,aAIjB,MAAM7jO,EAHJ5c,EAAK,wCAAwC4c,MAF/C,CAMF,KAEF,KAAKnd,EACH,MAAMgrP,EAAW9wP,EAAK,GAKtB,YAJA4zB,EAAKg8N,EAAKxD,cAAcpkO,EAAWhoB,EAAM,KAAMgqO,EAAc2f,EAAMsB,EAAa7hM,MAAOmjM,GAAkBpqO,MAAK,SAAUm9L,GACtH0qB,EAAa0Y,cAAcpjC,GAC3B0qB,EAAaqY,MAAMv8O,EAAa,CAACw5M,EAAYwxC,GAC/C,KAEF,KAhj9BG,GAij9BD1C,GAAc,EACd,MACF,KAlj9BC,GAmj9BCA,GAAc,EACd,MACF,KAph9BQ,GAqh9BN,MAAM/mO,EAAWrnB,EAAK,GAAGqnB,SACzB,GAAIA,EAAU,CACZ,MAAMqpO,EAAalG,EAAgB3iO,UAAUR,GAC7C,GAAIqpO,EAAY,CACdnJ,GAAyBvd,EAAc0mB,GACvC1wP,EAAO,KACP,QACF,CACF,CAUA,YATA4zB,EAAKg8N,EAAKrF,uBAAuB,CAC/BviO,YACAkzB,MAAOl7C,EAAK,GACZyjP,UAAU,EACVzZ,eACA3iN,WACAmjO,kBACAljO,0BAGJ,KAAKxhB,EACH,IAAKmlP,EAAa7hM,MAAM+3J,KAAM,CAC5ByuC,EAAK1C,gBAAgBjC,EAAa7hM,OAClC,QACF,CACAppD,EAAK,GAAK4vP,EAAK9C,WAAW9sP,EAAK,GAAIirP,EAAa7hM,OAChD,MACF,KAnk9BQ,GAok9BN,IAAK6hM,EAAa7hM,MAAM+3J,KAAM,CAC5ByuC,EAAK1C,gBAAgBjC,EAAa7hM,OAClC,QACF,CACA,MAAM2nM,EAAiB,GACrB3nM,EAAQ6hM,EAAa7hM,MACvB,IAAK,MAAM4nM,KAAWhxP,EAAK,GACF,iBAAZgxP,EACTD,EAAe3wP,QAAQwvP,EAAK9C,WAAWkE,EAAS5nM,IACpB,iBAAZ4nM,GAChBD,EAAe3wP,KAAK4wP,GAGxBhxP,EAAK,GAAK+wP,EACVt/O,EAAK3L,EACL,MACF,KAnl9BU,GAol9BR,IAAKmlP,EAAa7hM,MAAM+3J,KAAM,CAC5ByuC,EAAK1C,gBAAgBjC,EAAa7hM,OAClC,QACF,CACA4gL,EAAaqY,MA3l9Bb,IA4l9BAriP,EAAK,GAAK4vP,EAAK9C,WAAW9sP,EAAK,GAAIirP,EAAa7hM,OAChD33C,EAAK3L,EACL,MACF,KA3l9BoB,GA4l9BlB,IAAKmlP,EAAa7hM,MAAM+3J,KAAM,CAC5ByuC,EAAK1C,gBAAgBjC,EAAa7hM,OAClC,QACF,CACA4gL,EAAaqY,MApm9Bb,IAqm9BArY,EAAaqY,MA9m9BP,GA8m9BiC,CAACriP,EAAKyyB,UAC7Cu3M,EAAaqY,MAhn9BP,GAgn9BiC,CAACriP,EAAKyyB,UAC7CzyB,EAAK,GAAK4vP,EAAK9C,WAAW9sP,EAAK,GAAIirP,EAAa7hM,OAChD33C,EAAK3L,EACL,MACF,KA/m9Bc,GAgn9BZmlP,EAAa7hM,MAAM2jM,kBAAoB/sP,EAAK,GAC5C,MACF,KArm9BW,GAsm9BT,CACE,MAAMooB,EAAmB/D,GAAWqD,UAAU1nB,EAAK,GAAIsS,EAAMgV,GAC7D,GAAIc,EAAkB,CACpB6iO,EAAa7hM,MAAM4jM,eAAiB5kO,EACpC,QACF,CAQA,YAPAwL,EAAKg8N,EAAK1F,gBAAgB,CACxBniO,GAAI/nB,EAAK,GACTgoB,YACAV,yBACCnF,MAAK,SAAU6jN,GAChBilB,EAAa7hM,MAAM4jM,eAAiBhnB,GAAc3hN,GAAWiE,WAAWC,IAC1E,IAEF,CACF,KAtn9Ba,GAun9BX,CACE,MAAMH,EAAmB/D,GAAWqD,UAAU1nB,EAAK,GAAIsS,EAAMgV,GAC7D,GAAIc,EAAkB,CACpB6iO,EAAa7hM,MAAM6nM,iBAAmB7oO,EACtC,QACF,CAQA,YAPAwL,EAAKg8N,EAAK1F,gBAAgB,CACxBniO,GAAI/nB,EAAK,GACTgoB,YACAV,yBACCnF,MAAK,SAAU6jN,GAChBilB,EAAa7hM,MAAM6nM,iBAAmBjrB,GAAc3hN,GAAWiE,WAAWC,IAC5E,IAEF,CACF,KAlo9BM,GAmo9BJR,EAAKkjO,EAAa7hM,MAAM4jM,eACxBhtP,EAAO+nB,EAAGxD,OAAOvkB,EAAM,GACvByR,EAAK3L,EACL,MACF,KAzo9BQ,GA0o9BNiiB,EAAKkjO,EAAa7hM,MAAM6nM,iBACxBjxP,EAAO+nB,EAAGxD,OAAOvkB,EAAM,GACvByR,EAAK3L,EACL,MACF,KAzo9BK,GA0o9BHmlP,EAAa7hM,MAAM4jM,eAAiB3oO,GAAWiE,WAAWC,KAC1DvoB,EAAOqkB,GAAWiE,WAAWC,KAAKhE,OAAOvkB,EAAM,GAC/CyR,EAAK3L,EACL,MACF,KA/o9BO,GAgp9BLmlP,EAAa7hM,MAAM6nM,iBAAmB5sO,GAAWiE,WAAWC,KAC5DvoB,EAAOqkB,GAAWiE,WAAWC,KAAKhE,OAAOvkB,EAAM,GAC/CyR,EAAK3L,EACL,MACF,KA/o9BU,GAgp9BRmlP,EAAa7hM,MAAM4jM,eAAiB3oO,GAAWiE,WAAWG,KAC1DzoB,EAAOqkB,GAAWiE,WAAWG,KAAKlE,OAAOvkB,EAAM,GAC/CyR,EAAK3L,EACL,MACF,KArp9BY,GAsp9BVmlP,EAAa7hM,MAAM6nM,iBAAmB5sO,GAAWiE,WAAWG,KAC5DzoB,EAAOqkB,GAAWiE,WAAWG,KAAKlE,OAAOvkB,EAAM,GAC/CyR,EAAK3L,EACL,MACF,KAAKA,EACHmlP,EAAa7hM,MAAM4jM,eAAiB3oO,GAAWiE,WAAW5D,IAC1D1kB,EAAOqkB,GAAWiE,WAAW5D,IAAIH,OAAOvkB,EAAM,GAC9C,MACF,KAAK8F,EACHmlP,EAAa7hM,MAAM6nM,iBAAmB5sO,GAAWiE,WAAW5D,IAC5D1kB,EAAOqkB,GAAWiE,WAAW5D,IAAIH,OAAOvkB,EAAM,GAC9C,MACF,KAvq9BO,GAyq9BL,GADA+nB,EAAKkjO,EAAa7hM,MAAM8nM,uBACnBnpO,EAAI,CACP,GAAI7N,GAAcla,EAAM,MAAO,CAC7BA,EAAOqkB,GAAWiE,WAAWC,KAAKhE,OAAOvkB,EAAM,GAC/CyR,EAAK3L,EACL,KACF,CACA9F,EAAO,GACPyR,EA7o9BQ,GA8o9BR,KACF,CACA,GAAgB,YAAZsW,EAAGxmB,KAEL,YADAqyB,EAAKg8N,EAAKlB,aAAa1kB,EApr9BpB,GAor9BqDhqO,EAAM+nB,EAAIkiB,EAAUjiB,EAAW2hO,EAAMriO,EAAsBykO,EAAyByC,IAG9IxuP,EAAO+nB,EAAGxD,OAAOvkB,EAAM,GACvByR,EAAK3L,EACL,MACF,KA5r9BS,GA8r9BP,GADAiiB,EAAKkjO,EAAa7hM,MAAM+nM,yBACnBppO,EAAI,CACP,GAAI7N,GAAcla,EAAM,MAAO,CAC7BA,EAAOqkB,GAAWiE,WAAWC,KAAKhE,OAAOvkB,EAAM,GAC/CyR,EAAK3L,EACL,KACF,CACA9F,EAAO,GACPyR,EAjq9BU,GAkq9BV,KACF,CACA,GAAgB,YAAZsW,EAAGxmB,KAEL,YADAqyB,EAAKg8N,EAAKlB,aAAa1kB,EAzs9BlB,GAys9BqDhqO,EAAM+nB,EAAIkiB,EAAUjiB,EAAW2hO,EAAMriO,EAAsBykO,EAAyByC,IAGhJxuP,EAAO+nB,EAAGxD,OAAOvkB,EAAM,GACvByR,EAAK3L,EACL,MACF,KAts9BK,GAus9BH,IAAIs9N,EACJ,IACE,MAAMguB,EAAappO,EAAUtlB,IAAI,WACjC,IAAK0uP,EACH,MAAM,IAAI5oP,EAAY,6BAGxB,GADA46N,EAAUguB,EAAW1uP,IAAI1C,EAAK,GAAGuB,OAC5B6hO,EACH,MAAM,IAAI56N,EAAY,0BAE1B,CAAE,MAAOya,GACP,GAAIA,aAAkBxa,EACpB,SAEF,GAAImnP,EAAKhpP,QAAQkgP,aAAc,CAC7BzgP,EAAK,wCAAwC4c,OAC7C,QACF,CACA,MAAMA,CACR,CACA,MAAMouO,EAAYzB,EAAKzsB,aAAa,CAClCC,UACAp7M,YACAV,uBACAknO,6BAEF,IAAK6C,EACH,SAEFrxP,EAAO,CAACqxP,GACR5/O,EAru9BG,GAsu9BH,MACF,KA5x9BG,EA+x9BD,GAFAg/O,EAAczwP,EAAK,aAAckS,GACjC3Q,EAAOvB,EAAK,GAAGuB,KACXkvP,EAAa,CACf,MAAMa,EAAiBjE,EAAiBxlO,UAAUtmB,GAClD,GAAI+vP,EAAgB,CACdA,EAAelyP,OAAS,GAC1B4qO,EAAaqY,MAny9BlB,EAmy9BuC,CAACiP,IAErCtxP,EAAO,KACP,QACF,CACF,CAiCA,YAhCA4zB,EAAK,IAAIriB,SAAQ,SAAUggP,EAAeC,GACxC,IAAKf,EACH,MAAM,IAAIjoP,EAAY,uCAExB,MAAMipP,EAAYzpO,EAAUtlB,IAAI,aAChC,KAAM+uP,aAAqBp/O,IACzB,MAAM,IAAI7J,EAAY,qCAExB,MAAM4kP,EAASqE,EAAU/uP,IAAInB,GAC7B,KAAM6rP,aAAkB/6O,IACtB,MAAM,IAAI7J,EAAY,kCAExBonP,EAAKzC,UAAU,CACbnlO,YACAolO,SACApjB,eACA3iN,SAAU9lB,EACVooP,OACAsB,eACAoC,mBACA/lO,yBACCnF,KAAKovO,EAAeC,EACzB,IAAGxuO,OAAM,SAAUC,GACjB,KAAIA,aAAkBxa,GAAtB,CAGA,IAAImnP,EAAKhpP,QAAQkgP,aAIjB,MAAM7jO,EAHJ5c,EAAK,0CAA0C4c,MAFjD,CAMF,KAEF,KAt09BA,GAu09BA,KAt09BA,GAu09BA,KAt09BC,GAu09BD,KAt09BE,GAu09BF,KAt09BE,GAu09BF,KAt09BG,GAu09BH,KAt09BG,GAu09BD2sO,EAAKzB,UAAUnkB,EAAcv4N,EAAIzR,EAAMouP,GACvC,SACF,KAzx9BG,GA0x9BH,KAzx9BQ,GA0x9BR,KAtx9BK,GAux9BL,KAtx9BG,GAux9BD,SACF,KAAKtoP,EACH,KAAM9F,EAAK,aAAckS,IAAO,CAC9B7L,EAAK,kDAAkDrG,EAAK,MAC5DgqO,EAAaqY,MAAMv8O,EAA6B,CAAC,KAAM,OACvD,QACF,CACA,GAAqB,OAAjB9F,EAAK,GAAGuB,KAcV,YAbAqyB,EAAKg8N,EAAK9F,wBAAwB9pP,EAAK,GAAIgoB,GAAW7F,MAAKvJ,IACzDoxN,EAAaqY,MAAMv8O,EAA6B,CAAC,KAAM8S,GAAM,IAC5DoK,OAAMC,IACP,KAAIA,aAAkBxa,GAAtB,CAGA,GAAImnP,EAAKhpP,QAAQkgP,aAGf,OAFAzgP,EAAK,wDAAwD4c,YAC7D+mN,EAAaqY,MAAMv8O,EAA6B,CAAC,KAAM,OAGzD,MAAMmd,CANN,CAMY,KAIhBjjB,EAAO,CAACA,EAAK,GAAGuB,KAAMvB,EAAK,aAAcqS,GAAOrS,EAAK,GAAG0C,IAAI,QAAU,MACtE,MAGF,QACE,GAAa,OAAT1C,EAAe,CACjB,IAAKG,EAAI,EAAG0P,EAAK7P,EAAKZ,OAAQe,EAAI0P,KAC5B7P,EAAKG,aAAckS,IADalS,KAKtC,GAAIA,EAAI0P,EAAI,CACVxJ,EAAK,wCAA0CoL,GAC/C,QACF,CACF,EAEJu4N,EAAaqY,MAAM5wO,EAAIzR,EACzB,CACIwwP,EACF58N,EAAKuzN,KAGP+I,IACAx+O,IACF,IAAGsR,OAAMC,IACP,KAAIA,aAAkBxa,GAAtB,CAGA,GAAI5J,KAAK+H,QAAQkgP,aAGf,OAFAzgP,EAAK,6CAA6CsjP,EAAKpoP,gBAAqB0hB,YAC5EitO,IAGF,MAAMjtO,CANN,CAMY,GAEhB,CACA,cAAAyuO,EAAe,OACb7wO,EAAM,KACN8oO,EAAI,UACJ3hO,EAAS,aACTijO,EAAe,KAAI,qBACnB0G,GAAuB,EAAK,KAC5BC,EAAI,WACJC,EAAa,IAAI18O,IAAK,QACtB28O,EAAO,KACPC,EAAO,KAAI,kBACXC,EAAoB,KAAI,qBACxBC,GAAuB,EAAK,eAC5BC,GAAiB,IAEjBlqO,IAAc3V,GAAK0B,MACnBk3O,IAAiB,IAAI6E,GAAa,IAAIqC,IAClCR,IACFK,IAAsB,CACpB/Z,MAAO,IAGX,MAAMma,EAAc,CAClBz8O,MAAO,GACP08O,OAAQ9vP,OAAOwP,OAAO,MACtBggP,QAEIO,EAAkB,CACtBC,aAAa,EACbhpP,IAAK,GACL0+B,WAAY,EACZuqN,YAAa,EACb9zO,MAAO,EACPC,OAAQ,EACRgS,UAAU,EACV8hO,cAAe,KACfC,iBAAkB,EAClBC,eAAgB,EAChBC,eAAgB,EAChBC,iBAAkBvE,IAClBwE,kBAAkB,IAClBC,WAAW,IACXlnP,UAAW,KACX+yM,SAAU,KACVo0C,QAAQ,GAEJC,EAAe,CAAC,IAAK,KAC3B,IAAIC,EAAkB,EACtB,SAASC,EAAal4O,GACpB,MAAMm4O,GAAWF,EAAkB,GAAK,EAClCl3M,EAAwC,MAAlCi3M,EAAaC,IAAsD,MAA1BD,EAAaG,GAGlE,OAFAH,EAAaC,GAAmBj4O,EAChCi4O,EAAkBE,GACVlB,GAAkBl2M,CAC5B,CACA,SAASq3M,IACP,OAAQnB,GAAoD,MAAlCe,EAAaC,IAAwE,MAA5CD,GAAcC,EAAkB,GAAK,EAC1G,CACA,SAASI,IACPL,EAAa,GAAKA,EAAa,GAAK,IACpCC,EAAkB,CACpB,CACA,MAMMtD,EAAO/wP,KACPyT,EAAOzT,KAAKyT,KACZihP,EAAuB,GAC7B,IAAI1D,EAAQ,KACZ,MAAM2D,EAAoB,IAAInkB,GACxBokB,EAAmB,IAAIjkB,GACvBugB,EAAe,IAAIC,GAAsBnvO,EAAQvO,EAAM24O,GAC7D,IAAIyI,EACJ,SAASC,GAAe,MACtBj1O,EAAQ,EAAC,OACTC,EAAS,EAAC,UACV9S,EAAYymP,EAAgBG,cAAa,SACzC7zC,EAAW0zC,EAAgB1zC,WAE3BwzC,EAAYz8O,MAAMvV,KAAK,CACrBmJ,IAAK,IACL5H,IAAK,MACL+c,QACAC,SACA9S,YACA+yM,WACAo0C,QAAQ,GAEZ,CACA,SAASY,IACP,MAAMzyC,EAAOuyC,EAAUvyC,KACjB0yC,EAAM,CAACH,EAAU5C,SAAW4C,EAAUI,WAAY,EAAG,EAAGJ,EAAU5C,SAAU,EAAG4C,EAAUK,UAC/F,GAAI5yC,EAAKmT,cAAgBo/B,EAAU5C,UAAY,GAAK3vC,EAAK6yC,cAAgB3jP,GAAaqjP,EAAU3/L,WAAYzwD,GAAuB,CACjI,MAAM2wP,EAAc9yC,EAAKoN,KAAK,GAAKpN,EAAKoN,KAAK,GACzC0lC,EAAc,IAChBJ,EAAI,IAAMI,EAAcP,EAAU3/L,WAAW,GAEjD,CACA,OAAOxoD,EAAKM,UAAU6nP,EAAUQ,IAAK3oP,EAAKM,UAAU6nP,EAAUS,WAAYN,GAC5E,CACA,SAASO,IACP,GAAI9B,EAAgBC,YAClB,OAAOD,EAET,MAAM,KACJnxC,EAAI,WACJ7B,GACEo0C,EACJ,IAAK7B,EAAWh+O,IAAIyrM,KAClBuyC,EAAWx8O,IAAIiqM,GACf8yC,EAAYC,OAAO/yC,GAAc,CAC/B9iM,WAAY2kM,EAAKiU,aACjBlhK,OAAQitJ,EAAKjtJ,OACbC,QAASgtJ,EAAKhtJ,QACdxjC,SAAUwwL,EAAKxwL,UAEbi/N,EAAKhpP,QAAQmgP,qBAAuB5lC,EAAK8T,gBAAgB,CAC3D,MAAMojB,EAAQ+Z,EAAYC,OAAO/yC,GACjC+4B,EAAMgc,iBAAmBlzC,EAAK8T,eAAeK,IAC7C+iB,EAAMic,2BAA6BnzC,EAAK8T,eAAe3V,UACzD,CAEFgzC,EAAgB1zC,SAAWU,EAC3B,MAAMi1C,EAAMjC,EAAgBzmP,UAAY+nP,IACnCzyC,EAAKxwL,UAKR2hO,EAAgB5zO,MAAQ4zO,EAAgBrqN,WAAah/B,KAAKs7N,MAAMgwB,EAAI,GAAIA,EAAI,IAC5EjC,EAAgB3zO,OAAS2zO,EAAgBE,YAAc,EACvDF,EAAgB3hO,UAAW,IAN3B2hO,EAAgB5zO,MAAQ4zO,EAAgBrqN,WAAa,EACrDqqN,EAAgB3zO,OAAS2zO,EAAgBE,YAAcvpP,KAAKs7N,MAAMgwB,EAAI,GAAIA,EAAI,IAC9EjC,EAAgB3hO,UAAW,GAM7B,MAAM6jO,EAAavrP,KAAKs7N,MAAMmvB,EAAUe,eAAe,GAAIf,EAAUe,eAAe,IAC9EC,EAAYzrP,KAAKs7N,MAAMmvB,EAAUQ,IAAI,GAAIR,EAAUQ,IAAI,IAC7D5B,EAAgBI,iBAAmBgC,EAAYF,EAC/C,MAAM,SACJ1D,GACE4C,EAQJ,OAPApB,EAAgBO,iBAhFY,KAgFO/B,EACnCwB,EAAgBS,UAhFS,IAgFGjC,EAC5BwB,EAAgBQ,kBAhFY,GAgFOhC,EACnCwB,EAAgBK,eAhFe,KAgFE7B,EACjCwB,EAAgBM,eAhFe,GAgFE9B,EACjCwB,EAAgBU,QAAS,EACzBV,EAAgBC,aAAc,EACvBD,CACT,CACA,SAASqC,IACP,IAAKrC,EAAgBC,YACnB,OAEF,MAAMiC,EAAavrP,KAAKs7N,MAAMmvB,EAAUe,eAAe,GAAIf,EAAUe,eAAe,IAE9EG,EADY3rP,KAAKs7N,MAAMmvB,EAAUQ,IAAI,GAAIR,EAAUQ,IAAI,IAC7BM,EAC5BI,IAAgBtC,EAAgBI,mBAG/BJ,EAAgB3hO,UAInB2hO,EAAgBE,aAAeF,EAAgB3zO,OAAS2zO,EAAgBI,iBACxEJ,EAAgB3zO,OAAS,IAJzB2zO,EAAgBrqN,YAAcqqN,EAAgB5zO,MAAQ4zO,EAAgBI,iBACtEJ,EAAgB5zO,MAAQ,GAK1B4zO,EAAgBI,iBAAmBkC,EACrC,CAiBAn9N,eAAe20N,EAAcxtC,EAAU0tC,GACrC,MAAME,QAAmBoD,EAAKnD,SAAS7tC,EAAU0tC,EAAStkO,GAC1D,GAAIwkO,EAAWrrC,KAAKmT,YAClB,UACQk4B,EAAWE,cAAckD,EAAM5nO,EAAW2hO,EAClD,CAAE,MAAO,CAEX+J,EAAUp0C,WAAaktC,EAAWltC,WAClCo0C,EAAUvyC,KAAOqrC,EAAWrrC,KAC5BuyC,EAAU3/L,WAAay4L,EAAWrrC,KAAKptJ,YAAczwD,CACvD,CACA,SAASuxP,EAAqBjmP,EAAGC,EAAGua,GAClC,MAAMgB,EAAQnhB,KAAKs7N,MAAMn7M,EAAO,GAAIA,EAAO,IAC3C,MAAO,EAAEA,EAAO,GAAKxa,EAAIwa,EAAO,GAAKva,GAAKub,GAAQhB,EAAO,GAAKxa,EAAIwa,EAAO,GAAKva,GAAKub,EACrF,CACA,SAAS0qO,EAAwBC,GAC/B,MAAMxxC,EAAmBqwC,IACzB,IAAIoB,EAAOzxC,EAAiB,GACxB0xC,EAAO1xC,EAAiB,GAC5B,GAAImwC,EAAUvyC,MAAMxwL,UAClB,GAAIqkO,EAAOlD,EAAQ,IAAMkD,EAAOlD,EAAQ,IAAMmD,EAAOF,EAAajD,EAAQ,IAAMmD,EAAOnD,EAAQ,GAC7F,OAAO,OAEJ,GAAIkD,EAAOD,EAAajD,EAAQ,IAAMkD,EAAOlD,EAAQ,IAAMmD,EAAOnD,EAAQ,IAAMmD,EAAOnD,EAAQ,GACpG,OAAO,EAET,IAAK4B,EAAUvyC,OAASmxC,EAAgBG,cACtC,OAAO,EAET,IAAIyC,EAAW5C,EAAgBG,cAAc,GACzC0C,EAAW7C,EAAgBG,cAAc,GAC7C,GAAIyC,IAAaF,GAAQG,IAAaF,EACpC,OAAO,EAET,IAAIG,GAAU,EAMd,OALI7xC,EAAiB,IAA8B,IAAxBA,EAAiB,IAAoC,IAAxBA,EAAiB,GACvE6xC,EAAS7xC,EAAiB,GAAK,EAAI,EAAI,IAC9BA,EAAiB,IAA8B,IAAxBA,EAAiB,IAAoC,IAAxBA,EAAiB,KAC9E6xC,EAAS7xC,EAAiB,GAAK,EAAI,GAAK,KAElC6xC,GACN,KAAK,EACH,MACF,KAAK,IACFJ,EAAMC,GAAQ,CAACA,EAAMD,IACrBE,EAAUC,GAAY,CAACA,EAAUD,GAClC,MACF,KAAK,KACFF,EAAMC,EAAMC,EAAUC,GAAY,EAAEH,GAAOC,GAAOC,GAAWC,GAC9D,MACF,KAAK,KACFH,EAAMC,GAAQ,EAAEA,GAAOD,IACvBE,EAAUC,GAAY,EAAEA,GAAWD,GACpC,MACF,SACGF,EAAMC,GAAQJ,EAAqBG,EAAMC,EAAM1xC,IAC/C2xC,EAAUC,GAAYN,EAAqBK,EAAUC,EAAU7C,EAAgBG,eAEpF,GAAIiB,EAAUvyC,KAAKxwL,SAAU,CAC3B,MAAM0kO,GAAYF,EAAWF,GAAQ3C,EAAgBI,iBAC/C4C,EAAWN,EAAOE,EAClBK,EAAkBtsP,KAAKonB,KAAKiiO,EAAgB3zO,QAClD,OAAI02O,EAAWE,EAAkBjD,EAAgBQ,iBAC3C7pP,KAAK6F,IAAIwmP,GAAY,GAAMhD,EAAgB5zO,OAC7C82O,KACO,IAETlC,IACAmC,KACO,GAELxsP,KAAK6F,IAAIwmP,GAAYhD,EAAgB5zO,OACvC82O,KACO,IAELH,GAAYE,EAAkBjD,EAAgBS,WAChDO,IAEE+B,GAAYE,EAAkBjD,EAAgBO,iBAC5CQ,KACFC,IACAmC,IACA9B,EAAe,CACbh1O,OAAQ1V,KAAK6F,IAAIumP,MAGnB/C,EAAgB3zO,QAAU02O,EAElBK,EAAcL,EAAU/C,EAAgBG,cAAe8C,KAC9B,IAA/BjD,EAAgB/oP,IAAInK,QACtBk0P,IACAK,EAAe,CACbh1O,OAAQ1V,KAAK6F,IAAIumP,MAGnB/C,EAAgB3zO,QAAU02O,GAG1BpsP,KAAK6F,IAAIwmP,GAzNY,IAyNAhD,EAAgB5zO,OACvC+2O,KAEK,EACT,CACA,MAAMH,GAAYN,EAAOE,GAAY5C,EAAgBI,iBAC/C2C,EAAWJ,EAAOE,EAClBI,EAAkBtsP,KAAKonB,KAAKiiO,EAAgB5zO,OAClD,OAAI42O,EAAWC,EAAkBjD,EAAgBQ,iBAC3C7pP,KAAK6F,IAAIumP,GAAY,GAAM/C,EAAgB3zO,QAC7C62O,KACO,IAETlC,IACAmC,KACO,GAELxsP,KAAK6F,IAAIumP,GAAY/C,EAAgB3zO,QACvC62O,KACO,IAELF,GAAYC,EAAkBjD,EAAgBS,WAChDO,IAEEgC,GAAYC,EAAkBjD,EAAgBO,iBAC5CQ,KACFC,IACAmC,IACA9B,EAAe,CACbj1O,MAAOzV,KAAK6F,IAAIwmP,MAGlBhD,EAAgB5zO,OAAS42O,EAEjBI,EAAcJ,EAAUhD,EAAgBG,cAAe8C,KAC9B,IAA/BjD,EAAgB/oP,IAAInK,QACtBk0P,IACAK,EAAe,CACbj1O,MAAOzV,KAAK6F,IAAIwmP,MAGlBhD,EAAgB5zO,OAAS42O,GAGzBrsP,KAAK6F,IAAIumP,GArQc,IAqQF/C,EAAgB3zO,QACvC82O,KAEK,EACT,CACA,SAASE,GAAqB,MAC5BnzB,EAAK,aACLozB,IAEA,MAAMz0C,EAAOuyC,EAAUvyC,KACvB,IAAKqhB,EAAO,CACV,MAAMqzB,EAAcnC,EAAUmC,YAAcD,EAW5C,OAVIC,IACG10C,EAAKxwL,SAGR+iO,EAAUoC,oBAAoB,GAAID,GAFlCnC,EAAUoC,oBAAoBD,EAAcnC,EAAUI,WAAY,SAKlE5B,GACF4C,EAAwB,GAG5B,CACA,MAAMj0C,EAASM,EAAKohB,cAAcC,GAC5Bp4M,EAAQspO,EAAU3/L,WAAW,GAAK2/L,EAAU5C,SAClD,IAAK,IAAI3wP,EAAI,EAAG0P,EAAKgxM,EAAOzhN,OAAQe,EAAI0P,EAAI1P,IAAK,CAC/C,MAAMm9D,EAAQujJ,EAAO1gN,IACf,SACJ0vN,GACEvyJ,EACJ,GAAIuyJ,EAASI,sBACX,SAEF,IAAI4lC,EAAcnC,EAAUmC,aAAe11P,EAAI,IAAM0P,EAAK+lP,EAAe,GACrEb,EAAaz3L,EAAM5+C,MACnByiM,EAAKxwL,WACPokO,EAAaz3L,EAAMmyJ,QAAUnyJ,EAAMmyJ,QAAQ,IAAMslC,GAEnD,IAAIgB,EAAYhB,EAAa3qO,EAC7B,IAAK8nO,GAAkBriC,EAASE,aAAc,CACvC5O,EAAKxwL,UAIRklO,IAAgBE,EAAYrC,EAAUsC,YACtCtC,EAAUoC,oBAAoB,GAAID,KAJlCA,GAAeE,EAAYrC,EAAUsC,YACrCtC,EAAUoC,oBAAoBD,EAAcnC,EAAUI,WAAY,IAKpEX,EAAa,KACb,QACF,CACA,IAAKtjC,EAASG,uBAAyB8kC,EAAwBiB,GAAY,CACpE50C,EAAKxwL,SAGR+iO,EAAUoC,oBAAoB,EAAGC,GAFjCrC,EAAUoC,oBAAoBC,EAAYrC,EAAUI,WAAY,GAIlE,QACF,CACA,MAAMmC,EAAY7B,IACdvkC,EAASG,uBACX+lC,EAAY,GAET50C,EAAKxwL,UAKR+iO,EAAUoC,oBAAoB,EAAGC,GACjCA,EAAY9sP,KAAK6F,IAAIinP,GACrBE,EAAUt3O,QAAUo3O,IANpBA,GAAarC,EAAUI,WACvBJ,EAAUoC,oBAAoBC,EAAW,GACzCE,EAAUv3O,OAASq3O,GAMjBA,IACFE,EAAUxD,cAAgBmB,KAE5B,MAAMzxB,EAAe7kK,EAAM24I,QACvBk9C,EAAahxB,IACf8zB,EAAU1sP,IAAInJ,KAAK,KAErB61P,EAAU1sP,IAAInJ,KAAK+hO,GACf0zB,IACG10C,EAAKxwL,SAGR+iO,EAAUoC,oBAAoB,GAAID,GAFlCnC,EAAUoC,oBAAoBD,EAAcnC,EAAUI,WAAY,GAKxE,CACF,CACA,SAAS0B,IACPlC,IACIhB,EAAgBC,aAClBD,EAAgBU,QAAS,EACzByC,KAEArD,EAAYz8O,MAAMvV,KAAK,CACrBmJ,IAAK,GACL5H,IAAK,MACL+c,MAAO,EACPC,OAAQ,EACR9S,UAAW+nP,IACXh1C,SAAU80C,EAAUp0C,WACpB0zC,QAAQ,GAGd,CACA,SAAS0C,EAAch3O,EAAO8kM,EAAQ+xC,GACpC,GAAIA,EAAkBjD,EAAgBK,gBAAkBj0O,GAASA,GAAS62O,EAAkBjD,EAAgBM,eAK1G,OAJIN,EAAgBC,cAClBe,IACAhB,EAAgB/oP,IAAInJ,KAAK,OAEpB,EAET,MAAMw+M,EAAW0zC,EAAgB1zC,SACjC,IAAIjgM,EAAS,EAab,OAZI2zO,EAAgB3hO,WAClBhS,EAASD,EACTA,EAAQ,GAEV+2O,IACAnC,IACAK,EAAe,CACbj1O,MAAOzV,KAAK6F,IAAI4P,GAChBC,OAAQ1V,KAAK6F,IAAI6P,GACjB9S,UAAW23M,GAAUowC,IACrBh1C,cAEK,CACT,CACA,SAAS62C,IACFnD,EAAgBC,aAAgBD,EAAgB/oP,MAGhD+oP,EAAgB3hO,SAGnB2hO,EAAgBE,aAAeF,EAAgB3zO,OAAS2zO,EAAgBI,iBAFxEJ,EAAgBrqN,YAAcqqN,EAAgB5zO,MAAQ4zO,EAAgBI,iBAIxEN,EAAYz8O,MAAMvV,KAzSpB,SAA0B61P,GACxB,IAAIC,EAAOD,EAAU1sP,IAAIF,KAAK,IAzj9BpC,IAA0BE,EA0j9Bf0oP,IA1j9Be1oP,EA2j9BM2sP,EA1j9BzBjlP,KACHA,GAAiB,2UACjBC,GAAmB,IAAIsB,IAAI,CAAC,CAAC,IAAK,SAwj9B9B0jP,EAtj9BC3sP,EAAIoG,WAAWsB,IAAgB,CAACmvC,EAAG7zC,EAAIC,IAAOD,EAAKA,EAAG4pP,UAAU,QAAUjlP,GAAiBxO,IAAI8J,MAwj9BlG,MAAM4pP,EAAa9e,GAAK4e,GAAO,EAAGD,EAAUtlO,UAC5C,MAAO,CACLpnB,IAAK6sP,EAAW7sP,IAChB5H,IAAKy0P,EAAWz0P,IAChB+c,MAAOzV,KAAK6F,IAAImnP,EAAUhuN,YAC1BtpB,OAAQ1V,KAAK6F,IAAImnP,EAAUzD,aAC3B3mP,UAAWoqP,EAAUpqP,UACrB+yM,SAAUq3C,EAAUr3C,SACpBo0C,OAAQiD,EAAUjD,OAEtB,CA0RyBqD,CAAiB/D,IACxCA,EAAgBC,aAAc,EAC9BD,EAAgB/oP,IAAInK,OAAS,EAC/B,CACA,SAASk3P,EAAaC,GAAQ,GAC5B,MAAMn3P,EAASgzP,EAAYz8O,MAAMvW,OAClB,IAAXA,IAGAm3P,GAASn3P,EAhiEW,KAmiExBwyP,EAAKzO,QAAQiP,EAAahzP,GAC1BgzP,EAAYz8O,MAAQ,GACpBy8O,EAAYC,OAAS9vP,OAAOwP,OAAO,OACrC,CACA,MAAMk+O,EAAkB,IAAIzI,GAC5B,OAAO,IAAIj2O,SAAQ,SAAS8+O,EAAY3+O,EAASoQ,GAC/C,MAAM8R,EAAO,SAAUrR,GACrB+zO,GAAa,GACb/kP,QAAQ++O,IAAI,CAAC/tO,EAASqvO,EAAKr6N,QAAQpV,MAAK,WACtC,IACEkuO,EAAY3+O,EAASoQ,EACvB,CAAE,MAAOlS,GACPkS,EAAOlS,EACT,CACF,GAAGkS,EACL,EACA6nO,EAAK4G,sBACLN,EAAgBt4O,QAChB,MAAMs+N,EAAY,CAAC,EACnB,IAAIua,EACFjvP,EACAkvP,EACAzwP,EAAO,GACT,OAASwwP,EAAOP,EAAgB33N,WAC9Bt4B,EAAKZ,OAAS,EACd62O,EAAUj2O,KAAOA,EACZ+vP,EAAa7tO,KAAK+zN,KAHiB,CAMxC,MAAMugB,EAAgB9C,EACtBA,EAAYzI,EAAa7hM,MACzB,MAAM33C,EAAKwkO,EAAUxkO,GAErB,OADAzR,EAAOi2O,EAAUj2O,KACJ,EAALyR,GACN,KAAK3L,EACH,MAAM2wP,EAAcz2P,EAAK,GAAGuB,KAC1Bm1P,EAAc12P,EAAK,GACrB,GAAI0zP,EAAUvyC,MAAQs1C,IAAgB/C,EAAU90C,UAAY83C,IAAgBhD,EAAU5C,SACpF,MAMF,OAJA2E,IACA/B,EAAU90C,SAAW63C,EACrB/C,EAAU5C,SAAW4F,OACrB9iO,EAAKw4N,EAAcqK,EAAa,OAElC,KAh4+BK,GAi4+BH/C,EAAUK,SAAW/zP,EAAK,GAC1B,MACF,KAv4+BG,GAw4+BD0zP,EAAUI,WAAa9zP,EAAK,GAAK,IACjC,MACF,KAz4+BI,GA04+BF0zP,EAAUiD,QAAU32P,EAAK,GACzB,MACF,KAx4+BE,GAy4+BA0zP,EAAUkD,wBAAwB52P,EAAK,GAAIA,EAAK,IAChD0zP,EAAUS,WAAaT,EAAUe,eAAehoP,QAChD,MACF,KA34+BY,GA44+BVinP,EAAUiD,SAAW32P,EAAK,GAC1B0zP,EAAUkD,wBAAwB52P,EAAK,GAAIA,EAAK,IAChD0zP,EAAUS,WAAaT,EAAUe,eAAehoP,QAChD,MACF,KA94+BE,GA+4+BAinP,EAAUmD,iBACV,MACF,KAl5+BO,GAm5+BLnD,EAAUoD,cAAc92P,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E0zP,EAAUqD,kBAAkB/2P,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC9E20P,IACA,MACF,KAh6+BQ,GAi6+BNjB,EAAUmC,YAAc71P,EAAK,GAC7B,MACF,KAl6+BQ,GAm6+BN0zP,EAAUsC,YAAch2P,EAAK,GAC7B,MACF,KAx6+BG,GAy6+BD0zP,EAAUS,WAAa9wP,EAAgBoJ,QACvCinP,EAAUe,eAAiBpxP,EAAgBoJ,QAC3C,MACF,KA95+BQ,GA+5+BN,IAAKw+O,EAAa7hM,MAAM+3J,KAAM,CAC5ByuC,EAAK1C,gBAAgBjC,EAAa7hM,OAClC,QACF,CACA,MAAM4tM,GAAetD,EAAUvyC,KAAKxwL,SAAW,GAAK,GAAK+iO,EAAU5C,SAAW,IACxEmG,EAAWj3P,EAAK,GACtB,IAAK,IAAIG,EAAI,EAAG0P,EAAKonP,EAAS73P,OAAQe,EAAI0P,EAAI1P,IAAK,CACjD,MAAM0Y,EAAOo+O,EAAS92P,GACtB,GAAoB,iBAAT0Y,EACT06O,EAAqBnzP,KAAKyY,QACrB,GAAoB,iBAATA,GAA8B,IAATA,EAAY,CACjD,MAAMtP,EAAMgqP,EAAqBlqP,KAAK,IACtCkqP,EAAqBn0P,OAAS,EAC9Bu2P,EAAqB,CACnBnzB,MAAOj5N,EACPqsP,aAAc/8O,EAAOm+O,GAEzB,CACF,CACA,GAAIzD,EAAqBn0P,OAAS,EAAG,CACnC,MAAMmK,EAAMgqP,EAAqBlqP,KAAK,IACtCkqP,EAAqBn0P,OAAS,EAC9Bu2P,EAAqB,CACnBnzB,MAAOj5N,EACPqsP,aAAc,GAElB,CACA,MACF,KAAK9vP,EACH,IAAKmlP,EAAa7hM,MAAM+3J,KAAM,CAC5ByuC,EAAK1C,gBAAgBjC,EAAa7hM,OAClC,QACF,CACAusM,EAAqB,CACnBnzB,MAAOxiO,EAAK,GACZ41P,aAAc,IAEhB,MACF,KAp8+BU,GAq8+BR,IAAK3K,EAAa7hM,MAAM+3J,KAAM,CAC5ByuC,EAAK1C,gBAAgBjC,EAAa7hM,OAClC,QACF,CACAsqM,EAAUmD,iBACVlB,EAAqB,CACnBnzB,MAAOxiO,EAAK,GACZ41P,aAAc,IAEhB,MACF,KA98+BoB,GA+8+BlB,IAAK3K,EAAa7hM,MAAM+3J,KAAM,CAC5ByuC,EAAK1C,gBAAgBjC,EAAa7hM,OAClC,QACF,CACAsqM,EAAUsC,YAAch2P,EAAK,GAC7B0zP,EAAUmC,YAAc71P,EAAK,GAC7B0zP,EAAUmD,iBACVlB,EAAqB,CACnBnzB,MAAOxiO,EAAK,GACZ41P,aAAc,IAEhB,MACF,KAx8+BM,GA68+BJ,GAJAH,IACA5F,IAAU7nO,EAAUtlB,IAAI,YAAc2P,GAAK0B,MAC3C08O,EAAczwP,EAAK,aAAckS,GACjC3Q,EAAOvB,EAAK,GAAGuB,KACXkvP,GAAe+C,EAAkB3rO,UAAUtmB,GAC7C,MAgFF,YA9EAqyB,EAAK,IAAIriB,SAAQ,SAAUo/O,EAAgBC,GACzC,IAAKH,EACH,MAAM,IAAIjoP,EAAY,wCAExB,IAAIkhP,EAAOmG,EAAMr8O,OAAOjS,GACxB,GAAImoP,aAAgBx2O,GAAK,CACvB,GAAIsgP,EAAkB5rO,SAAS8hO,GAE7B,YADAiH,IAIF,GADoBf,EAAK1H,iBAAiBnuM,QAAQ2vM,EAAMkG,EAAK3xO,WAG3D,YADA0yO,IAGFjH,EAAOp3O,EAAKa,MAAMu2O,EACpB,CACA,KAAMA,aAAgBvzO,IACpB,MAAM,IAAI3N,EAAY,8BAExB,MAAMpF,EAAOsmP,EAAKp1O,KAAK5R,IAAI,WAC3B,KAAMU,aAAgB8O,IACpB,MAAM,IAAI1J,EAAY,sCAExB,GAAkB,SAAdpF,EAAK7B,KAGP,OAFAiyP,EAAkB5/O,IAAIrS,EAAMmoP,EAAKp1O,KAAK7B,OAAO,QAC7Ck+O,IAGF,MAAMuG,EAAejM,EAAa7hM,MAAM10C,QAClCyiP,EAAmB,IAAIrH,GAAaoH,GACpC9tO,EAAS9O,GAAaovO,EAAKp1O,KAAKhB,SAAS,UAAW,MACtD8V,GACF+tO,EAAiBtrP,UAAUud,GAE7BktO,IACA,MAAMc,EAAc,CAClBC,gBAAgB,EAChB,OAAAlU,CAAQh6O,EAAO2J,GACbjU,KAAKw4P,gBAAiB,EACtBzF,EAAKzO,QAAQh6O,EAAO2J,EACtB,EACA,eAAIwkP,GACF,OAAO1F,EAAK0F,WACd,EACA,SAAI//N,GACF,OAAOq6N,EAAKr6N,KACd,GAEFq4N,EAAK8B,eAAe,CAClB7wO,OAAQ6oO,EACRC,OACA3hO,UAAW0hO,EAAKp1O,KAAK5R,IAAI,cAAgBslB,EACzCijO,aAAckM,EACdxF,uBACAC,KAAMwF,EACNvF,aACAC,UACAC,OACAC,oBACAC,uBACAC,mBACC/vO,MAAK,WACDi1O,EAAYC,gBACf7D,EAAkB5/O,IAAIrS,EAAMmoP,EAAKp1O,KAAK7B,OAAO,GAE/Ck+O,GACF,GAAGC,EACL,IAAG5tO,OAAM,SAAUC,GACjB,KAAIA,aAAkBxa,GAAtB,CAGA,IAAImnP,EAAKhpP,QAAQkgP,aAIjB,MAAM7jO,EAHJ5c,EAAK,uCAAuC4c,MAF9C,CAMF,KAEF,KAxl/BG,EA2l/BD,GAFAwtO,EAAczwP,EAAK,aAAckS,GACjC3Q,EAAOvB,EAAK,GAAGuB,KACXkvP,GAAegD,EAAiB5rO,UAAUtmB,GAC5C,MAkCF,YAhCAqyB,EAAK,IAAIriB,SAAQ,SAAUggP,EAAeC,GACxC,IAAKf,EACH,MAAM,IAAIjoP,EAAY,uCAExB,MAAMipP,EAAYzpO,EAAUtlB,IAAI,aAChC,KAAM+uP,aAAqBp/O,IACzB,MAAM,IAAI7J,EAAY,qCAExB,MAAM4kP,EAASqE,EAAU/uP,IAAInB,GAC7B,KAAM6rP,aAAkB/6O,IACtB,MAAM,IAAI7J,EAAY,kCAExB,MAAM+uP,EAAanK,EAAO1qP,IAAI,QAC9B,IAAK60P,EAGH,OAFA9D,EAAiB7/O,IAAIrS,EAAM6rP,EAAO36O,OAAO,QACzC8+O,IAGFkE,IACA/B,EAAU90C,SAAW,KACrB80C,EAAU5C,SAAWyG,EAAW,GAChCnL,EAAc,KAAMmL,EAAW,IAAIp1O,KAAKovO,EAAeC,EACzD,IAAGxuO,OAAM,SAAUC,GACjB,KAAIA,aAAkBxa,GAAtB,CAGA,IAAImnP,EAAKhpP,QAAQkgP,aAIjB,MAAM7jO,EAHJ5c,EAAK,yCAAyC4c,MAFhD,CAMF,KAEF,KAnk/BY,GAok/BVwyO,IACI9D,IACFK,EAAkB/Z,QAClBma,EAAYz8O,MAAMvV,KAAK,CACrBgD,KAAM,qBACNuhN,IAAK3kN,EAAK,aAAckS,GAAOlS,EAAK,GAAGuB,KAAO,QAGlD,MACF,KAAKuE,EAEH,GADA2vP,IACI9D,EAAsB,CACxBK,EAAkB/Z,QAClB,IAAIuf,EAAO,KACPx3P,EAAK,aAAcqS,KACrBmlP,EAAOx3P,EAAK,GAAG0C,IAAI,SAErB0vP,EAAYz8O,MAAMvV,KAAK,CACrBgD,KAAM,0BACNs3B,GAAIrhB,OAAOC,UAAUk+O,GAAQ,GAAG5H,EAAK9V,UAAU2d,oBAAoBD,IAAS,KAC5E7yC,IAAK3kN,EAAK,aAAckS,GAAOlS,EAAK,GAAGuB,KAAO,MAElD,CACA,MACF,KAAKuE,EAEH,GADA2vP,IACI9D,EAAsB,CACxB,GAAgC,IAA5BK,EAAkB/Z,MACpB,MAEF+Z,EAAkB/Z,QAClBma,EAAYz8O,MAAMvV,KAAK,CACrBgD,KAAM,oBAEV,CACA,MACF,KAAK0C,GACC0wP,GAAkBA,EAAcr1C,OAASuyC,EAAUvyC,MAAQq1C,EAAc1F,WAAa4C,EAAU5C,UAAY0F,EAAc53C,WAAa80C,EAAU90C,UACnJ62C,IAIN,GAAIrD,EAAYz8O,MAAMvW,QAAUwyP,EAAK0F,YAAa,CAChD9G,GAAO,EACP,KACF,CACF,CACIA,EACF58N,EAAKuzN,KAGPsO,IACAa,IACA5kP,IACF,IAAGsR,OAAMC,IACP,KAAIA,aAAkBxa,GAAtB,CAGA,GAAI5J,KAAK+H,QAAQkgP,aAIf,OAHAzgP,EAAK,4CAA4CsjP,EAAKpoP,gBAAqB0hB,OAC3EwyO,SACAa,IAGF,MAAMrzO,CAPN,CAOY,GAEhB,CACA,2BAAMy0O,CAAsBpjP,EAAMD,GAChC,MAAM/B,EAAOzT,KAAKyT,KAClB,IAAIqlP,EACJ,MAAMC,EAAmB/4P,KAAKg5P,cAAcxjP,EAAW+6M,WACvD,GAAI/6M,EAAWurM,UAAW,CACxB,MAAMk4C,EAAgBxjP,EAAK5R,IAAI,iBAC3Bo1P,aAAyBzlP,KAC3BgC,EAAWyjP,cAAgB,CACzBC,SAAU3oP,EAAkB0oP,EAAcp1P,IAAI,aAC9Cs1P,SAAU5oP,EAAkB0oP,EAAcp1P,IAAI,aAC9Cu1P,WAAYH,EAAcp1P,IAAI,gBAGlC,IACE,MAAMg9M,EAAcprM,EAAK5R,IAAI,eACzBg9M,aAAuBvpM,KACzBwhP,EAAgBj4C,EAAYnpM,WAEhC,CAAE,MAAO3G,GACP,IAAK/Q,KAAK+H,QAAQkgP,aAChB,MAAMl3O,EAERvJ,EAAK,uDAAuDuJ,MAC9D,CACF,CACA,MAAMwnM,EAAc,GACpB,IACI/nM,EADA8nM,EAAmB,KAEvB,GAAI7iM,EAAKT,IAAI,YAAa,CAExB,GADAxE,EAAWiF,EAAK5R,IAAI,YAChB2M,aAAoBgD,IAGtB,GAFA8kM,EAAmB9nM,EAAS3M,IAAI,gBAChCy0M,EAAmBA,aAA4BjlM,GAAOilM,EAAiB51M,KAAO,KAC1E8N,EAASwE,IAAI,eAAgB,CAC/B,MAAMqkP,EAAe7oP,EAAS3M,IAAI,eAClC,IAAI+qC,EAAQ,EACZ,IAAK,MAAMpyB,KAAS68O,EAAc,CAChC,MAAMt/O,EAAOtG,EAAK+V,WAAWhN,GAC7B,GAAoB,iBAATzC,EACT60B,EAAQ70B,MACH,MAAIA,aAAgB1G,IAGzB,MAAM,IAAI1J,EAAY,yCAAyCoQ,KAF/Dw+L,EAAY3pK,KAAW70B,EAAKrX,IAG9B,CACF,CACF,OACK,GAAI8N,aAAoB6C,GAC7BilM,EAAmB9nM,EAAS9N,SACvB,CACL,MAAM2E,EAAM,oCACZ,IAAKrH,KAAK+H,QAAQkgP,aAChB,MAAM,IAAIt+O,EAAYtC,GAExBG,EAAKH,EACP,CACyB,qBAArBixM,GAAgE,sBAArBA,GAAiE,oBAArBA,IACzFA,EAAmB,KAEvB,CACA,MAAMghD,GAAmB9jP,EAAW6pC,MAAQ7pC,EAAW6iM,eACrDkhD,EAAoB/5C,KAAkBhqM,EAAW9S,MAInD,GAHI41M,GAAoBghD,GAAmBC,IACzCjhD,EAAmB,MAEjBA,EACF9iM,EAAWyrM,gBAAkBluJ,GAAYulJ,OACpC,CACL,MAAMF,KAl3fA,EAk3foB5iM,EAAWmtB,OAC/B62N,KAj3fG,GAi3foBhkP,EAAWmtB,OACxCnyB,EAAWmiD,GACa,aAApBn9C,EAAWjR,MAAwBi1P,IACrChpP,EAAWoiD,KAETwlJ,GAAkBmhD,KACpB/oP,EAAWkiD,GACP4mM,IACE,UAAUx7O,KAAKtI,EAAW9S,MAC5B8N,EAAWqiD,GACF,YAAY/0C,KAAKtI,EAAW9S,MACrC8N,EAAWsiD,GACF,aAAah1C,KAAKtI,EAAW9S,QACtC8N,EAAWoiD,MAIjBp9C,EAAWyrM,gBAAkBzwM,CAC/B,CACAgF,EAAW+iM,YAAcA,EACzB/iM,EAAW8iM,iBAAmBA,EAC9B9iM,EAAWqqN,cAAgBvnB,GAAoBC,EAAYh4M,OAAS,EACpEiV,EAAWC,KAAOA,EAClBD,EAAW+6M,gBAAkBwoC,EAC7B,MAAMU,QAAuBz5P,KAAK05P,eAAelkP,GAKjD,OAJAA,EAAW+6M,UAAYkpC,EACnBX,IACFtjP,EAAWqrM,YAAc7gN,KAAK25P,gBAAgBb,EAAeW,IAExDjkP,CACT,CACA,oBAAAokP,CAAqBpkP,EAAYqkP,GAAc,GAC7CnyP,GAAQ8N,EAAWurM,UAAW,0BAC9B,MAAMwP,EAAY,GACZ//M,EAAWgF,EAAWyrM,gBAAgBrzM,QACtC0qM,EAAmB9iM,EAAW8iM,iBAC9BC,EAAc/iM,EAAW+iM,YAC/B,IAAK,MAAM5nJ,KAAY4nJ,EAAa,CAClC,MAAMC,EAAYD,EAAY5nJ,GACZ,YAAd6nJ,IAGJhoM,EAASmgD,GAAY6nJ,EACvB,CACA,MAAMrB,EAAmB/3I,KACzB,IAAK,MAAMzO,KAAYngD,EAAU,CAC/B,IAAIgoM,EAAYhoM,EAASmgD,GACzB,GAAkB,KAAd6nJ,EACF,SAEF,IAAIpB,EAAUD,EAAiBqB,GAC/B,QAAgBp1M,IAAZg0M,EAAuB,CACzBmZ,EAAU5/J,GAAY3mD,OAAOC,aAAamtM,GAC1C,QACF,CACA,IAAIjuM,EAAO,EACX,OAAQqvM,EAAU,IAChB,IAAK,IACsB,IAArBA,EAAUj4M,SACZ4I,EAAO+M,SAASsiM,EAAUn8L,UAAU,GAAI,KAE1C,MACF,IAAK,IACsB,IAArBm8L,EAAUj4M,SACZ4I,EAAO+M,SAASsiM,EAAUn8L,UAAU,GAAI,KAE1C,MACF,IAAK,IACL,IAAK,IACH,GAAIm8L,EAAUj4M,QAAU,GAAKi4M,EAAUj4M,QAAU,EAAG,CAClD,MAAMu5P,EAAUthD,EAAUn8L,UAAU,GACpC,GAAIw9O,EAAa,CACf1wP,EAAO+M,SAAS4jP,EAAS,IACzB,KACF,CAEA,GADA3wP,GAAQ2wP,EACJt/O,OAAOgE,MAAMrV,IAASqR,OAAOC,UAAUvE,SAAS4jP,EAAS,KAC3D,OAAO95P,KAAK45P,qBAAqBpkP,GAAY,EAEjD,CACA,MACF,IAAK,IACH4hM,EAAUF,GAAmBsB,EAAWrB,IACvB,IAAbC,IACFjuM,EAAOiuM,GAET,MACF,QACE,OAAQoB,GACN,IAAK,MACL,IAAK,MACL,IAAK,MACH+X,EAAU5/J,GAAY6nJ,EAAU1nM,WAAW,IAAK,IAChD,UAIR,GAAI3H,EAAO,GAAKA,GAAQ,SAAYqR,OAAOC,UAAUtR,GAAO,CAC1D,GAAImvM,GAAoBnvM,KAAUwnD,EAAU,CAC1C,MAAMoJ,EAAehH,GAAYulJ,GACjC,GAAIv+I,IAAiBy+I,EAAYz+I,EAAapJ,IAAY,CACxD4/J,EAAU5/J,GAAY3mD,OAAOC,aAAaktM,EAAiBqB,IAC3D,QACF,CACF,CACA+X,EAAU5/J,GAAY3mD,OAAOy5N,cAAct6N,EAC7C,CACF,CACA,OAAOonN,CACT,CACA,oBAAMmpC,CAAelkP,GAEnB,GADAA,EAAW6iN,wBAA0B7iN,EAAW+6M,WAAWhwN,OAAS,EAChEiV,EAAW6iN,wBAIb,OAHK7iN,EAAWurM,WAAavrM,EAAWqqN,cACtCrqN,EAAW86M,kBAAoBtwN,KAAK45P,qBAAqBpkP,IAEpDA,EAAW+6M,UAEpB,IAAK/6M,EAAWurM,UACd,OAAO,IAAId,GAAajgN,KAAK45P,qBAAqBpkP,IAEpD,GAAIA,EAAWurM,YAAcvrM,EAAWmc,KAAK+9B,eAAiBl6C,EAAWmc,gBAAgBm/B,KAAwD,UAAvCt7C,EAAWyjP,eAAeC,WAA+D,QAAtC1jP,EAAWyjP,cAAcE,UAA4D,SAAtC3jP,EAAWyjP,cAAcE,UAA6D,WAAtC3jP,EAAWyjP,cAAcE,UAA+D,WAAtC3jP,EAAWyjP,cAAcE,WAAyB,CAC9V,MAAM,SACJD,EAAQ,SACRC,GACE3jP,EAAWyjP,cACTc,EAAe1mP,GAAKxP,IAAI,GAAGq1P,KAAYC,UACvCa,QAAiB7nM,GAAYj/C,OAAO,CACxC1C,SAAUupP,EACVroM,iBAAkB1xD,KAAKwpP,uBACvBz3N,QAAS,OAELw+L,EAAY,GAChB9wM,EAAM,GAcR,OAbAjK,EAAWmc,KAAKsyB,SAAQ,SAAU0M,EAAU2I,GAC1C,GAAIA,EAAM,MACR,MAAM,IAAI3vD,EAAY,6BAExB,MAAMswP,EAAOD,EAASzgP,OAAO+/C,GAC7B,GAAI2gM,EAAM,CACRx6O,EAAIlf,OAAS,EACb,IAAK,IAAIe,EAAI,EAAG0P,EAAKipP,EAAK15P,OAAQe,EAAI0P,EAAI1P,GAAK,EAC7Cme,EAAIle,MAAM04P,EAAKrvP,WAAWtJ,IAAM,GAAK24P,EAAKrvP,WAAWtJ,EAAI,IAE3DivN,EAAU5/J,GAAY3mD,OAAOC,gBAAgBwV,EAC/C,CACF,IACO,IAAIwgM,GAAasQ,EAC1B,CACA,OAAO,IAAInQ,GAAqB5qM,EAAW6qM,UAAW7qM,EAAW8qM,SACnE,CACA,mBAAM04C,CAAckB,GAClB,IAAKA,EACH,OAAO,KAET,GAAIA,aAAmB7mP,GAAM,CAC3B,MAAM6sM,QAAa/tJ,GAAYj/C,OAAO,CACpC1C,SAAU0pP,EACVxoM,iBAAkB1xD,KAAKwpP,uBACvBz3N,QAAS,OAEX,OAAImuL,aAAgBpvJ,GACX,IAAIsvJ,GAAqB,EAAG,OAE9B,IAAIH,GAAaC,EAAK3vJ,SAC/B,CACA,GAAI2pM,aAAmB5iP,GACrB,IACE,MAAM4oM,QAAa/tJ,GAAYj/C,OAAO,CACpC1C,SAAU0pP,EACVxoM,iBAAkB1xD,KAAKwpP,uBACvBz3N,QAAS,OAEX,GAAImuL,aAAgBpvJ,GAClB,OAAO,IAAIsvJ,GAAqB,EAAG,OAErC,MAAMnkM,EAAM,IAAI7a,MAAM8+M,EAAK3/M,QAsB3B,OArBA2/M,EAAKj8J,SAAQ,SAAUhzC,EAAUu7M,GAC/B,GAAqB,iBAAVA,EAET,YADAvwM,EAAIhL,GAAYjH,OAAOy5N,cAAcjX,IAGnCA,EAAMjsN,OAAS,GAAM,IACvBisN,EAAQ,KAAWA,GAErB,MAAM9hN,EAAM,GACZ,IAAK,IAAI8hB,EAAI,EAAGA,EAAIggM,EAAMjsN,OAAQisB,GAAK,EAAG,CACxC,MAAM/E,EAAK+kM,EAAM5hN,WAAW4hB,IAAM,EAAIggM,EAAM5hN,WAAW4hB,EAAI,GAC3D,GAAsB,QAAZ,MAAL/E,GAAyB,CAC5B/c,EAAInJ,KAAKkmB,GACT,QACF,CACA+E,GAAK,EACL,MAAM7E,EAAK6kM,EAAM5hN,WAAW4hB,IAAM,EAAIggM,EAAM5hN,WAAW4hB,EAAI,GAC3D9hB,EAAInJ,OAAY,KAALkmB,IAAe,KAAY,KAALE,GAAc,MACjD,CACA1L,EAAIhL,GAAYjH,OAAOy5N,iBAAiB/4N,EAC1C,IACO,IAAIu1M,GAAahkM,EAC1B,CAAE,MAAOmI,GACP,GAAIA,aAAkBxa,EACpB,OAAO,KAET,GAAI5J,KAAK+H,QAAQkgP,aAEf,OADAzgP,EAAK,6CAA6C4c,OAC3C,KAET,MAAMA,CACR,CAEF,OAAO,IACT,CACA,eAAAu1O,CAAgBQ,EAAY5pC,GAC1B,MAAMviM,EAAS,GACf,IAAK,IAAI5F,EAAI,EAAG0nB,EAAKqqN,EAAW55P,OAAQ6nB,EAAI0nB,EAAI1nB,IAAK,CACnD,MAAMgyO,EAAUD,EAAW/xO,MAAQ,EAAI+xO,EAAW/xO,GAC5Cjf,EAAOif,GAAK,GACF,IAAZgyO,GAAkB7pC,EAAUv7M,IAAI7L,MAGpC6kB,EAAO7kB,GAAQixP,EACjB,CACA,OAAOpsO,CACT,CACA,aAAAqsO,CAAc5kP,EAAMm5N,EAAYp5N,GAC9B,MAAM/B,EAAOzT,KAAKyT,KAClB,IAAI28M,EAAe,GACfz3J,EAAe,EACnB,MAAM2hM,EAAiB,GACvB,IAAIzjC,EACJ,GAAIrhN,EAAWurM,UAAW,CACxB,MAAMw5C,EAAK9kP,EAAK5R,IAAI,MACpB80D,EAA6B,iBAAP4hM,EAAkBnwP,KAAK0Q,KAAKy/O,GAAM,IACxD,MAAMhkM,EAAS9gD,EAAK5R,IAAI,KACxB,GAAIzC,MAAMsT,QAAQ6hD,GAChB,IAAK,IAAIj1D,EAAI,EAAG0P,EAAKulD,EAAOh2D,OAAQe,EAAI0P,EAAI1P,IAAK,CAC/C,IAAI2X,EAAQxF,EAAK+V,WAAW+sC,EAAOj1D,MACnC,IAAKkZ,OAAOC,UAAUxB,GACpB,MAEF,MAAM9P,EAAOsK,EAAK+V,WAAW+sC,EAAOj1D,IACpC,GAAIF,MAAMsT,QAAQvL,GAChB,IAAK,MAAMiF,KAAKjF,EAAM,CACpB,MAAM0W,EAAQpM,EAAK+V,WAAWpb,GACT,iBAAVyR,IACTuwM,EAAan3M,GAAS4G,GAExB5G,GACF,KACK,KAAIuB,OAAOC,UAAUtR,GAS1B,MATiC,CACjC,MAAM0W,EAAQpM,EAAK+V,WAAW+sC,IAASj1D,IACvC,GAAqB,iBAAVue,EACT,SAEF,IAAK,IAAIuI,EAAInP,EAAOmP,GAAKjf,EAAMif,IAC7BgoM,EAAahoM,GAAKvI,CAEtB,CAEA,CACF,CAEF,GAAIrK,EAAWsc,SAAU,CACvB,MAAM0oO,EAAM/kP,EAAKhB,SAAS,OAC1B,IAAImiN,EAAWv7M,GAAcm/O,EAAK,GAAKA,EAAM,CAAC,KAAM,KAGpD,GAFA3jC,EAAkB,CAACD,EAAS,GAAmB,GAAfj+J,EAAoBi+J,EAAS,IAC7DA,EAAWnhN,EAAK5R,IAAI,MAChBzC,MAAMsT,QAAQkiN,GAChB,IAAK,IAAIt1N,EAAI,EAAG0P,EAAK4lN,EAASr2N,OAAQe,EAAI0P,EAAI1P,IAAK,CACjD,IAAI2X,EAAQxF,EAAK+V,WAAWotM,EAASt1N,MACrC,IAAKkZ,OAAOC,UAAUxB,GACpB,MAEF,MAAM9P,EAAOsK,EAAK+V,WAAWotM,EAASt1N,IACtC,GAAIF,MAAMsT,QAAQvL,GAChB,IAAK,IAAIif,EAAI,EAAG0nB,EAAK3mC,EAAK5I,OAAQ6nB,EAAI0nB,EAAI1nB,IAAK,CAC7C,MAAMwoM,EAAU,CAACn9M,EAAK+V,WAAWrgB,EAAKif,MAAO3U,EAAK+V,WAAWrgB,EAAKif,MAAO3U,EAAK+V,WAAWrgB,EAAKif,KAC1F/M,GAAcu1M,EAAS,QACzB0pC,EAAerhP,GAAS23M,GAE1B33M,GACF,KACK,KAAIuB,OAAOC,UAAUtR,GAS1B,MATiC,CACjC,MAAMynN,EAAU,CAACn9M,EAAK+V,WAAWotM,IAAWt1N,IAAKmS,EAAK+V,WAAWotM,IAAWt1N,IAAKmS,EAAK+V,WAAWotM,IAAWt1N,KAC5G,IAAK+Z,GAAcu1M,EAAS,MAC1B,SAEF,IAAK,IAAIxoM,EAAInP,EAAOmP,GAAKjf,EAAMif,IAC7BkyO,EAAelyO,GAAKwoM,CAExB,CAEA,CACF,CAEJ,CACF,KAAO,CACL,MAAMr6J,EAAS9gD,EAAK5R,IAAI,UACxB,GAAIzC,MAAMsT,QAAQ6hD,GAAS,CACzB,IAAInuC,EAAI5S,EAAW6qM,UACnB,IAAK,MAAMtsB,KAAKx9H,EAAQ,CACtB,MAAM12C,EAAQpM,EAAK+V,WAAWuqK,GACT,iBAAVl0K,IACTuwM,EAAahoM,GAAKvI,GAEpBuI,GACF,CACA,MAAMqyO,EAAe7rB,EAAW/qO,IAAI,gBACpC80D,EAAuC,iBAAjB8hM,EAA4BA,EAAe,CACnE,KAAO,CACL,MAAMvf,EAAezlO,EAAK5R,IAAI,YAC9B,GAAIq3O,aAAwB7nO,GAAM,CAChC,MAAM2kN,EAAUh4N,KAAK06P,mBAAmBxf,EAAax4O,MACrD0tN,EAAepwN,KAAK26P,qBAAqB3iC,EAAQzhK,OAAQ/gD,GACzDmjD,EAAeq/J,EAAQr/J,YACzB,CACF,CACF,CACA,IAAIu9J,GAAc,EACd0kC,EAAajiM,EACjB,IAAK,MAAM8F,KAAS2xJ,EAAc,CAChC,MAAM8lC,EAAa9lC,EAAa3xJ,GAChC,GAAKy3L,EAGL,GAAK0E,GAIL,GAAIA,IAAe1E,EAAY,CAC7BhgC,GAAc,EACd,KACF,OANE0kC,EAAa1E,CAOjB,CACIhgC,EACF1gN,EAAWmtB,OApsgBH,EAssgBRntB,EAAWmtB,QAAS,EAEtBntB,EAAWmjD,aAAeA,EAC1BnjD,EAAW+gD,OAAS65J,EACpB56M,EAAWqhN,gBAAkBA,EAC7BrhN,EAAWohN,SAAW0jC,CACxB,CACA,WAAAzkC,CAAYqlB,GACV,MAAM2f,EAAkB3f,EAAal/N,MAAM,IAAK,GAAG,GACnD,OAAO6+O,KAAmBzgD,MAAmB,UAAUt8L,KAAK+8O,EAC9D,CACA,kBAAAH,CAAmBh4P,GACjB,IAAIi2D,EAAe,EACfpC,EAAS7yD,OAAOwP,OAAO,MACvB4nP,GAAY,EAEZC,EADeniD,KACSl2M,IAASA,EACrC,MAAMs4P,EAAU70C,KACV40C,KAAcC,IAClBD,EAAa/6P,KAAK61N,YAAYnzN,GAAQ,cAAgB,aAExD,MAAMu4P,EAAcD,EAAQD,GAO5B,MAN2B,iBAAhBE,GACTtiM,EAAesiM,EACfH,GAAY,GAEZvkM,EAAS0kM,IAEJ,CACLtiM,eACAmiM,YACAvkM,SAEJ,CACA,oBAAAokM,CAAqBO,EAAmB1lP,GACtC,MAAM+gD,EAAS7yD,OAAOwP,OAAO,MACvBqlM,EAAc/iM,EAAW+iM,YACzB/nM,EAAWgF,EAAWyrM,gBAC5B,IAAK,IAAIhwM,EAAW,EAAGA,EAAW,IAAKA,IACjCA,KAAYsnM,GAAe2iD,EAAkB3iD,EAAYtnM,IAC3DslD,EAAOtlD,GAAYiqP,EAAkB3iD,EAAYtnM,IAG/CA,KAAYT,GAAY0qP,EAAkB1qP,EAASS,MACrDslD,EAAOtlD,GAAYiqP,EAAkB1qP,EAASS,KAIlD,OAAOslD,CACT,CACA,eAAAw4L,CAAgBt5O,GACd,MAAM0lP,EAAW1lP,EACjB,IAAIlR,EAAOkR,EAAK5R,IAAI,WACpB,KAAMU,aAAgB8O,IACpB,MAAM,IAAI1J,EAAY,wBAExB,IACIqlP,EADAjuC,GAAY,EAEhB,GAAkB,UAAdx8M,EAAK7B,KAAkB,CACzB,MAAM04P,EAAK3lP,EAAK5R,IAAI,mBACpB,IAAKu3P,EACH,MAAM,IAAIzxP,EAAY,sCAGxB,MADA8L,EAAOrU,MAAMsT,QAAQ0mP,GAAMp7P,KAAKyT,KAAK+V,WAAW4xO,EAAG,IAAMA,aACnC5nP,IACpB,MAAM,IAAI7J,EAAY,wCAGxB,GADApF,EAAOkR,EAAK5R,IAAI,aACVU,aAAgB8O,IACpB,MAAM,IAAI1J,EAAY,wBAExBo3M,GAAY,CACd,CACA,IAAIV,EAAY5qM,EAAK5R,IAAI,aACpB2W,OAAOC,UAAU4lM,KACpBA,EAAY,GAEd,IAAIC,EAAW7qM,EAAK5R,IAAI,YACnB2W,OAAOC,UAAU6lM,KACpBA,EAAWS,EAAY,MAAS,KAElC,MAAM6tB,EAAan5N,EAAK5R,IAAI,kBACtB0sN,EAAY96M,EAAK5R,IAAI,cAAgBs3P,EAASt3P,IAAI,aACxD,GAAI+qO,EAAY,CACdogB,EAAO,IAAI5P,GACX,MAAM5uO,EAAW2qP,EAASxmP,OAAO,YACjC,GAAInE,aAAoB6C,GACtB27O,EAAK1P,OAAO9uO,EAAS9N,WAChB,GAAI8N,aAAoB6D,GAC7B26O,EAAK1P,OAAO9uO,EAAShE,iBAChB,GAAIgE,aAAoBgD,GAC7B,IAAK,MAAMgJ,KAAShM,EAASqE,eAC3B,GAAI2H,aAAiBnJ,GACnB27O,EAAK1P,OAAO9iO,EAAM9Z,WACb,GAAI8Z,aAAiBnI,GAC1B26O,EAAK1P,OAAO9iO,EAAMhQ,iBACb,GAAIpL,MAAMsT,QAAQ8H,GAAQ,CAC/B,MAAM6+O,EAAa7+O,EAAMjc,OACvB+6P,EAAU,IAAIl6P,MAAMi6P,GACtB,IAAK,IAAIjzO,EAAI,EAAGA,EAAIizO,EAAYjzO,IAAK,CACnC,MAAMmzO,EAAY/+O,EAAM4L,GACpBmzO,aAAqBloP,GACvBioP,EAAQlzO,GAAKmzO,EAAU74P,MACO,iBAAd64P,GAA0BA,aAAqBlnP,MAC/DinP,EAAQlzO,GAAKmzO,EAAU/uP,WAE3B,CACAwiP,EAAK1P,OAAOgc,EAAQ9wP,OACtB,CAIJ,GADAwkP,EAAK1P,OAAO,GAAGj/B,KAAaC,KACxBiQ,aAAqBj5M,GAAY,CACnC,MAAM0K,EAASuuM,EAAU7lN,KAAO6lN,EAC1BirC,EAAax5O,EAAO5W,OAAS,IAAIT,WAAWqX,EAAO5W,OAAOA,OAAQ,EAAG4W,EAAO6Q,cAAgB,IAAIloB,WAAWqX,EAAOlY,MAAMsB,OAAQ4W,EAAO/I,MAAO+I,EAAOrJ,IAAMqJ,EAAO/I,OACxK+1O,EAAK1P,OAAOkc,EACd,MAAWjrC,aAAqBl9M,IAC9B27O,EAAK1P,OAAO/uB,EAAU7tN,MAExB,MAAM6zD,EAAS9gD,EAAK5R,IAAI,WAAas3P,EAASt3P,IAAI,UAClD,GAAIzC,MAAMsT,QAAQ6hD,GAAS,CACzB,MAAMklM,EAAY,GAClB,IAAK,MAAMj/O,KAAS+5C,GACG,iBAAV/5C,GAAsBA,aAAiBnI,KAChDonP,EAAUl6P,KAAKib,EAAMhQ,YAGzBwiP,EAAK1P,OAAOmc,EAAUjxP,OACxB,CACA,GAAIu2M,EAAW,CACbiuC,EAAK1P,OAAO,iBACZ,MAAMoc,EAAkBjmP,EAAK5R,IAAI,MAAQs3P,EAASt3P,IAAI,KACtD,GAAIzC,MAAMsT,QAAQgnP,GAAkB,CAClC,MAAMD,EAAY,GAClB,IAAK,MAAMj/O,KAASk/O,EAClB,GAAqB,iBAAVl/O,GAAsBA,aAAiBnI,GAChDonP,EAAUl6P,KAAKib,EAAMhQ,iBAChB,GAAIpL,MAAMsT,QAAQ8H,GAAQ,CAC/B,MAAMm/O,EAAe,GACrB,IAAK,MAAMh/O,KAAWH,GACG,iBAAZG,GAAwBA,aAAmBtI,KACpDsnP,EAAap6P,KAAKob,EAAQnQ,YAG9BivP,EAAUl6P,KAAK,IAAIo6P,EAAanxP,UAClC,CAEFwkP,EAAK1P,OAAOmc,EAAUjxP,OACxB,CACA,MAAMq2M,EAAcprM,EAAKd,OAAO,gBAAkBwmP,EAASxmP,OAAO,eAC9DksM,aAAuBxtM,GACzB27O,EAAK1P,OAAOz+B,EAAYn+M,MACfm+M,aAAuBxsM,GAChC26O,EAAK1P,OAAOz+B,EAAYr0M,YACfq0M,aAAuBvpM,IAChC03O,EAAK1P,OAAOz+B,EAAYzoM,YAE5B,CACF,CACA,MAAO,CACLw2N,aACAn5N,OACA0lP,WACAp6C,YACAx8M,KAAMA,EAAK7B,KACX29M,YACAC,WACAiQ,YACAy+B,KAAMA,EAAOA,EAAKhP,YAAc,GAEpC,CACA,mBAAMoP,EAAc,WAClBxgB,EAAU,KACVn5N,EAAI,SACJ0lP,EAAQ,UACRp6C,EAAS,KACTx8M,EAAI,UACJ87M,EAAS,SACTC,EAAQ,UACRiQ,EAAS,YACTtyM,IAEA,MAAMw3M,EAAuB,UAATlxN,EACpB,IAAKqqO,EAAY,CACf,IAAInZ,EAKG,CACL,IAAIylB,EAAezlO,EAAK5R,IAAI,YAC5B,KAAMq3O,aAAwB7nO,IAC5B,MAAM,IAAI1J,EAAY,8BAExBuxO,EAAeA,EAAax4O,KAAKoO,WAAW,QAAS,KACrD,MAAMknN,EAAUh4N,KAAK06P,mBAAmBxf,GAClC2f,EAAkB3f,EAAal/N,MAAM,IAAK,GAAG,GAC7C2mB,GAAS3iC,KAAK61N,YAAYglC,GA14gB/B,EA04gBoE,IAAM7iC,EAAQ8iC,UA34gB7E,EA24gBgH,IAAMt7C,KAAkBq7C,GAz4gB1I,EAEG,IAw4gBDrlP,EAAa,CACjBjR,OACA7B,KAAMw4O,EACNz6B,WAAY06C,EAAS16C,WACrB2V,eAAgB,KAChB7/J,OAAQyhK,EAAQzhK,OAChBoC,aAAcq/J,EAAQr/J,aACtBm9J,kBAAkB,EAClBnzL,QACA09K,YACAC,WACAiQ,YACAjK,QAAS,EACTD,UAAW,EACXjoM,YAAa,EACbq3M,eAEIl/J,EAAS9gD,EAAK5R,IAAI,UAClBs3O,EAAmBr7B,GAAoBo7B,GAC7C,IAAI77L,EAAO,KACP87L,IACF97L,QAAar/C,KAAK2qP,sBAAsBxP,GACxC3lO,EAAW6iM,iBAAmBh5J,IAE3B7pC,EAAW6iM,gBAAkBr4M,KAAK+H,QAAQogP,iBAC7C3yO,EAAW4gN,eAAiB2kB,GAAoB/6O,KAAKg7O,gBAAiBh7O,KAAKi7O,UAAWj7O,KAAK+H,QAAQsgP,oBAAqBnN,EAAcC,EAAkB52O,IAE1J,MAAMq3P,QAAsB57P,KAAK64P,sBAAsBpjP,EAAMD,GAC7D,GAAIpU,MAAMsT,QAAQ6hD,GAAS,CACzB,MAAM0kM,EAAc,GACpB,IAAI7yO,EAAIi4L,EACR,IAAK,MAAMtsB,KAAKx9H,EAAQ,CACtB,MAAM12C,EAAQ7f,KAAKyT,KAAK+V,WAAWuqK,GACd,iBAAVl0K,IACTo7O,EAAY7yO,GAAKvI,GAEnBuI,GACF,CACAwzO,EAAcrlM,OAAS0kM,CACzB,MACEW,EAAcrlM,OAASv2D,KAAK26P,qBAAqB3iC,EAAQzhK,OAAQqlM,GAEnE,OAAO,IAAIvmC,GAAK6lB,EAAc77L,EAAMu8M,EACtC,CAzDiB,CACf,MAAMlsC,EAAO9zM,GAAiBnG,EAAKhB,SAAS,YAAa,CAAC,EAAG,EAAG,EAAG,KACnEm6N,EAAa,IAAIp7N,GAAK,OACXuB,IAAI,WAAY1B,GAAKxP,IAAIU,IACpCqqO,EAAW75N,IAAI,WAAY26M,EAC7B,CAqDF,CACA,IAAI3P,EAAW6uB,EAAW/qO,IAAI,YAC1Bg4P,EAAWpmP,EAAK5R,IAAI,YACA,iBAAbk8M,IACTA,EAAW1sM,GAAKxP,IAAIk8M,IAEE,iBAAb87C,IACTA,EAAWxoP,GAAKxP,IAAIg4P,IAEtB,MAAMC,EAAc/7C,GAAUr9M,KACxBq5P,EAAcF,GAAUn5P,KAQ9B,GAPK+yN,GAAeqmC,IAAgBC,IAClC30P,EAAK,qCAAqC00P,qDAAoEC,OAC1GD,GAAeC,IAAgBA,EAAY9zP,WAAW6zP,KAAiB97C,GAAgB87C,IAAgB97C,GAAgB+7C,MACzHh8C,EAAW,OAGfA,IAAa87C,IACP97C,aAAoB1sM,IACxB,MAAM,IAAI1J,EAAY,qBAExB,IAAIqyP,EAAU7lC,EAASpI,EAASE,EAASguC,EACzC,IAEE,GADAD,EAAWptB,EAAW/qO,IAAI,WAAY,YAAa,aAC/Cm4P,EAAU,CACZ,KAAMA,aAAoB1kP,IACxB,MAAM,IAAI3N,EAAY,+BACjB,GAAIqyP,EAASzkP,QAClB,MAAM,IAAI5N,EAAY,oBAE1B,CACF,CAAE,MAAOoH,GACP,IAAK/Q,KAAK+H,QAAQkgP,aAChB,MAAMl3O,EAERvJ,EAAK,6BAA6Bu4M,EAASr9M,qBAAqBqO,OAChEirP,EAAW,IACb,CACA,IAAI3jD,GAAiB,EACjB6jD,EAAoB,KACpB9lC,EAAiB,KACrB,GAAI4lC,GACF,GAAIA,EAASvmP,KAAM,CACjB,MAAM0mP,EAAeH,EAASvmP,KAAK5R,IAAI,WACnCs4P,aAAwB9oP,KAC1B8iN,EAAUgmC,EAAaz5P,MAEzBqrN,EAAUiuC,EAASvmP,KAAK5R,IAAI,WAC5BoqN,EAAU+tC,EAASvmP,KAAK5R,IAAI,WAC5Bo4P,EAAUD,EAASvmP,KAAK5R,IAAI,UAC9B,OACK,GAAIoa,EAAa,CACtB,MAAMk9N,EAAmBhN,GAAepuB,EAASr9M,MAC7Cy4O,IACFl9N,EAAYN,WAAa,GAAGM,EAAYN,uBACxCM,EAAY+5M,QAAUmjB,EAAiBnjB,SAAW,KAClDkkC,EAAoB/gB,EAAiB/zB,SAAW,KAChD40C,QAAiBh8P,KAAK2qP,sBAAsBxP,EAAiBz4O,MAC7D21M,IAAmB2jD,EACnBb,EAAW1lP,EAAO24N,GAAeruB,EAASr9M,MAC1Cq+M,GAAY,EAEhB,MAAO,IAAK0U,EAAa,CACvB,MAAM0lB,EAAmBr7B,GAAoBC,EAASr9M,MAClDy4O,IACF6gB,QAAiBh8P,KAAK2qP,sBAAsBxP,GAC5C9iC,IAAmB2jD,IAEhB3jD,GAAkBr4M,KAAK+H,QAAQogP,iBAClC/xB,EAAiB2kB,GAAoB/6O,KAAKg7O,gBAAiBh7O,KAAKi7O,UAAWj7O,KAAK+H,QAAQsgP,oBAAqBtoC,EAASr9M,KAAMy4O,EAAkB52O,GAElJ,CACA,MAAM2wD,EAAaz5C,GAAahG,EAAKhB,SAAS,cAAehQ,GACvDirN,EAAO9zM,GAAiBgzN,EAAWn6N,SAAS,aAAegB,EAAKhB,SAAS,iBAAarR,GAC5F,IAAIiyD,EAASu5K,EAAW/qO,IAAI,UACN,iBAAXwxD,IACTA,OAASjyD,GAEX,IAAIkyD,EAAUs5K,EAAW/qO,IAAI,WACN,iBAAZyxD,IACTA,OAAUlyD,GAEZ,IAAIkjN,EAAUsoB,EAAW/qO,IAAI,WACN,iBAAZyiN,IACTA,EAAU,GAEZ,IAAID,EAAYuoB,EAAW/qO,IAAI,aACN,iBAAdwiN,IACTA,EAAY,GAEd,IAAI1jL,EAAQisM,EAAW/qO,IAAI,SACtB2W,OAAOC,UAAUkoB,KACpBA,EAAQ,GAEV,IAAIvkB,EAAcwwN,EAAW/qO,IAAI,eACN,iBAAhBua,IACTA,EAAc,GAEhB,MAAM5I,EAAa,CACjBjR,OACA7B,KAAMq9M,EAASr9M,KACfyzN,UACA92K,KAAM28M,EACNjuC,UACAE,UACAguC,UACA5jD,iBACAoI,WAAY06C,EAAS16C,WACrBM,YACA0T,YAAY,EACZv/J,aACAmrJ,YACAC,WACAiQ,YACAb,OACAr6J,SACAC,UACAgxJ,UACAD,YACA1jL,QACAvkB,cACAq3M,cACAx3M,cACAk/M,aAAc++B,EACd9lC,kBAEF,GAAIrV,EAAW,CACb,MAAM4V,EAAcwkC,EAASt3P,IAAI,YAC7B8yN,aAAuBtjN,KACzBmC,EAAWmhN,YAAcA,EAAYj0N,MAEvC,MAAMivB,QAAawgC,GAAYj/C,OAAO,CACpC1C,SAAUmmN,EACVjlK,iBAAkB1xD,KAAKwpP,uBACvBz3N,QAAS,OAEXvc,EAAWmc,KAAOA,EAClBnc,EAAWsc,SAAWtc,EAAWmc,KAAKG,QACxC,CACA,MAAM8pO,QAAsB57P,KAAK64P,sBAAsBpjP,EAAMD,GAE7D,OADAxV,KAAKq6P,cAAc5kP,EAAMm5N,EAAYgtB,GAC9B,IAAIvmC,GAAKtV,EAASr9M,KAAMs5P,EAAUJ,EAC3C,CACA,qBAAOxN,CAAe9rC,EAAMN,EAAQinC,EAAS+E,GAC3C,SAASsB,EAAU5+B,GACjB,MAAMlY,EAAY,GAAG8J,EAAK7B,mBAAmBiQ,IAC7C,IACE,GAAIpO,EAAKkV,SAASpS,aAAasL,GAC7B,OAEFu4B,EAAQlkO,KAAK,YAAa,CAACyzL,EAAW,WAAY8J,EAAKkV,SAASxS,UAAU0L,IAC5E,CAAE,MAAOtsM,GACP,GAAI4pO,EAAiB/F,aAEnB,YADAzgP,EAAK,6BAA6BgxM,aAAqBp0L,OAGzD,MAAMA,CACR,CACF,CACA,IAAK,MAAMq6C,KAASujJ,EAAQ,CAC1BstC,EAAU7wL,EAAMiyJ,UAChB,MAAMC,EAASlyJ,EAAMkyJ,OACjBA,GAAQD,UACV4+B,EAAU3+B,EAAOD,SAErB,CACF,CACA,2BAAWg9B,GACT,MAAMj4O,EAAO,IAAIjC,GAKjB,OAJAiC,EAAKV,IAAI,WAAY1B,GAAKxP,IAAI,cAC9B4R,EAAKV,IAAI,OAAQ1B,GAAKxP,IAAI,iBAC1B4R,EAAKV,IAAI,UAAW1B,GAAKxP,IAAI,iBAC7B4R,EAAKV,IAAI,WAAY1B,GAAKxP,IAAI,oBACvB6E,EAAO1I,KAAM,mBAAoByV,EAC1C,EAEF,MAAMs4O,GACJ,WAAA9kP,EAAY,WACVw3M,EAAU,KACV6B,EAAI,KACJ7sM,EAAI,iBACJu4O,IAEAhuP,KAAKygN,WAAaA,EAClBzgN,KAAKsiN,KAAOA,EACZtiN,KAAKyV,KAAOA,EACZzV,KAAKo8P,kBAAoBpO,GAAoBlG,GAC7C9nP,KAAKq8P,YAAc,KACnBr8P,KAAK8tP,kBAAoBxrC,EAAKmT,YAAc,IAAIn/M,IAAQ,KACxDtW,KAAKs8P,MAAO,CACd,CACA,IAAAv3O,CAAKkkO,GACCjpP,KAAKs8P,OAGTt8P,KAAKs8P,MAAO,EACZrT,EAAQlkO,KAAK,YAAa,CAAC/kB,KAAKygN,WAAY,OAAQzgN,KAAKsiN,KAAKmV,WAAWz3N,KAAKo8P,kBAAkBlU,uBAClG,CACA,QAAAxsO,CAASutO,GACFjpP,KAAKsiN,KAAKvoM,OAGf/Z,KAAKsiN,KAAKkT,iBAAkB,EAC5BwzB,GAAiBoF,eAAepuP,KAAKsiN,KAAMtiN,KAAKsiN,KAAKwhB,iBAAkBmlB,EAASjpP,KAAKo8P,mBACvF,CACA,aAAAvO,CAAcjZ,EAAWzrN,EAAW2hO,GAClC,GAAI9qP,KAAKq8P,YACP,OAAOr8P,KAAKq8P,YAEd,IAAKr8P,KAAKsiN,KAAKmT,YACb,MAAM,IAAIh2N,MAAM,yBAElB,MAAM88P,EAAiB3nB,EAAU/+N,MAAM,CACrCoyO,cAAc,IAEVqB,EAAgB,IAAInzO,GAAOy+N,EAAU0U,eACvCtpP,KAAKyV,KAAK7B,QAAU01O,EAAct0O,IAAIhV,KAAKyV,KAAK7B,QAClD01O,EAAc/yO,IAAIvW,KAAKyV,KAAK7B,OAE9B2oP,EAAejT,cAAgBA,EAC/B,MAAM+F,EAAiBrvP,KAAKsiN,KAC1BwrC,EAAoB9tP,KAAK8tP,kBAC3B,IAAI0O,EAAuB9pP,QAAQG,UACnC,MAAM4pP,EAAYz8P,KAAKyV,KAAK5R,IAAI,aAC1B64P,EAAgB18P,KAAKyV,KAAK5R,IAAI,cAAgBslB,EAC9CwzO,EAAuBj5P,OAAOwP,OAAO,MACrCiiD,EAAWzoD,EAAKgC,cAAc2gP,EAAe3/B,MAAQ,CAAC,EAAG,EAAG,EAAG,IACnE7vM,EAAQs1C,EAAS,GAAKA,EAAS,GAC/Br1C,EAASq1C,EAAS,GAAKA,EAAS,GAC5BynM,EAAexyP,KAAKs7N,MAAM7lN,EAAOC,GACvC,IAAK,MAAMtc,KAAOi5P,EAAU7nP,UAC1B4nP,EAAuBA,EAAqBl5O,MAAK,KAC/C,MAAMu5O,EAAcJ,EAAU54P,IAAIL,GAC5B2nO,EAAe,IAAI4X,GACzB,OAAOwZ,EAAehR,gBAAgB,CACpCvpO,OAAQ66O,EACR/R,OACA3hO,UAAWuzO,EACXvxB,iBACC7nN,MAAK,KAlhhCS,KAmhhCX6nN,EAAa2H,QAAQ,IACvB9yO,KAAK88P,2BAA2B3xB,EAAcyxB,GAEhDD,EAAqBn5P,GAAO2nO,EAAatG,QACzC,IAAK,MAAMif,KAAc3Y,EAAakY,aACpCyK,EAAkBt3O,IAAIstO,EACxB,IACC3/N,OAAM,SAAUC,GACjB5c,EAAK,wBAAwBhE,wBAC7B,MAAMu5P,EAAoB,IAAIha,GAC9B4Z,EAAqBn5P,GAAOu5P,EAAkBl4B,OAChD,GAAE,IAUN,OAPA7kO,KAAKq8P,YAAcG,EAAqBl5O,MAAK,KAC3C+rO,EAAesN,qBAAuBA,EAClC38P,KAAKg9P,QACP3N,EAAe8F,YAAa,EAC5B9F,EAAe3/B,KAAO1vN,KAAKg9P,MAC7B,IAEKh9P,KAAKq8P,WACd,CACA,0BAAAS,CAA2B3xB,EAAcyxB,EAAe96M,KACtD,MAAMm7M,EAAWvwP,EAAKgC,cAAcy8N,EAAasV,UAAU,GAAG7yO,MAAM,IAClEiS,EAAQo9O,EAAS,GAAKA,EAAS,GAC/Bn9O,EAASm9O,EAAS,GAAKA,EAAS,GAC5BC,EAAe9yP,KAAKs7N,MAAM7lN,EAAOC,GACzB,IAAVD,GAA0B,IAAXC,GACjBqrN,EAAa2H,QAAQ5nB,OAAO,EAAG,GAC/BigB,EAAasV,UAAUv1B,OAAO,EAAG,KACP,IAAjB0xC,GAAsBxyP,KAAK0U,MAAMo+O,EAAeN,IAAiB,MACrE58P,KAAKg9P,QACRh9P,KAAKg9P,MAAQ,CAACvN,IAAUA,KAAU,KAAW,MAE/CzvP,KAAKg9P,MAAM,GAAK5yP,KAAKC,IAAIrK,KAAKg9P,MAAM,GAAIC,EAAS,IACjDj9P,KAAKg9P,MAAM,GAAK5yP,KAAKC,IAAIrK,KAAKg9P,MAAM,GAAIC,EAAS,IACjDj9P,KAAKg9P,MAAM,GAAK5yP,KAAK2D,IAAI/N,KAAKg9P,MAAM,GAAIC,EAAS,IACjDj9P,KAAKg9P,MAAM,GAAK5yP,KAAK2D,IAAI/N,KAAKg9P,MAAM,GAAIC,EAAS,KAEnD,IAAI37P,EAAI,EACN0P,EAAKm6N,EAAa5qO,OACpB,KAAOe,EAAI0P,GAAI,CACb,OAAQm6N,EAAa2H,QAAQxxO,IAC3B,KA/jhCiB,GAgkhCf,MACF,KAhkhCe,GAikhCf,KAhkhCa,GAikhCb,KAhkhCU,GAikhCV,KAhkhCW,GAikhCX,KAhkhCQ,GAikhCR,KAhkhCS,GAikhCT,KAhkhCS,GAikhCT,KAhkhCO,GAikhCP,KAAK2F,EACL,KAAKA,EACL,KAhkhCc,GAikhCd,KAhkhCY,GAikhCZ,KAhkhCO,GAikhCP,KAxnhCc,EAynhCZkkO,EAAa2H,QAAQ5nB,OAAO5pN,EAAG,GAC/B6pO,EAAasV,UAAUv1B,OAAO5pN,EAAG,GACjC0P,IACA,SACF,KA3nhCK,EA4nhCH,MAAO29O,GAAaxjB,EAAasV,UAAUn/O,GAC3C,IAAI8mB,EAAI,EACN0nB,EAAK6+M,EAAUpuP,OACjB,KAAO6nB,EAAI0nB,GAAI,CACb,MAAOqtN,GAAaxO,EAAUvmO,GAC9B,OAAQ+0O,GACN,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,MACL,IAAK,OACHxO,EAAUzjC,OAAO9iM,EAAG,GACpB0nB,IACA,SAEJ1nB,GACF,EAGJ9mB,GACF,CACF,EAEF,MAAM2vP,GACJ,WAAAhoP,CAAY8hP,EAAe,IAAI+F,IAC7B9wP,KAAKuqD,MAAQwgM,EACb/qP,KAAKo9P,WAAa,EACpB,CACA,IAAAl6C,GACE,MAAMm6C,EAAMr9P,KAAKuqD,MACjBvqD,KAAKo9P,WAAW77P,KAAKvB,KAAKuqD,OAC1BvqD,KAAKuqD,MAAQ8yM,EAAIxnP,OACnB,CACA,OAAAstM,GACE,MAAMhnL,EAAOn8B,KAAKo9P,WAAW9rN,MACzBnV,IACFn8B,KAAKuqD,MAAQpuB,EAEjB,CACA,SAAAnvB,CAAU7L,GACRnB,KAAKuqD,MAAM8qM,IAAM3oP,EAAKM,UAAUhN,KAAKuqD,MAAM8qM,IAAKl0P,EAClD,EAEF,MAAMmyP,GACJ,WAAArqP,GACEjJ,KAAKq1P,IAAM,IAAI/pO,aAAa9mB,GAC5BxE,KAAK+/M,SAAW,KAChB//M,KAAKiyP,SAAW,EAChBjyP,KAAKygN,WAAa,KAClBzgN,KAAKsiN,KAAO,KACZtiN,KAAKk1D,WAAazwD,EAClBzE,KAAKs1P,WAAa9wP,EAAgBoJ,QAClC5N,KAAK41P,eAAiBpxP,EAAgBoJ,QACtC5N,KAAKg3P,YAAc,EACnBh3P,KAAKm3P,YAAc,EACnBn3P,KAAK83P,QAAU,EACf93P,KAAKi1P,WAAa,EAClBj1P,KAAKk1P,SAAW,CAClB,CACA,aAAA+C,CAAc9pP,EAAGrB,EAAGsB,EAAG9K,EAAGxD,EAAGmjD,GAC3B,MAAM11C,EAAIvN,KAAKs1P,WACf/nP,EAAE,GAAKY,EACPZ,EAAE,GAAKT,EACPS,EAAE,GAAKa,EACPb,EAAE,GAAKjK,EACPiK,EAAE,GAAKzN,EACPyN,EAAE,GAAK01C,CACT,CACA,iBAAAi1M,CAAkB/pP,EAAGrB,EAAGsB,EAAG9K,EAAGxD,EAAGmjD,GAC/B,MAAM11C,EAAIvN,KAAK41P,eACfroP,EAAE,GAAKY,EACPZ,EAAE,GAAKT,EACPS,EAAE,GAAKa,EACPb,EAAE,GAAKjK,EACPiK,EAAE,GAAKzN,EACPyN,EAAE,GAAK01C,CACT,CACA,mBAAAg0M,CAAoBlnP,EAAGC,GACrB,MAAMzC,EAAIvN,KAAKs1P,WACf/nP,EAAE,GAAKA,EAAE,GAAKwC,EAAIxC,EAAE,GAAKyC,EAAIzC,EAAE,GAC/BA,EAAE,GAAKA,EAAE,GAAKwC,EAAIxC,EAAE,GAAKyC,EAAIzC,EAAE,EACjC,CACA,uBAAAwqP,CAAwBhoP,EAAGC,GACzB,MAAMzC,EAAIvN,KAAK41P,eACfroP,EAAE,GAAKA,EAAE,GAAKwC,EAAIxC,EAAE,GAAKyC,EAAIzC,EAAE,GAC/BA,EAAE,GAAKA,EAAE,GAAKwC,EAAIxC,EAAE,GAAKyC,EAAIzC,EAAE,EACjC,CACA,cAAAyqP,GACEh4P,KAAK+3P,wBAAwB,GAAI/3P,KAAK83P,SACtC93P,KAAKs1P,WAAat1P,KAAK41P,eAAehoP,OACxC,CACA,KAAAiI,GACE,MAAMA,EAAQnS,OAAOwP,OAAOlT,MAI5B,OAHA6V,EAAMy/O,WAAat1P,KAAKs1P,WAAW1nP,QACnCiI,EAAM+/O,eAAiB51P,KAAK41P,eAAehoP,QAC3CiI,EAAMq/C,WAAal1D,KAAKk1D,WAAWtnD,QAC5BiI,CACT,EAEF,MAAMi7O,GACJ,WAAA7nP,GACEjJ,KAAKq1P,IAAM,IAAI/pO,aAAa9mB,GAC5BxE,KAAKsiN,KAAO,KACZtiN,KAAKkuP,kBAt2hCD,EAu2hCJluP,KAAKs9P,gBAAkB93O,GAAWiE,WAAWC,KAC7C1pB,KAAKu9P,kBAAoB/3O,GAAWiE,WAAWC,KAC/C1pB,KAAKqyP,sBAAwB,KAC7BryP,KAAKsyP,wBAA0B,IACjC,CACA,kBAAInE,GACF,OAAOnuP,KAAKs9P,eACd,CACA,kBAAInP,CAAehnB,GACjBnnO,KAAKs9P,gBAAkBt9P,KAAKqyP,sBAAwBlrB,CACtD,CACA,oBAAIirB,GACF,OAAOpyP,KAAKu9P,iBACd,CACA,oBAAInL,CAAiBjrB,GACnBnnO,KAAKu9P,kBAAoBv9P,KAAKsyP,wBAA0BnrB,CAC1D,CACA,KAAAtxN,GACE,OAAOnS,OAAOwP,OAAOlT,KACvB,EAEF,MAAMmxP,GACJ,gBAAWqM,GACT,OAAO90P,EAAO1I,KAAM,QAAS0D,OAAO+5C,OAAO/5C,OAAOwP,OAAO,MAAO,CAC9D6gL,EAAG,CACDl4J,GAtwhCQ,EAuwhCR+uB,QAAS,EACTG,cAAc,GAEhB4mB,EAAG,CACD91C,GA1whCM,EA2whCN+uB,QAAS,EACTG,cAAc,GAEhB3iC,EAAG,CACDyT,GA9whCO,EA+whCP+uB,QAAS,EACTG,cAAc,GAEhBz6B,EAAG,CACDuL,GAlxhCS,EAmxhCT+uB,QAAS,EACTG,cAAc,GAEhBznD,EAAG,CACDu4B,GAtxhCG,EAuxhCH+uB,QAAS,EACTG,cAAc,GAEhB0yM,GAAI,CACF5hO,GA1xhCc,EA2xhCd+uB,QAAS,EACTG,cAAc,GAEhBzpD,EAAG,CACDu6B,GA9xhCO,EA+xhCP+uB,QAAS,EACTG,cAAc,GAEhB2yM,GAAI,CACF7hO,GAlyhCK,EAmyhCL+uB,QAAS,EACTG,cAAc,GAEhBh/B,EAAG,CACD8P,GAAI50B,EACJ2jD,QAAS,EACTG,cAAc,GAEhBoxB,EAAG,CACDtgD,GAAI50B,EACJ2jD,QAAS,EACTG,cAAc,GAEhB4yM,GAAI,CACF9hO,GAAI50B,EACJ2jD,QAAS,EACTG,cAAc,GAEhBx9C,EAAG,CACDsuB,GAlzhCE,GAmzhCF+uB,QAAS,EACTG,cAAc,GAEhBnT,EAAG,CACD/b,GAtzhCE,GAuzhCF+uB,QAAS,EACTG,cAAc,GAEhB38C,EAAG,CACDytB,GA1zhCG,GA2zhCH+uB,QAAS,EACTG,cAAc,GAEhB/zC,EAAG,CACD6kB,GA9zhCI,GA+zhCJ+uB,QAAS,EACTG,cAAc,GAEhB/6C,EAAG,CACD6rB,GAl0hCI,GAm0hCJ+uB,QAAS,EACTG,cAAc,GAEhBxX,EAAG,CACD1X,GAt0hCK,GAu0hCL+uB,QAAS,EACTG,cAAc,GAEhB6yM,GAAI,CACF/hO,GA10hCK,GA20hCL+uB,QAAS,EACTG,cAAc,GAEhB6yB,EAAG,CACD/hD,GA90hCE,GA+0hCF+uB,QAAS,EACTG,cAAc,GAEhBt3B,EAAG,CACDoI,GAl1hCO,GAm1hCP+uB,QAAS,EACTG,cAAc,GAEhB9H,EAAG,CACDpnB,GAt1hCA,GAu1hCA+uB,QAAS,EACTG,cAAc,GAEhBzkD,EAAG,CACDu1B,GA31hCA,GA41hCA+uB,QAAS,EACTG,cAAc,GAEhB,KAAM,CACJlvB,GA/1hCE,GAg2hCF+uB,QAAS,EACTG,cAAc,GAEhB97B,EAAG,CACD4M,GAn2hCM,GAo2hCN+uB,QAAS,EACTG,cAAc,GAEhB,KAAM,CACJlvB,GAv2hCQ,GAw2hCR+uB,QAAS,EACTG,cAAc,GAEhBj+C,EAAG,CACD+uB,GA32hCW,GA42hCX+uB,QAAS,EACTG,cAAc,GAEhB,KAAM,CACJlvB,GA/2hCa,GAg3hCb+uB,QAAS,EACTG,cAAc,GAEhBx+C,EAAG,CACDsvB,GAn3hCG,GAo3hCH+uB,QAAS,EACTG,cAAc,GAEhBo9B,EAAG,CACDtsD,GAv3hCA,GAw3hCA+uB,QAAS,EACTG,cAAc,GAEhB,KAAM,CACJlvB,GA33hCE,GA43hCF+uB,QAAS,EACTG,cAAc,GAEhB8yM,GAAI,CACFhiO,GA/3hCK,GAg4hCL+uB,QAAS,EACTG,cAAc,GAEhB+yM,GAAI,CACFjiO,GAn4hCG,GAo4hCH+uB,QAAS,EACTG,cAAc,GAEhBgzM,GAAI,CACFliO,GAv4hCU,GAw4hCV+uB,QAAS,EACTG,cAAc,GAEhBizM,GAAI,CACFniO,GA34hCU,GA44hCV+uB,QAAS,EACTG,cAAc,GAEhBkzM,GAAI,CACFpiO,GA/4hCK,GAg5hCL+uB,QAAS,EACTG,cAAc,GAEhBmzM,GAAI,CACFriO,GAn5hCM,GAo5hCN+uB,QAAS,EACTG,cAAc,GAEhBozM,GAAI,CACFtiO,GAAI50B,EACJ2jD,QAAS,EACTG,cAAc,GAEhBqzM,GAAI,CACFviO,GA35hCgB,GA45hChB+uB,QAAS,EACTG,cAAc,GAEhBszM,GAAI,CACFxiO,GA/5hCO,GAg6hCP+uB,QAAS,EACTG,cAAc,GAEhBuzM,GAAI,CACFziO,GAn6hCI,GAo6hCJ+uB,QAAS,EACTG,cAAc,GAEhBwzM,GAAI,CACF1iO,GAv6hCc,GAw6hCd+uB,QAAS,EACTG,cAAc,GAEhByzM,GAAI,CACF3iO,GA36hCS,GA46hCT+uB,QAAS,EACTG,cAAc,GAEhB,KAAM,CACJlvB,GA/6hCI,GAg7hCJ+uB,QAAS,EACTG,cAAc,GAEhB0zM,GAAI,CACF5iO,GAAI50B,EACJ2jD,QAAS,EACTG,cAAc,GAEhB2zM,GAAI,CACF7iO,GAv7hCU,GAw7hCV+uB,QAAS,EACTG,cAAc,GAEhB,IAAK,CACHlvB,GA37hCY,GA47hCZ+uB,QAAS,EACTG,cAAc,GAEhB,IAAK,CACHlvB,GA/7hCsB,GAg8hCtB+uB,QAAS,EACTG,cAAc,GAEhB4zM,GAAI,CACF9iO,GAn8hCQ,GAo8hCR+uB,QAAS,EACTG,cAAc,GAEhB6zM,GAAI,CACF/iO,GAv8hCiB,GAw8hCjB+uB,QAAS,EACTG,cAAc,GAEhB8zM,GAAI,CACFhjO,GA38hCe,GA48hCf+uB,QAAS,EACTG,cAAc,GAEhB7hC,GAAI,CACF2S,GA/8hCa,GAg9hCb+uB,QAAS,EACTG,cAAc,GAEhB+zM,GAAI,CACFjjO,GAn9hCU,GAo9hCV+uB,QAAS,EACTG,cAAc,GAEhBg0M,IAAK,CACHljO,GAv9hCW,GAw9hCX+uB,QAAS,GACTG,cAAc,GAEhBi0M,GAAI,CACFnjO,GA39hCQ,GA49hCR+uB,QAAS,EACTG,cAAc,GAEhBk0M,IAAK,CACHpjO,GA/9hCS,GAg+hCT+uB,QAAS,GACTG,cAAc,GAEhBh+B,EAAG,CACD8O,GAn+hCS,GAo+hCT+uB,QAAS,EACTG,cAAc,GAEhBl+C,EAAG,CACDgvB,GAv+hCO,GAw+hCP+uB,QAAS,EACTG,cAAc,GAEhBm0M,GAAI,CACFrjO,GAAI50B,EACJ2jD,QAAS,EACTG,cAAc,GAEhBo0M,GAAI,CACFtjO,GAAI50B,EACJ2jD,QAAS,EACTG,cAAc,GAEhB1kD,EAAG,CACDw1B,GAn/hCc,GAo/hCd+uB,QAAS,EACTG,cAAc,GAEhBv+B,EAAG,CACDqP,GAv/hCY,GAw/hCZ+uB,QAAS,EACTG,cAAc,GAEhB67L,GAAI,CACF/qN,GA3/hCO,GA4/hCP+uB,QAAS,EACTG,cAAc,GAEhBq0M,GAAI,CACFvjO,GA//hCY,GAggiCZ+uB,QAAS,EACTG,cAAc,GAEhBs0M,GAAI,CACFxjO,GAngiCU,GAogiCV+uB,QAAS,EACTG,cAAc,GAEhBu0M,GAAI,CACFzjO,GAvgiCU,GAwgiCV+uB,QAAS,EACTG,cAAc,GAEhBw0M,GAAI,CACF1jO,GA3giCQ,GA4giCR+uB,QAAS,EACTG,cAAc,GAEhBy0M,GAAI,CACF3jO,GA/giCK,GAghiCL+uB,QAAS,EACTG,cAAc,GAEhBjkD,GAAI,CACF+0B,GAnhiCU,GAohiCV+uB,QAAS,EACTG,cAAc,GAEhB00M,IAAK,CACH5jO,GAvhiCc,GAwhiCd+uB,QAAS,EACTG,cAAc,GAEhB20M,IAAK,CACH7jO,GAAI50B,EACJ2jD,QAAS,EACTG,cAAc,GAEhB40M,IAAK,CACH9jO,GAAI50B,EACJ2jD,QAAS,EACTG,cAAc,GAEhB60M,GAAI,CACF/jO,GAniiCO,GAoiiCP+uB,QAAS,EACTG,cAAc,GAEhB80M,GAAI,CACFhkO,GAviiCK,GAwiiCL+uB,QAAS,EACTG,cAAc,GAEhB+0M,GAAI,KACJC,GAAI,KACJC,KAAM,KACNC,GAAI,KACJC,IAAK,KACLC,KAAM,KACNC,MAAO,KACP51G,GAAI,KACJ61G,IAAK,KACLC,KAAM,OAEV,CACAnzO,4BAA8B,GAC9B,WAAAlkB,CAAY+Y,EAAQvO,EAAM24O,EAAe,IAAI6E,IAC3CjxP,KAAK0uD,OAAS,IAAIrF,GAAO,CACvBC,MAAO,IAAIoB,GAAM1oC,EAAQmvO,GAAsBqM,OAC/C/pP,SAEFzT,KAAKosP,aAAeA,EACpBpsP,KAAKugQ,iBAAmB,GACxBvgQ,KAAKwgQ,WAAY,EACjBxgQ,KAAKygQ,mBAAqB,CAC5B,CACA,oBAAIlP,GACF,OAAOvxP,KAAKosP,aAAagR,WAAW78P,MACtC,CACA,IAAA8iB,CAAK+zN,GACH,IAAIj2O,EAAOi2O,EAAUj2O,KACrB,OAAa,CACX,MAAM2C,EAAM9D,KAAK0uD,OAAO7E,SACxB,GAAI/lD,aAAewP,GAAK,CACtB,MAAMC,EAAMzP,EAAIyP,IACVmtP,EAASvP,GAAsBqM,MAAMjqP,GAC3C,IAAKmtP,EAAQ,CACXl5P,EAAK,oBAAoB+L,OACzB,QACF,CACA,MAAMX,EAAK8tP,EAAO7kO,GACZ+uB,EAAU81M,EAAO91M,QACvB,IAAI+1M,EAAsB,OAATx/P,EAAgBA,EAAKZ,OAAS,EAK/C,GAJKP,KAAKwgQ,YACRxgQ,KAAKygQ,mBAAqB,GAE5BzgQ,KAAKwgQ,UAAY5tP,GAlpiCf,IAkpiCmCA,GAnoiClC,GAooiCE8tP,EAAO31M,aA0BD41M,EAAa/1M,GACtBxjD,EAAK,WAAWmM,mBAAqBq3C,yBAAoC+1M,eA3BjD,CACxB,GAAIA,IAAe/1M,EAAS,CAC1B,MAAM21M,EAAmBvgQ,KAAKugQ,iBAC9B,KAAOI,EAAa/1M,GAClB21M,EAAiBh/P,KAAKJ,EAAKyyB,SAC3B+sO,IAEF,KAAOA,EAAa/1M,GAAuC,IAA5B21M,EAAiBhgQ,QACjC,OAATY,IACFA,EAAO,IAETA,EAAKgkD,QAAQo7M,EAAiBjvN,OAC9BqvN,GAEJ,CACA,GAAIA,EAAa/1M,EAAS,CACxB,MAAMg2M,EAAa,WAAWrtP,eAAiBq3C,wBAAmC+1M,UAClF,GAAI3gQ,KAAKwgQ,aAAexgQ,KAAKygQ,mBAAqBtP,GAAsB0P,qBACtE,MAAM,IAAIl3P,EAAY,WAAWi3P,KAEnCp5P,EAAK,YAAYo5P,KACJ,OAATz/P,IACFA,EAAKZ,OAAS,GAEhB,QACF,CACF,CAMA,OAHAP,KAAK8gQ,kBAAkBluP,EAAIzR,GAC3Bi2O,EAAUxkO,GAAKA,EACfwkO,EAAUj2O,KAAOA,GACV,CACT,CACA,GAAI2C,IAAQkP,GACV,OAAO,EAET,GAAY,OAARlP,IACW,OAAT3C,IACFA,EAAO,IAETA,EAAKI,KAAKuC,GACN3C,EAAKZ,OAAS,IAChB,MAAM,IAAIoJ,EAAY,qBAG5B,CACF,CACA,iBAAAm3P,CAAkBluP,EAAIzR,GACpB,OAAa,EAALyR,GACN,KAAK3L,EACHjH,KAAKosP,aAAalpC,OAClB,MACF,KAAKj8M,EACHjH,KAAKosP,aAAajpC,UAClB,MACF,KAAKl8M,EACHjH,KAAKosP,aAAap/O,UAAU7L,GAGlC,EAYF,MAAM4/P,WAAmC5P,GACvC,WAAAloP,CAAYyB,GACVtB,MAAM,IAAI+W,GAAazV,GACzB,CACA,KAAA4e,GACE,MAAM8tN,EAAY,CAChBxkO,GAAI,EACJzR,KAAM,IAEF6sB,EAAS,CACbikO,SAAU,EACVlyC,SAAU,GACVihD,UAAW,IAAIl7O,kBAAkB,IAEnC,IACE,KACEsxN,EAAUj2O,KAAKZ,OAAS,EACnBP,KAAKqjB,KAAK+zN,IAFJ,CAKX,GAA8B,IAA1Bp3O,KAAKuxP,iBACP,SAEF,MAAM,GACJ3+O,EAAE,KACFzR,GACEi2O,EACJ,OAAa,EAALxkO,GACN,KAAK3L,EACH,MAAO84M,EAAUkyC,GAAY9wP,EACzB4+M,aAAoB1sM,KACtB2a,EAAO+xL,SAAWA,EAASr9M,MAEL,iBAAbuvP,GAAyBA,EAAW,IAC7CjkO,EAAOikO,SAAWA,GAEpB,MACF,KAAKhrP,EACHue,GAAWiE,WAAW5D,IAAIE,WAAW5kB,EAAM,EAAG6sB,EAAOgzO,UAAW,GAChE,MACF,KAvtiCK,GAwtiCHx7O,GAAWiE,WAAWC,KAAK3D,WAAW5kB,EAAM,EAAG6sB,EAAOgzO,UAAW,GACjE,MACF,KAttiCU,GAutiCRx7O,GAAWiE,WAAWG,KAAK7D,WAAW5kB,EAAM,EAAG6sB,EAAOgzO,UAAW,GAGvE,CACF,CAAE,MAAO58O,GACP5c,EAAK,8CAA8C4c,MACrD,CACA,OAAO4J,CACT,EAEF,SAASizO,GAAuBv2P,GAC9B,OAAO,IAAIq2P,GAA2Br2P,GAAK4e,OAC7C,CACA,MAAM43O,WAAkC/P,GACtC,WAAAloP,CAAY+Y,EAAQgsO,EAAkBv6O,GACpCrK,MAAM4Y,GACNhiB,KAAKgiB,OAASA,EACdhiB,KAAKguP,iBAAmBA,EACxBhuP,KAAKyT,KAAOA,EACZzT,KAAKmpB,UAAYnH,EAAOvM,MAAM5R,IAAI,YACpC,CACA,KAAAylB,GACE,MAAM8tN,EAAY,CAChBxkO,GAAI,EACJzR,KAAM,IAER,IAAI6sB,EAAS,CACX+nO,YAAa,EACb9D,SAAU,EACVlyC,SAAU,GACVihD,UAAW,IAAIl7O,kBAAkB,GACjCqoO,eAAgB3oO,GAAWiE,WAAWC,MAEpCy3O,GAAY,EAChB,MAAM/vO,EAAQ,GACd,IACE,KACEgmN,EAAUj2O,KAAKZ,OAAS,GACpB4gQ,GAAcnhQ,KAAKqjB,KAAK+zN,IAFjB,CAKX,MAAM,GACJxkO,EAAE,KACFzR,GACEi2O,EACJ,OAAa,EAALxkO,GACN,KAAK3L,EACHmqB,EAAM7vB,KAAK,CACTw0P,YAAa/nO,EAAO+nO,YACpB9D,SAAUjkO,EAAOikO,SACjBlyC,SAAU/xL,EAAO+xL,SACjBihD,UAAWhzO,EAAOgzO,UAAUpzP,QAC5BugP,eAAgBngO,EAAOmgO,iBAEzB,MACF,KAAKlnP,EACH+mB,EAASoD,EAAMkgB,OAAStjB,EACxB,MACF,KApyiCO,GAqyiCLA,EAAO+nO,aAAe3rP,KAAKs7N,MAAMvkO,EAAK,GAAIA,EAAK,IAC/C,MACF,KAAK8F,EACH,MAAO84M,EAAUkyC,GAAY9wP,EACzB4+M,aAAoB1sM,KACtB2a,EAAO+xL,SAAWA,EAASr9M,MAEL,iBAAbuvP,GAAyBA,EAAW,IAC7CjkO,EAAOikO,SAAWA,EAAWjkO,EAAO+nO,aAEtC,MACF,KAvyiCW,GAwyiCT/nO,EAAOmgO,eAAiB3oO,GAAW8D,MAAM,CACvCJ,GAAI/nB,EAAK,GACTsS,KAAMzT,KAAKyT,KACX0V,UAAWnpB,KAAKmpB,UAChBC,mBAAoBppB,KAAKypP,oBACzBhhO,qBAAsBzoB,KAAKohQ,wBAE7B,MACF,KA7yiCM,GA8yiCOpzO,EAAOmgO,eACfpoO,WAAW5kB,EAAM,EAAG6sB,EAAOgzO,UAAW,GACzC,MACF,KAAK/5P,EACHue,GAAWiE,WAAW5D,IAAIE,WAAW5kB,EAAM,EAAG6sB,EAAOgzO,UAAW,GAChE,MACF,KAjziCK,GAkziCHx7O,GAAWiE,WAAWC,KAAK3D,WAAW5kB,EAAM,EAAG6sB,EAAOgzO,UAAW,GACjE,MACF,KAhziCU,GAiziCRx7O,GAAWiE,WAAWG,KAAK7D,WAAW5kB,EAAM,EAAG6sB,EAAOgzO,UAAW,GACjE,MACF,KAAK/5P,EACL,KAp0iCQ,GAq0iCR,KAp0iCU,GAq0iCV,KAp0iCoB,GAq0iClBk6P,GAAY,EAGlB,CACF,CAAE,MAAO/8O,GACP5c,EAAK,6CAA6C4c,MACpD,CAIA,OAHApkB,KAAKgiB,OAAOlJ,eACLkV,EAAO+nO,mBACP/nO,EAAOmgO,eACPngO,CACT,CACA,yBAAIozO,GACF,OAAO14P,EAAO1I,KAAM,wBAAyB,IAAIywO,GACnD,CACA,uBAAIgZ,GAKF,OAAO/gP,EAAO1I,KAAM,sBAJO,IAAI2xO,GAAmB,CAChDl+N,KAAMzT,KAAKyT,KACXpI,gBAAiBrL,KAAKguP,iBAAiB3iP,kBAG3C,EAKF,SAASg2P,GAAYlzO,EAAOmzO,GAC1B,OAAInzO,EAAM,KAAOA,EAAM,IAAMA,EAAM,KAAOA,EAAM,GAEvC,GAAGvP,GADGuP,EAAM,GAAK,QACUmzO,EAAS,IAAM,MAE5ClgQ,MAAMkL,KAAK6hB,GAAO/f,GAAKwQ,GAAexQ,EAAI,OAAM5D,KAAK,KAAO,KAAI82P,EAAS,KAAO,KACzF,CAQA,MAAMC,GACJ,WAAAt4P,CAAYwK,EAAMkK,GAChB3d,KAAKyT,KAAOA,EACZzT,KAAKu2D,OAAS,KACdv2D,KAAKqgN,UAAYovC,IACjBzvP,KAAKsgN,UAAW,IAChBtgN,KAAK2d,WAAaA,EAClB,MAAM2+N,EAAS,IAAI9wO,gBAAgB,EAAG,GACtCxL,KAAKwhQ,WAAallB,EAAOE,WAAW,KAAM,CACxC0B,oBAAoB,IAEjBqjB,GAAgBE,cACnBF,GAAgBE,YAAc,GAEhCzhQ,KAAK+/M,SAAW1sM,GAAKxP,IAAI,oBAAoB8Z,KAAc4jP,GAAgBE,gBAC7E,CACA,qBAAIC,GACF,IAAKH,GAAgBI,mBAAoB,CACvC,MAAMC,EAAiB,IAAIpuP,GAAKxT,KAAKyT,MACrCmuP,EAAe7sP,IAAI,OAAQ1B,GAAKxP,IAAI,mBACpC+9P,EAAe7sP,IAAI,WAAY/U,KAAK+/M,UACpC6hD,EAAe7sP,IAAI,aAAc,qBACjC6sP,EAAe7sP,IAAI,WAAY,CAAC,EAAG,EAAG,EAAG,IACzC6sP,EAAe7sP,IAAI,cAAe1B,GAAKxP,IAAI,WAC3C+9P,EAAe7sP,IAAI,aAAc,KACjC6sP,EAAe7sP,IAAI,cAAe,GAClCwsP,GAAgBI,mBAAqB3hQ,KAAKyT,KAAKouP,oBAAoBD,EACrE,CACA,OAAOL,GAAgBI,kBACzB,CACA,qBAAIG,GACF,MAAMC,EAAiB,IAAIvuP,GAAKxT,KAAKyT,MACrCsuP,EAAehtP,IAAI,WAAY/U,KAAK+/M,UACpCgiD,EAAehtP,IAAI,OAAQ1B,GAAKxP,IAAI,SACpCk+P,EAAehtP,IAAI,UAAW1B,GAAKxP,IAAI,iBACvCk+P,EAAehtP,IAAI,cAAe1B,GAAKxP,IAAI,aAC3Ck+P,EAAehtP,IAAI,YAAa/U,KAAKqgN,WACrC0hD,EAAehtP,IAAI,WAAY/U,KAAKsgN,UACpCyhD,EAAehtP,IAAI,iBAAkB/U,KAAK0hQ,mBAC1CK,EAAehtP,IAAI,KAAM,KACzB,MAAMwhD,EAAS,GACTotK,EAAQ,IAAI3jO,KAAKu2D,OAAOS,WAAWpyC,OACzC,IAAIwoC,EAAc,KACd40M,EAAgB,KACpB,IAAK,MAAO5lP,EAAMyD,KAAU8jN,EACrBv2K,EAKDhxC,IAASgxC,EAAc40M,EAAczhQ,OACvCyhQ,EAAczgQ,KAAKse,IAEnB02C,EAAOh1D,KAAK6rD,EAAa40M,GACzB50M,EAAchxC,EACd4lP,EAAgB,CAACniP,KATjButC,EAAchxC,EACd4lP,EAAgB,CAACniP,IAWjButC,GACFmJ,EAAOh1D,KAAK6rD,EAAa40M,GAE3BD,EAAehtP,IAAI,IAAKwhD,GACxB,MAAM0iM,EAAgB,IAAIzlP,GAAKxT,KAAKyT,MAKpC,OAJAwlP,EAAclkP,IAAI,WAAY,YAC9BkkP,EAAclkP,IAAI,WAAY,SAC9BkkP,EAAclkP,IAAI,aAAc,GAChCgtP,EAAehtP,IAAI,gBAAiBkkP,GAC7Bj5P,KAAKyT,KAAKouP,oBAAoBE,EACvC,CACA,eAAIE,GACF,MAAMpG,EAAW,IAAIroP,GAAKxT,KAAKyT,MAO/B,OANAooP,EAAS9mP,IAAI,WAAY/U,KAAK+/M,UAC9B87C,EAAS9mP,IAAI,OAAQ1B,GAAKxP,IAAI,SAC9Bg4P,EAAS9mP,IAAI,UAAW1B,GAAKxP,IAAI,UACjCg4P,EAAS9mP,IAAI,WAAY1B,GAAKxP,IAAI,eAClCg4P,EAAS9mP,IAAI,kBAAmB,CAAC/U,KAAK8hQ,oBACtCjG,EAAS9mP,IAAI,YAAa1B,GAAKxP,IAAI,eAC5B7D,KAAKyT,KAAKouP,oBAAoBhG,EACvC,CACA,aAAI1yO,GACF,MAAMA,EAAY,IAAI3V,GAAKxT,KAAKyT,MAC1B6uM,EAAO,IAAI9uM,GAAKxT,KAAKyT,MAG3B,OAFA6uM,EAAKvtM,IAAI/U,KAAK+/M,SAASr9M,KAAM1C,KAAKiiQ,aAClC94O,EAAUpU,IAAI,OAAQutM,GACfn5L,CACT,CACA,cAAA+4O,GAGE,OAFAliQ,KAAKu2D,OAAS,IAAI5iD,IAClB3T,KAAKwhQ,WAAWl/C,KAAO,UAAUtiN,KAAK2d,aAC/B3d,KAAKwhQ,UACd,CACA,mBAAAW,CAAoB9K,GAClB,MAAM9a,EAAMv8O,KAAKkiQ,iBACjB,IAAK,MAAM10N,KAAQ6pN,EAAKr7O,MAAM,YAC5B,IAAK,MAAMI,KAAQoxB,EAAKxxB,MAAM,IAAK,CACjC,MAAM7S,EAAOiT,EAAKxR,WAAW,GAC7B,GAAI5K,KAAKu2D,OAAOvhD,IAAI7L,GAClB,SAEF,MAAM6uN,EAAUukB,EAAI6lB,YAAYhmP,GAC1ByD,EAAQzV,KAAK0Q,KAAKk9M,EAAQn4M,OAChC7f,KAAKu2D,OAAOxhD,IAAI5L,EAAM0W,GACtB7f,KAAKqgN,UAAYj2M,KAAKC,IAAIlB,EAAMnJ,KAAKqgN,WACrCrgN,KAAKsgN,SAAWl2M,KAAK2D,IAAI5E,EAAMnJ,KAAKsgN,SACtC,CAEF,OAAOtgN,KAAKmpB,SACd,CACA,2BAAOk5O,CAAqB1zP,EAAMiR,EAAUqyO,GAC1C,MAAO7iP,EAAII,EAAIH,EAAII,GAAMd,EACzB,IAAIolL,EAAI1kL,EAAKD,EACTmkC,EAAI9jC,EAAKD,EACToQ,EAAW,KAAQ,KACpBm0K,EAAGxgJ,GAAK,CAACA,EAAGwgJ,IAEf,MAAM2iC,EAAahyN,EAAcutP,EAEjC,MAAO,CACL7pB,OAAQ,CAAC,EAAG70L,EAjsjCU,IA+rjCkB0+M,EAEVv7B,GAC9BhH,KAAM,CAAC,EAAG,EAAG37B,EAAGxgJ,GAChBhpB,OAAqB,IAAb3K,EAAiBD,GAAkBC,EAAU2zB,EAAGmjL,QAActzN,EAE1E,CACA,gBAAAk/P,CAAiBjL,EAAM1oP,EAAMiR,EAAUqyO,EAAUsQ,EAASC,GACxD,MAAMjmB,EAAMv8O,KAAKkiQ,iBACXp1N,EAAQ,GACd,IAAIxK,GAAW,IACf,IAAK,MAAMkL,KAAQ6pN,EAAKr7O,MAAM,YAAa,CACzC8wB,EAAMvrC,KAAKisC,GACX,MAAMi1N,EAAYlmB,EAAI6lB,YAAY50N,GAAM3tB,MACxCyiB,EAAWl4B,KAAK2D,IAAIu0B,EAAUmgO,GAC9B,IAAK,MAAMt5P,KAAQkU,GAAcmwB,GAAO,CACtC,MAAMpxB,EAAOpS,OAAOy5N,cAAct6N,GAClC,IAAI0W,EAAQ7f,KAAKu2D,OAAO1yD,IAAIsF,GAC5B,QAAc/F,IAAVyc,EAAqB,CACvB,MAAMm4M,EAAUukB,EAAI6lB,YAAYhmP,GAChCyD,EAAQzV,KAAK0Q,KAAKk9M,EAAQn4M,OAC1B7f,KAAKu2D,OAAOxhD,IAAI5L,EAAM0W,GACtB7f,KAAKqgN,UAAYj2M,KAAKC,IAAIlB,EAAMnJ,KAAKqgN,WACrCrgN,KAAKsgN,SAAWl2M,KAAK2D,IAAI5E,EAAMnJ,KAAKsgN,SACtC,CACF,CACF,CACAh+K,GAAY2vN,EAAW,IACvB,MAAO7iP,EAAII,EAAIH,EAAII,GAAMd,EACzB,IAAIolL,EAAI1kL,EAAKD,EACTmkC,EAAI9jC,EAAKD,EACToQ,EAAW,KAAQ,KACpBm0K,EAAGxgJ,GAAK,CAACA,EAAGwgJ,IAEf,IAAI2uE,EAAS,EACTpgO,EAAWyxJ,IACb2uE,EAAS3uE,EAAIzxJ,GAEf,IAAIqgO,EAAS,EACb,MAAMjsC,EAAahyN,EAAcutP,EAC3B2Q,EAvujCkB,IAuujCkB3Q,EACpCjU,EAAYtnB,EAAa5pL,EAAMvsC,OACjCy9O,EAAYzqM,IACdovN,EAASpvN,EAAIyqM,GAEf,MACM6kB,EAAc5Q,EADL7nP,KAAKC,IAAIq4P,EAAQC,GAE1Bv3P,EAAS,CAAC,IAAK,OAAOwT,GAAem1K,MAAMn1K,GAAe20B,YAAa,KAAM,aAAa30B,GAAe20B,EAAIqvN,cAAwBvB,GAAYkB,GAAS,KAAS,IAAIviQ,KAAK+/M,SAASr9M,QAAQkc,GAAeikP,UAC5M,UACJ15O,GACEnpB,KAEJ,GAAoB,KADpBwiQ,EAAqC,iBAAhBA,GAA4BA,GAAe,GAAKA,GAAe,EAAIA,EAAc,GAC/E,CACrBp3P,EAAO7J,KAAK,UACZ,MAAMqxP,EAAY,IAAIp/O,GAAKxT,KAAKyT,MAC1BqzN,EAAK,IAAItzN,GAAKxT,KAAKyT,MACzBqzN,EAAG/xN,IAAI,KAAMytP,GACb17B,EAAG/xN,IAAI,KAAMytP,GACb17B,EAAG/xN,IAAI,OAAQ1B,GAAKxP,IAAI,cACxB+uP,EAAU79O,IAAI,KAAM+xN,GACpB39M,EAAUpU,IAAI,YAAa69O,EAC7B,CACA,MAAMkQ,EAASlkP,GAAe83M,GAC9B,IAAK,MAAMlpL,KAAQV,EACjB1hC,EAAO7J,KAAK,MAAMuhQ,SAActjP,GAAuBguB,UAEzDpiC,EAAO7J,KAAK,KAAM,KAClB,MAAMwhQ,EAAa33P,EAAOZ,KAAK,MACzBw4P,EAAuB,IAAIxvP,GAAKxT,KAAKyT,MAM3C,GALAuvP,EAAqBjuP,IAAI,UAAW1B,GAAKxP,IAAI,SAC7Cm/P,EAAqBjuP,IAAI,OAAQ1B,GAAKxP,IAAI,YAC1Cm/P,EAAqBjuP,IAAI,OAAQ,CAAC,EAAG,EAAGg/K,EAAGxgJ,IAC3CyvN,EAAqBjuP,IAAI,SAAUguP,EAAWxiQ,QAC9CyiQ,EAAqBjuP,IAAI,YAAaoU,GAClCvJ,EAAU,CACZ,MAAM2K,EAAS5K,GAAkBC,EAAUm0K,EAAGxgJ,GAC9CyvN,EAAqBjuP,IAAI,SAAUwV,EACrC,CACA,MAAM04O,EAAK,IAAI9iP,GAAa4iP,GAE5B,OADAE,EAAGxtP,KAAOutP,EACHC,CACT,EAMF,MAAMC,GACJ,WAAAj6P,CAAYk6P,EAAM1vP,EAAMlP,GACtBvE,KAAKmjQ,KAAOA,EACZnjQ,KAAKyT,KAAOA,EACZzT,KAAKojQ,MAAQ7+P,CACf,CACA,MAAA8+P,GACE,MAAMpnP,EAAM,IAAItI,IAChB,IAAK3T,KAAKmjQ,KACR,OAAOlnP,EAET,MAAMxI,EAAOzT,KAAKyT,KACZs2O,EAAY,IAAI5zO,GACtB4zO,EAAUxzO,IAAIvW,KAAKmjQ,MACnB,MAAMhjQ,EAAQ,CAACH,KAAKmjQ,MACpB,KAAOhjQ,EAAMI,OAAS,GAAG,CACvB,MAAMuD,EAAM2P,EAAK+V,WAAWrpB,EAAMyzB,SAClC,KAAM9vB,aAAe0P,IACnB,SAEF,GAAI1P,EAAIkR,IAAI,QAAS,CACnB,MAAMsuP,EAAOx/P,EAAID,IAAI,QACrB,IAAKzC,MAAMsT,QAAQ4uP,GACjB,SAEF,IAAK,MAAMC,KAAOD,EAAM,CACtB,GAAIvZ,EAAU/0O,IAAIuuP,GAChB,MAAM,IAAI55P,EAAY,uBAAuB3J,KAAKojQ,gBAEpDjjQ,EAAMoB,KAAKgiQ,GACXxZ,EAAUxzO,IAAIgtP,EAChB,CACA,QACF,CACA,MAAMvsM,EAAUlzD,EAAID,IAAI7D,KAAKojQ,OAC7B,GAAKhiQ,MAAMsT,QAAQsiD,GAGnB,IAAK,IAAI11D,EAAI,EAAG0P,EAAKgmD,EAAQz2D,OAAQe,EAAI0P,EAAI1P,GAAK,EAChD2a,EAAIlH,IAAItB,EAAK+V,WAAWwtC,EAAQ11D,IAAKmS,EAAK+V,WAAWwtC,EAAQ11D,EAAI,IAErE,CACA,OAAO2a,CACT,CACA,MAAAtH,CAAOnR,GACL,IAAKxD,KAAKmjQ,KACR,OAAO,KAET,MAAM1vP,EAAOzT,KAAKyT,KAClB,IAAI+vP,EAAgB/vP,EAAK+V,WAAWxpB,KAAKmjQ,MACrCM,EAAY,EAEhB,KAAOD,EAAcxuP,IAAI,SAAS,CAChC,KAAMyuP,EAFW,GAIf,OADAj8P,EAAK,mCAAmCxH,KAAKojQ,gBACtC,KAET,MAAME,EAAOE,EAAc3/P,IAAI,QAC/B,IAAKzC,MAAMsT,QAAQ4uP,GACjB,OAAO,KAET,IAAI1rN,EAAI,EACNhrC,EAAI02P,EAAK/iQ,OAAS,EACpB,KAAOq3C,GAAKhrC,GAAG,CACb,MAAMW,EAAIqqC,EAAIhrC,GAAK,EACb22P,EAAM9vP,EAAK+V,WAAW85O,EAAK/1P,IAC3Bm2P,EAASH,EAAI1/P,IAAI,UACvB,GAAIL,EAAMiQ,EAAK+V,WAAWk6O,EAAO,IAC/B92P,EAAIW,EAAI,MACH,MAAI/J,EAAMiQ,EAAK+V,WAAWk6O,EAAO,KAEjC,CACLF,EAAgBD,EAChB,KACF,CAJE3rN,EAAIrqC,EAAI,CAIV,CACF,CACA,GAAIqqC,EAAIhrC,EACN,OAAO,IAEX,CACA,MAAMoqD,EAAUwsM,EAAc3/P,IAAI7D,KAAKojQ,OACvC,GAAIhiQ,MAAMsT,QAAQsiD,GAAU,CAC1B,IAAIpf,EAAI,EACNhrC,EAAIoqD,EAAQz2D,OAAS,EACvB,KAAOq3C,GAAKhrC,GAAG,CACb,MAAMolB,EAAM4lB,EAAIhrC,GAAK,EACnBW,EAAIykB,GAAa,EAANA,GACP2xO,EAAalwP,EAAK+V,WAAWwtC,EAAQzpD,IAC3C,GAAI/J,EAAMmgQ,EACR/2P,EAAIW,EAAI,MACH,MAAI/J,EAAMmgQ,GAGf,OAAO3sM,EAAQzpD,EAAI,GAFnBqqC,EAAIrqC,EAAI,CAGV,CACF,CACF,CACA,OAAO,IACT,CACA,GAAA1J,CAAIL,GACF,OAAOxD,KAAKyT,KAAK+V,WAAWxpB,KAAK2U,OAAOnR,GAC1C,EAEF,MAAMogQ,WAAiBV,GACrB,WAAAj6P,CAAYk6P,EAAM1vP,GAChBrK,MAAM+5P,EAAM1vP,EAAM,QACpB,EAEF,MAAMowP,WAAmBX,GACvB,WAAAj6P,CAAYk6P,EAAM1vP,GAChBrK,MAAM+5P,EAAM1vP,EAAM,OACpB,EAQF,SAASqwP,KAj3RP/7B,GAASrkO,OAAOwP,OAAO,MA9ywBvBD,GAAWvP,OAAOwP,OAAO,MACzBC,GAAYzP,OAAOwP,OAAO,MAC1BE,GAAW1P,OAAOwP,OAAO,MAg1ezBykM,GAAc/hM,QAi1jBdkwC,GAASC,SACX,CAMA,SAASg+M,GAAiBtuP,GACxB,OAAMA,aAAgBjC,GAGlBiC,EAAKT,IAAI,MACJS,EAAK5R,IAAI,MACP4R,EAAKT,IAAI,KACXS,EAAK5R,IAAI,KACP4R,EAAKT,IAAI,QACXS,EAAK5R,IAAI,QACP4R,EAAKT,IAAI,OACXS,EAAK5R,IAAI,OACP4R,EAAKT,IAAI,OACXS,EAAK5R,IAAI,OAEX,KAbE,IAcX,CAIA,MAAMmgQ,GACJ,IAAoB,EACpB,WAAA/6P,CAAYk6P,EAAM1vP,EAAMwwP,GAAc,GAC9Bd,aAAgB3vP,KAGtBxT,KAAKyT,KAAOA,EACZzT,KAAKmjQ,KAAOA,EACRA,EAAKnuP,IAAI,QACXhV,KAAKkkQ,GAAKf,EAAKt/P,IAAI,OAEjBs/P,EAAKnuP,IAAI,OACXxN,EAAK,iDAEFy8P,IACCd,EAAKnuP,IAAI,MACXhV,MAAK,GAAoB,EAEzBwH,EAAK,uDAGX,CACA,YAAI23C,GACF,IAAIA,EAAW,GACf,MAAMnlC,EAAO+pP,GAAiB/jQ,KAAKmjQ,MAInC,OAHInpP,GAAwB,iBAATA,IACjBmlC,EAAW5uC,EAAkByJ,GAAMlJ,WAAW,OAAQ,MAAMA,WAAW,MAAO,KAAKA,WAAW,KAAM,MAE/FpI,EAAO1I,KAAM,WAAYm/C,GAAY,UAC9C,CACA,WAAIw8K,GACF,IAAK37N,MAAK,EACR,OAAO,KAETA,KAAKmkQ,cAAgBJ,GAAiB/jQ,KAAKmjQ,MAAMt/P,IAAI,OACrD,IAAI83N,EAAU,KACd,GAAI37N,KAAKmkQ,YAAa,CACpB,MAAMC,EAAUpkQ,KAAKyT,KAAK+V,WAAWxpB,KAAKmkQ,aACtCC,aAAmB9sP,GACrBqkN,EAAUyoC,EAAQ1sP,WAElBlQ,EAAK,qEAET,MACEA,EAAK,yDAEP,OAAOm0N,CACT,CACA,eAAI0oC,GACF,IAAIA,EAAc,GAClB,MAAMC,EAAOtkQ,KAAKmjQ,MAAMt/P,IAAI,QAI5B,OAHIygQ,GAAwB,iBAATA,IACjBD,EAAc9zP,EAAkB+zP,IAE3B57P,EAAO1I,KAAM,cAAeqkQ,EACrC,CACA,gBAAIE,GACF,MAAO,CACLC,YAAaxkQ,KAAKm/C,SAClBA,UA9Daz0C,EA8DO1K,KAAKm/C,SA7DtBz0C,EAAI2R,UAAU3R,EAAIszC,YAAY,KAAO,IA8DxC29K,QAAS37N,KAAK27N,QACd0oC,YAAarkQ,KAAKqkQ,aAhExB,IAAmB35P,CAkEjB,EAkBF,SAASwmN,GAAaz9L,EAAGmb,GACvB,MAAMxzB,EAAKqY,EAAEmb,GACb,MAAc,MAAPxzB,GAAqB,OAAPA,GAAsB,OAAPA,GAAsB,OAAPA,CACrD,CASA,MAAMqpP,GACJ,gBAAAC,CAAiBjxO,GACf,OAAOA,EAAE3iB,WAAW,cAAc,CAAC2gP,EAAKj0O,KACtC,GAA+B,OAA3BA,EAAOnB,UAAU,EAAG,GACtB,OAAOrS,OAAOy5N,cAAcvtN,SAASsH,EAAOnB,UAAU,GAAI,KACrD,GAA+B,MAA3BmB,EAAOnB,UAAU,EAAG,GAC7B,OAAOrS,OAAOy5N,cAAcvtN,SAASsH,EAAOnB,UAAU,GAAI,KAE5D,OAAQmB,GACN,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,MACH,MAAO,IACT,IAAK,OACH,MAAO,IACT,IAAK,OACH,MAAO,IAEX,OAAOxd,KAAK2kQ,gBAAgBnnP,EAAO,GAEvC,CACA,aAAAonP,CAAcnxO,EAAGxa,GACf,MAAM4rP,EAAa,GACnB,IAAI1sP,EAAMc,EACV,SAAS6rP,IACP,KAAO3sP,EAAMsb,EAAElzB,QAAU2wN,GAAaz9L,EAAGtb,MACrCA,CAEN,CACA,KAAOA,EAAMsb,EAAElzB,SAAW2wN,GAAaz9L,EAAGtb,IAAmB,MAAXsb,EAAEtb,IAA2B,MAAXsb,EAAEtb,MAClEA,EAEJ,MAAMzV,EAAO+wB,EAAEpX,UAAUpD,EAAOd,GAEhC,IADA2sP,IACO3sP,EAAMsb,EAAElzB,QAAqB,MAAXkzB,EAAEtb,IAA2B,MAAXsb,EAAEtb,IAA2B,MAAXsb,EAAEtb,IAAc,CAC3E2sP,IACA,IAAIC,EAAW,GACbC,EAAY,GACd,KAAO7sP,EAAMsb,EAAElzB,SAAW2wN,GAAaz9L,EAAGtb,IAAmB,MAAXsb,EAAEtb,IAClD4sP,GAAYtxO,EAAEtb,KACZA,EAGJ,GADA2sP,IACe,MAAXrxO,EAAEtb,GACJ,OAAO,OAEPA,EACF2sP,IACA,MAAMG,EAAcxxO,EAAEtb,GACtB,GAAoB,MAAhB8sP,GAAuC,MAAhBA,EACzB,OAAO,KAET,MAAMC,EAAezxO,EAAE68B,QAAQ20M,IAAe9sP,GAC9C,GAAI+sP,EAAe,EACjB,OAAO,KAETF,EAAYvxO,EAAEpX,UAAUlE,EAAK+sP,GAC7BL,EAAWtjQ,KAAK,CACdmB,KAAMqiQ,EACNp8P,MAAO3I,KAAK0kQ,iBAAiBM,KAE/B7sP,EAAM+sP,EAAe,EACrBJ,GACF,CACA,MAAO,CACLpiQ,OACAmiQ,aACAM,OAAQhtP,EAAMc,EAElB,CACA,2BAAAmsP,CAA4B3xO,EAAGxa,GAC7B,IAAId,EAAMc,EAMV,KAAOd,EAAMsb,EAAElzB,SAAW2wN,GAAaz9L,EAAGtb,IAAmB,MAAXsb,EAAEtb,IAA2B,MAAXsb,EAAEtb,IAA2B,MAAXsb,EAAEtb,MACpFA,EAEJ,MAAMzV,EAAO+wB,EAAEpX,UAAUpD,EAAOd,IARhC,WACE,KAAOA,EAAMsb,EAAElzB,QAAU2wN,GAAaz9L,EAAGtb,MACrCA,CAEN,CAKA2sP,GACA,MAAMO,EAAYltP,EAClB,KAAOA,EAAMsb,EAAElzB,SAAsB,MAAXkzB,EAAEtb,IAA+B,MAAfsb,EAAEtb,EAAM,OAChDA,EAGJ,MAAO,CACLzV,OACAiG,MAHY8qB,EAAEpX,UAAUgpP,EAAWltP,GAInCgtP,OAAQhtP,EAAMc,EAElB,CACA,QAAAqsP,CAAS7xO,GACP,IAAInyB,EAAI,EACR,KAAOA,EAAImyB,EAAElzB,QAAQ,CAEnB,IAAI6nB,EAAI9mB,EACR,GAAW,MAFAmyB,EAAEnyB,GAEG,CAGd,IAAIyqB,EACJ,SAHE3D,EACUqL,EAAErL,IAGZ,IAAK,IAGH,KAFEA,EACF2D,EAAI0H,EAAE68B,QAAQ,IAAKloC,GACf2D,EAAI,EAEN,YADA/rB,KAAKolB,SA5HI,GA+HXplB,KAAKulQ,aAAa9xO,EAAEpX,UAAU+L,EAAG2D,IACjC3D,EAAI2D,EAAI,EACR,MACF,IAAK,MACD3D,EACF,MAAMkyI,EAAKt6J,KAAKolQ,4BAA4B3xO,EAAGrL,GAC/C,GAAsD,OAAlDqL,EAAEpX,UAAU+L,EAAIkyI,EAAG6qG,OAAQ/8O,EAAIkyI,EAAG6qG,OAAS,GAE7C,YADAnlQ,KAAKolB,SA5IW,GA+IlBplB,KAAKwlQ,KAAKlrG,EAAG53J,KAAM43J,EAAG3xJ,OACtByf,GAAKkyI,EAAG6qG,OAAS,EACjB,MACF,IAAK,IACH,GAAkC,OAA9B1xO,EAAEpX,UAAU+L,EAAI,EAAGA,EAAI,GAAa,CAEtC,GADA2D,EAAI0H,EAAE68B,QAAQ,SAAOloC,EAAI,GACrB2D,EAAI,EAEN,YADA/rB,KAAKolB,SApJE,GAuJTplB,KAAKylQ,UAAUhyO,EAAEpX,UAAU+L,EAAI,EAAG2D,IAClC3D,EAAI2D,EAAI,CACV,MAAO,GAAkC,YAA9B0H,EAAEpX,UAAU+L,EAAI,EAAGA,EAAI,GAAkB,CAElD,GADA2D,EAAI0H,EAAE68B,QAAQ,MAAOloC,EAAI,GACrB2D,EAAI,EAEN,YADA/rB,KAAKolB,SA/JD,GAkKNplB,KAAK0lQ,QAAQjyO,EAAEpX,UAAU+L,EAAI,EAAG2D,IAChC3D,EAAI2D,EAAI,CACV,KAAO,IAAkC,YAA9B0H,EAAEpX,UAAU+L,EAAI,EAAGA,EAAI,GAqBhC,YADApoB,KAAKolB,SApLC,GAgK4C,CAClD,MAAMugP,EAAKlyO,EAAE68B,QAAQ,IAAKloC,EAAI,GAC9B,IAAIw9O,GAAiB,EAErB,GADA75O,EAAI0H,EAAE68B,QAAQ,IAAKloC,EAAI,GACnB2D,EAAI,EAEN,YADA/rB,KAAKolB,SAvKa,GA0KpB,GAAIugP,EAAK,GAAK55O,EAAI45O,EAAI,CAEpB,GADA55O,EAAI0H,EAAE68B,QAAQ,KAAMloC,EAAI,GACpB2D,EAAI,EAEN,YADA/rB,KAAKolB,SA7KW,GAgLlBwgP,GAAiB,CACnB,CACA,MAAMC,EAAiBpyO,EAAEpX,UAAU+L,EAAI,EAAG2D,GAAK65O,EAAiB,EAAI,IACpE5lQ,KAAK8lQ,UAAUD,GACfz9O,EAAI2D,GAAK65O,EAAiB,EAAI,EAChC,CAGA,CACA,MACF,QACE,MAAMjqC,EAAU37N,KAAK4kQ,cAAcnxO,EAAGrL,GACtC,GAAgB,OAAZuzM,EAEF,YADA37N,KAAKolB,SA3LC,GA8LR,IAAI2gP,GAAW,EACf,GAAgE,OAA5DtyO,EAAEpX,UAAU+L,EAAIuzM,EAAQwpC,OAAQ/8O,EAAIuzM,EAAQwpC,OAAS,GACvDY,GAAW,OACN,GAAgE,MAA5DtyO,EAAEpX,UAAU+L,EAAIuzM,EAAQwpC,OAAQ/8O,EAAIuzM,EAAQwpC,OAAS,GAE9D,YADAnlQ,KAAKolB,SA/LI,GAkMXplB,KAAKgmQ,eAAerqC,EAAQj5N,KAAMi5N,EAAQkpC,WAAYkB,GACtD39O,GAAKuzM,EAAQwpC,QAAUY,EAAW,EAAI,GAG5C,KAAO,CACL,KAAO39O,EAAIqL,EAAElzB,QAAmB,MAATkzB,EAAErL,IACvBA,IAEF,MAAMivO,EAAO5jO,EAAEpX,UAAU/a,EAAG8mB,GAC5BpoB,KAAKimQ,OAAOjmQ,KAAK0kQ,iBAAiBrN,GACpC,CACA/1P,EAAI8mB,CACN,CACF,CACA,eAAAu8O,CAAgBjiQ,GACd,MAAO,IAAIA,IACb,CACA,IAAA8iQ,CAAK9iQ,EAAMiG,GAAQ,CACnB,SAAA88P,CAAUpO,GAAO,CACjB,OAAAqO,CAAQrO,GAAO,CACf,SAAAyO,CAAUD,GAAiB,CAC3B,MAAAI,CAAO5O,GAAO,CACd,cAAA2O,CAAetjQ,EAAMmiQ,EAAYttP,GAAU,CAC3C,YAAAguP,CAAa7iQ,GAAO,CACpB,OAAA0iB,CAAQjc,GAAO,EAEjB,MAAM+8P,GACJ,WAAAj9P,CAAYk9P,EAAUC,GACpBpmQ,KAAKmmQ,SAAWA,EAChBnmQ,KAAKomQ,UAAYA,EACjB1iQ,OAAOC,eAAe3D,KAAM,aAAc,CACxC2I,MAAO,KACPG,UAAU,GAEd,CACA,cAAIu9P,GACF,OAAOrmQ,KAAKsmQ,aAAa,EAC3B,CACA,eAAIC,GACF,MAAMD,EAAatmQ,KAAKwmQ,WAAWF,WACnC,IAAKA,EACH,OAEF,MAAM13N,EAAQ03N,EAAWh2M,QAAQtwD,MACjC,OAAe,IAAX4uC,EAGG03N,EAAW13N,EAAQ,QAH1B,CAIF,CACA,eAAI2kN,GACF,OAAKvzP,KAAKsmQ,WAGHtmQ,KAAKsmQ,WAAWrqP,KAAI,SAAUwqP,GACnC,OAAOA,EAAMlT,WACf,IAAG/oP,KAAK,IAJCxK,KAAKomQ,WAAa,EAK7B,CACA,YAAI34N,GACF,OAAOztC,KAAKsmQ,YAAc,EAC5B,CACA,aAAAI,GACE,OAAO1mQ,KAAKsmQ,YAAY/lQ,OAAS,CACnC,CACA,UAAAomQ,CAAWC,EAAOzuP,GAChB,GAAIA,GAAOyuP,EAAMrmQ,OACf,OAAOP,KAET,MAAMkc,EAAY0qP,EAAMzuP,GACxB,GAAI+D,EAAUxZ,KAAKuF,WAAW,MAAQkQ,EAAMyuP,EAAMrmQ,OAAS,EACzD,OAAOP,KAAK2mQ,WAAWC,EAAOzuP,EAAM,GAEtC,MAAMiZ,EAAQ,GACd,IAAIwc,EAAO5tC,KACX,OAAa,CACX,GAAIkc,EAAUxZ,OAASkrC,EAAKu4N,SAAU,CACpC,GAAsB,IAAlBjqP,EAAU/D,IAKP,IAAqB,IAAjBiZ,EAAM7wB,OACf,OAAO,KACF,CACL,MAAO6V,GAAUgb,EAAMkgB,MACvB,IAAIu1N,EAAa,EACjB,IAAK,MAAMJ,KAASrwP,EAAOkwP,WACzB,GAAIpqP,EAAUxZ,OAAS+jQ,EAAMN,SAAU,CACrC,GAAIU,IAAe3qP,EAAU/D,IAC3B,OAAOsuP,EAAME,WAAWC,EAAOzuP,EAAM,GAEvC0uP,GACF,CAEF,OAAOj5N,EAAK+4N,WAAWC,EAAOzuP,EAAM,EACtC,EAnByB,CACvB,MAAMqsN,EAAM52L,EAAK+4N,WAAWC,EAAOzuP,EAAM,GACzC,GAAY,OAARqsN,EACF,OAAOA,CAEX,CAeF,CACA,GAAI52L,EAAK04N,YAAY/lQ,OAAS,EAC5B6wB,EAAM7vB,KAAK,CAACqsC,EAAM,IAClBA,EAAOA,EAAK04N,WAAW,OAClB,IAAqB,IAAjBl1O,EAAM7wB,OACf,OAAO,KAEP,KAAwB,IAAjB6wB,EAAM7wB,QAAc,CACzB,MAAO6V,EAAQw/B,GAAcxkB,EAAMkgB,MAC7ByE,EAASH,EAAa,EAC5B,GAAIG,EAAS3/B,EAAOkwP,WAAW/lQ,OAAQ,CACrC6wB,EAAM7vB,KAAK,CAAC6U,EAAQ2/B,IACpBnI,EAAOx3B,EAAOkwP,WAAWvwN,GACzB,KACF,CACF,CACA,GAAqB,IAAjB3kB,EAAM7wB,OACR,OAAO,IAEX,CACF,CACF,CACA,IAAAumQ,CAAK17P,GACH,GAAsB,UAAlBpL,KAAKmmQ,SAAT,CAKA,GADA/6P,EAAO7J,KAAK,IAAIvB,KAAKmmQ,YACjBnmQ,KAAK6kQ,WACP,IAAK,MAAMkC,KAAa/mQ,KAAK6kQ,WAC3Bz5P,EAAO7J,KAAK,IAAIwlQ,EAAUrkQ,SAAS6a,GAAkBwpP,EAAUp+P,WAGnE,GAAI3I,KAAK0mQ,gBAAiB,CACxBt7P,EAAO7J,KAAK,KACZ,IAAK,MAAMklQ,KAASzmQ,KAAKsmQ,WACvBG,EAAMK,KAAK17P,GAEbA,EAAO7J,KAAK,KAAKvB,KAAKmmQ,YACxB,MAAWnmQ,KAAKomQ,UACdh7P,EAAO7J,KAAK,IAAIgc,GAAkBvd,KAAKomQ,eAAepmQ,KAAKmmQ,aAE3D/6P,EAAO7J,KAAK,KAhBd,MAFE6J,EAAO7J,KAAKgc,GAAkBvd,KAAKomQ,WAoBvC,EAEF,MAAMY,WAAwBvC,GAC5B,WAAAx7P,EAAY,cACVg+P,GAAgB,EAAK,cACrBC,GAAgB,IAEhB99P,QACApJ,KAAKmnQ,iBAAmB,KACxBnnQ,KAAKonQ,OAAS,KACdpnQ,KAAKqnQ,WAhWE,EAiWPrnQ,KAAKsnQ,eAAiBL,EACtBjnQ,KAAKunQ,eAAiBL,CACxB,CACA,eAAAM,CAAgBztP,GAKd,GAJA/Z,KAAKmnQ,iBAAmB,GACxBnnQ,KAAKonQ,OAAS,GACdpnQ,KAAKqnQ,WAvWE,EAwWPrnQ,KAAKslQ,SAASvrP,GAxWP,IAyWH/Z,KAAKqnQ,WACP,OAEF,MAAOI,GAAmBznQ,KAAKmnQ,iBAC/B,OAAKM,EAGE,CACLA,wBAJF,CAMF,CACA,MAAAxB,CAAO5O,GACL,GArWJ,SAA4B5jO,GAC1B,IAAK,IAAInyB,EAAI,EAAG0P,EAAKyiB,EAAElzB,OAAQe,EAAI0P,EAAI1P,IACrC,IAAK4vN,GAAaz9L,EAAGnyB,GACnB,OAAO,EAGX,OAAO,CACT,CA8VQomQ,CAAmBrQ,GACrB,OAEF,MAAMzpN,EAAO,IAAIs4N,GAAc,QAAS7O,GACxCr3P,KAAKmnQ,iBAAiB5lQ,KAAKqsC,EAC7B,CACA,OAAA83N,CAAQrO,GACN,MAAMzpN,EAAO,IAAIs4N,GAAc,QAAS7O,GACxCr3P,KAAKmnQ,iBAAiB5lQ,KAAKqsC,EAC7B,CACA,cAAAo4N,CAAetjQ,EAAMmiQ,EAAYttP,GAC3BvX,KAAKunQ,iBACP7kQ,EAAOA,EAAKkY,eAEd,MAAMgzB,EAAO,IAAIs4N,GAAcxjQ,GAC/BkrC,EAAK04N,WAAa,GACdtmQ,KAAKsnQ,iBACP15N,EAAKi3N,WAAaA,GAEpB7kQ,KAAKmnQ,iBAAiB5lQ,KAAKqsC,GACvBr2B,IAGJvX,KAAKonQ,OAAO7lQ,KAAKvB,KAAKmnQ,kBACtBnnQ,KAAKmnQ,iBAAmBv5N,EAAK04N,WAC/B,CACA,YAAAf,CAAa7iQ,GACX1C,KAAKmnQ,iBAAmBnnQ,KAAKonQ,OAAO91N,OAAS,GAC7C,MAAMq2N,EAAc3nQ,KAAKmnQ,iBAAiB/pO,IAAI,GAC9C,IAAKuqO,EACH,OAAO,KAET,IAAK,MAAMC,KAAaD,EAAYrB,WAClCsB,EAAUpB,WAAamB,EAEzB,OAAOA,CACT,CACA,OAAAviP,CAAQjc,GACNnJ,KAAKqnQ,WAAal+P,CACpB,EAKF,MAAM0+P,GACJ,WAAA5+P,CAAY8Q,GACVA,EAAO/Z,KAAK8nQ,QAAQ/tP,GACpB,MAGMguP,EAHS,IAAIf,GAAgB,CACjCE,eAAe,IAEUM,gBAAgBztP,GAC3C/Z,KAAKgoQ,aAAe,IAAIr0P,IACxB3T,KAAKioQ,MAAQluP,EACTguP,GACF/nQ,KAAKqpB,OAAO0+O,EAEhB,CACA,OAAAD,CAAQ/tP,GACN,OAAOA,EAAKgkC,QAAQ,SAAU,IAAIjtC,WAAW,uBAAuB,SAAU2gP,EAAKx4N,GACjF,MAAMnvB,EAAQmvB,EAAMnoB,WAAW,4BAA4B,SAAU3H,EAAMy1P,EAAIsJ,EAAIC,GACjF,OAAOn+P,OAAOC,aAAkB,GAAL20P,EAAe,EAALsJ,EAAc,EAALC,EAChD,IAAGr3P,WAAW,4BAA4B,SAAUpG,EAAKhI,GACvD,OAAQA,GACN,IAAK,MACH,MAAO,IACT,IAAK,OACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,OACH,MAAO,IAEX,MAAM,IAAIjD,MAAM,YAAYiD,mBAC9B,IACM0lQ,EAAU,CAAC,KACjB,IAAK,IAAI9mQ,EAAI,EAAG0P,EAAKlH,EAAMvJ,OAAQe,EAAI0P,EAAI1P,GAAK,EAAG,CACjD,MAAM6H,EAA6B,IAAtBW,EAAMc,WAAWtJ,GAAWwI,EAAMc,WAAWtJ,EAAI,GAC1D6H,GAAQ,IAAMA,EAAO,KAAgB,KAATA,GAAwB,KAATA,GAAwB,KAATA,EAC5Di/P,EAAQ7mQ,KAAKyI,OAAOC,aAAad,IAEjCi/P,EAAQ7mQ,KAAK,OAAS,MAAU4H,GAAMqD,SAAS,IAAI6P,UAAU,GAAK,IAEtE,CACA,OAAO+rP,EAAQ59P,KAAK,GACtB,GACF,CACA,YAAA69P,CAAa7rP,GACX,MAAM9Z,EAAO8Z,EAAM2pP,SACnB,MAAa,YAATzjQ,GAA+B,YAATA,GAA+B,YAATA,EACvC,KAEF8Z,EAAM8pP,WAAW9yO,QAAOoa,GAA0B,WAAlBA,EAAKu4N,UAC9C,CACA,WAAAmC,CAAY9rP,GACV,IAAKA,EAAMkqP,gBACT,OAEF,MAAO6B,GAAW/rP,EAAM8pP,WAClBr0O,EAAWjyB,KAAKqoQ,aAAaE,IAAY,GAC/CvoQ,KAAKgoQ,aAAajzP,IAAIyH,EAAM2pP,SAAUl0O,EAAShW,KAAI2xB,GAAQA,EAAK2lN,YAAYiV,SAC9E,CACA,MAAAn/O,CAAO0+O,GACL,IAAIU,EAAMV,EAAYN,gBACtB,GAAqB,YAAjBgB,EAAItC,SAEN,IADAsC,EAAMA,EAAIpC,WACHoC,GAAwB,YAAjBA,EAAItC,UAChBsC,EAAMA,EAAIlC,YAGd,GAAKkC,GAAwB,YAAjBA,EAAItC,UAA2BsC,EAAI/B,gBAG/C,IAAK,MAAMpC,KAAQmE,EAAInC,WACrB,GAAsB,oBAAlBhC,EAAK6B,SAGT,IAAK,MAAM3pP,KAAS8nP,EAAKgC,WAAY,CACnC,MAAM5jQ,EAAO8Z,EAAM2pP,SACnB,OAAQzjQ,GACN,IAAK,QACH,SACF,IAAK,aACL,IAAK,aACH1C,KAAKsoQ,YAAY9rP,GACjB,SAEJxc,KAAKgoQ,aAAajzP,IAAIrS,EAAM8Z,EAAM+2O,YAAYiV,OAChD,CAEJ,CACA,gBAAIjE,GACF,MAAO,CACLmE,WAAY1oQ,KAAKgoQ,aACjBW,QAAS3oQ,KAAKioQ,MAElB,EAgBF,MAAMW,GACJ,WAAA3/P,CAAY4/P,EAAUC,GACpB9oQ,KAAKyV,KAAOozP,EACZ7oQ,KAAKgW,IAAM8yP,aAAmBz0P,GAAMy0P,EAAU,KAC9C9oQ,KAAK+oQ,QAAU,IAAIp1P,IACnB3T,KAAKgpQ,gBAAkB,IACzB,CACA,IAAAC,GACEjpQ,KAAKkpQ,aACP,CACA,GAAaC,EAASttO,EAAIt3B,GACxB,KAAM4kQ,aAAmB90P,KAAQwnB,EAAK,EACpC,OAEF77B,KAAKgpQ,kBAAoB,IAAIryP,GAC7B,IAAIkrM,EAAM7hN,KAAKgpQ,gBAAgBnlQ,IAAIslQ,GAC9BtnD,IACHA,EAAM,GACN7hN,KAAKgpQ,gBAAgBzyP,IAAI4yP,EAAStnD,IAEpCA,EAAItgN,KAAK,CAACs6B,EAAIt3B,GAChB,CACA,qBAAA6kQ,CAAsBD,EAASttO,GAC7B77B,MAAK,EAAampQ,EAASttO,EA1BjB,EA2BZ,CACA,WAAAqtO,GACE,MAAMG,EAAcrpQ,KAAKyV,KAAK5R,IAAI,WAClC,GAAMwlQ,aAAuB71P,GAG7B,IAAK,MAAOhQ,EAAKmF,KAAU0gQ,EACrB1gQ,aAAiB0K,IACnBrT,KAAK+oQ,QAAQh0P,IAAIvR,EAAKmF,EAAMjG,KAGlC,CACA,mCAAa4mQ,EAAuB,WAClCC,EAAU,WACVC,EAAU,qBACVtqP,IAEA,KAAMqqP,aAAsBl1P,IAE1B,OADA7M,EAAK,uDACE,EAET,IAAIiiQ,EAAU,EACVC,GAAqB,EACzB,IAAK,MAAOtqP,EAAWg5O,KAAal5O,EAAsB,CACxD,MACElJ,IAAKmzP,SACGK,EAAWG,QAAQvqP,GAC7B,KAAM+pP,aAAmB90P,IAAM,CAC7B7M,EAAK,qCAAqC4X,iBAC1CsqP,GAAqB,EACrB,KACF,CACA,IAAK,MAAM/sP,KAAWy7O,EAChBz7O,EAAQitP,mBAAmBrlQ,OAC7BoY,EAAQktP,aAAeJ,IACvBC,GAAqB,EAG3B,CACA,GAAIA,EAAoB,CACtB,IAAK,MAAMtR,KAAYl5O,EAAqBpK,SAC1C,IAAK,MAAM6H,KAAWy7O,SACbz7O,EAAQktP,aAGnB,OAAO,CACT,CACA,OAAO,CACT,CACA,gCAAaC,EAAoB,qBAC/B5qP,EAAoB,KACpBzL,EAAI,WACJ81P,EAAU,WACVC,EAAU,QACVO,IAEA,MAAM5G,EAAOqG,EAAWQ,QAAQC,YAC1Bn1B,EAAQ,IAAIn+N,GAClBm+N,EAAMv+N,IAAIgzP,EAAYpG,GACtB,MAAM+G,EAAoBz2P,EAAK02P,qBAC/BhH,EAAKpuP,IAAI,iBAAkBm1P,GAC3B,MAAME,EAAiB,IAAI52P,GAAKC,GAChC22P,EAAer1P,IAAI,OAAQ1B,GAAKxP,IAAI,mBACpC,MAAMwmQ,EAAgB52P,EAAK02P,qBAC3BC,EAAer1P,IAAI,aAAcs1P,GACjC,MAAM/G,EAAO,GACb8G,EAAer1P,IAAI,IAAKuuP,GACxBxuB,EAAMv+N,IAAI2zP,EAAmBE,GAC7B,MAAME,EAAa,IAAI92P,GAAKC,GACtB82P,EAAO,GACbD,EAAWv1P,IAAI,OAAQw1P,GACvB,MAAMd,QAAgBzpQ,MAAK,EAAW,CACpCkf,uBACAgrP,oBACAE,eAAgB,KAChB9G,OACAiH,OACA92P,OACA+1P,aACAO,UACAj1B,UAEFs1B,EAAer1P,IAAI,oBAAqB00P,GACxC30B,EAAMv+N,IAAI8zP,EAAeC,GACzB,IAAK,MAAOt0P,EAAKlS,KAAQgxO,EAAMh+N,QAC7BizP,EAAQxzP,IAAIP,EAAK,CACf+D,KAAMjW,GAGZ,CACA,yBAAM0mQ,EAAoB,WACxBhB,EAAU,KACV/1P,EAAI,qBACJyL,IAEA,IAAKlf,KAAKgW,IAER,OADAxO,EAAK,sDACE,EAET,IAAIiiQ,EAAUzpQ,KAAKyV,KAAK5R,IAAI,qBAC5B,IAAK2W,OAAOC,UAAUgvP,IAAYA,EAAU,EAE1C,OADAjiQ,EAAK,qDACE,EAET,MAAM8iQ,EAAatqQ,KAAKyV,KAAK5R,IAAI,cACjC,KAAMymQ,aAAsB92P,IAE1B,OADAhM,EAAK,4DACE,EAET,MAAM+iQ,EAAOD,EAAWzmQ,IAAI,QAC5B,IAAKzC,MAAMsT,QAAQ61P,GAEjB,OADA/iQ,EAAK,wDACE,EAET,MAAMijQ,EAAa,IAAI5G,GAAWyG,EAAY72P,GAC9C,IAAK,MAAM2L,KAAaF,EAAqBnU,OAAQ,CACnD,MAAM,SACJ2/P,SACQlB,EAAWG,QAAQvqP,GAC7B,IAAKsrP,EAAS11P,IAAI,iBAChB,SAEF,MAAM6mB,EAAK6uO,EAAS7mQ,IAAI,iBACxB,IAAK2W,OAAOC,UAAUohB,KAAQz6B,MAAMsT,QAAQ+1P,EAAW5mQ,IAAIg4B,IAEzD,OADAr0B,EAAK,qCAAqC4X,sBACnC,CAEX,CACA,IAAIsqP,GAAqB,EACzB,IAAK,MAAOtqP,EAAWg5O,KAAal5O,EAAsB,CACxD,MAAM,SACJwrP,SACQlB,EAAWG,QAAQvqP,GAC7BwpP,IAAe,EAAgB,CAC7BxQ,WACA3kP,KAAMzT,KAAKyV,KAAKhC,KAChBi3P,WACAD,eAEF,IAAK,MAAM9tP,KAAWy7O,EAChBz7O,EAAQitP,mBAAmBrlQ,OACvBoY,EAAQitP,kBAAkBe,cAAgB,IAC9ChuP,EAAQktP,aAAeJ,KAEzBC,GAAqB,EAG3B,CACA,GAAIA,EAAoB,CACtB,IAAK,MAAMtR,KAAYl5O,EAAqBpK,SAC1C,IAAK,MAAM6H,KAAWy7O,SACbz7O,EAAQktP,oBACRltP,EAAQiuP,iBAGnB,OAAO,CACT,CACA,OAAO,CACT,CACA,yBAAMC,EAAoB,qBACxB3rP,EAAoB,WACpBsqP,EAAU,QACVO,IAEA,MAAMt2P,EAAOzT,KAAKyV,KAAKhC,KACjB22P,EAAiBpqQ,KAAKyV,KAAKI,QAC3Bq0P,EAAoBlqQ,KAAKgW,IACzB8+N,EAAQ,IAAIn+N,GAClBm+N,EAAMv+N,IAAI2zP,EAAmBE,GAC7B,IACIE,EADAD,EAAgBD,EAAez1P,OAAO,cAEtC01P,aAAyBh2P,GAC3Bi2P,EAAa72P,EAAKa,MAAM+1P,IAExBC,EAAaD,EACbA,EAAgB52P,EAAK02P,qBACrBC,EAAer1P,IAAI,aAAcs1P,IAEnCC,EAAaA,EAAWz0P,QACxBi/N,EAAMv+N,IAAI8zP,EAAeC,GACzB,IAAIC,EAAOD,EAAW31P,OAAO,QACzBm2P,EAAU,KACVP,aAAgBl2P,KAClBy2P,EAAUP,EACVA,EAAO92P,EAAKa,MAAMw2P,IAEpBP,EAAOA,EAAK38P,QACPk9P,GACHR,EAAWv1P,IAAI,OAAQw1P,GAEzB,MAAMQ,QAAmBnC,IAAe,EAAW,CACjD1pP,uBACAgrP,oBACAE,eAAgBpqQ,KAChBsjQ,KAAM,KACNiH,OACA92P,OACA+1P,aACAO,UACAj1B,UAEF,IAAoB,IAAhBi2B,EAAJ,CAGAX,EAAer1P,IAAI,oBAAqBg2P,GACpCD,GACFh2B,EAAMv+N,IAAIu0P,EAASP,GAErB,IAAK,MAAOv0P,EAAKlS,KAAQgxO,EAAMh+N,QAC7BizP,EAAQxzP,IAAIP,EAAK,CACf+D,KAAMjW,GAPV,CAUF,CACA,cAAa,EAAW,qBACtBob,EAAoB,kBACpBgrP,EAAiB,eACjBE,EAAc,KACd9G,EAAI,KACJiH,EAAI,KACJ92P,EAAI,WACJ+1P,EAAU,QACVO,EAAO,MACPj1B,IAEA,MAAMk2B,EAAO33P,GAAKxP,IAAI,QACtB,IACIonQ,EADAxB,GAAW,EAEf,IAAK,MAAOrqP,EAAWg5O,KAAal5O,EAAsB,CACxD,MAAMgsP,QAAa1B,EAAWG,QAAQvqP,IAEpCpJ,IAAKmzP,GACH+B,EACEC,EAAYhC,aAAmB90P,GACrC,IAAK,MAAM,kBACTu1P,EAAiB,IACjB5zP,EAAG,aACH6zP,EAAY,iBACZe,KACGxS,EAAU,CACb,IAAKwR,GAAmBrlQ,KACtB,SAEF,MAAM,aACJomQ,GACEf,EACJ,GAAIQ,GAAkB5vP,OAAOC,UAAUkwP,IAAiBA,GAAgB,EAAG,CACzE,IAAIS,GAAQH,IAAuB,IAAIt3P,KAAO9P,IAAIub,QACrChc,IAATgoQ,IAEFA,EADuB,IAAIC,GAAejB,EAAgBc,EAAKR,UACzCY,eAAenC,GACrC8B,EAAmBl2P,IAAIqK,EAAWgsP,IAEpC,MAAMG,EAASH,GAAMvnQ,IAAI8mQ,GACzB,GAAIY,EAAQ,CACV,MAAMC,EAAU/3P,EAAKa,MAAMi3P,GAAQ11P,QACnC+yP,IAAe,EAAiB4C,EAAS5B,GACzCG,EAAQxzP,IAAIg1P,EAAQ,CAClBxxP,KAAMyxP,IAER,QACF,CACF,CACA/B,EAAUr/P,KAAK2D,IAAI07P,EAASI,GAC5B,MAAM4B,EAASh4P,EAAK02P,qBACdqB,EAAU,IAAIh4P,GAAKC,GACzBm1P,IAAe,EAAiB4C,EAAS5B,SACnC5pQ,MAAK,EAAiB,CAC1B4qQ,mBACAY,UACAE,UAAWD,EACXvB,oBACAyB,aAAcrI,EACd7vP,OACAqhO,UAEF,MAAM82B,EAAU,IAAIp4P,GAAKC,GACzB+3P,EAAQz2P,IAAI,IAAK62P,GACjBA,EAAQ72P,IAAI,OAAQi2P,GAChBG,GACFS,EAAQ72P,IAAI,KAAMo0P,GAEpByC,EAAQ72P,IAAI,MAAOiB,GACnB8+N,EAAMv+N,IAAIk1P,EAAQD,GAClBjB,EAAKhpQ,KAAKsoQ,EAAc4B,EAC1B,CACF,CACA,OAAOhC,EAAU,CACnB,CACA,QAAO,CAAiB+B,GAAS,KAC/BjnQ,EAAI,MACJ7C,EAAK,KACLwxP,EAAI,IACJzoO,EAAG,SACHohP,EAAQ,WACRC,IAEAN,EAAQz2P,IAAI,IAAK1B,GAAKxP,IAAIU,IACtB7C,GACF8pQ,EAAQz2P,IAAI,IAAKsK,GAAuB3d,IAEtCwxP,GACFsY,EAAQz2P,IAAI,OAAQsK,GAAuB6zO,IAEzCzoO,GACF+gP,EAAQz2P,IAAI,MAAOsK,GAAuBoL,IAExCohP,GACFL,EAAQz2P,IAAI,IAAKsK,GAAuBwsP,IAEtCC,GACFN,EAAQz2P,IAAI,aAAcsK,GAAuBysP,GAErD,CACA,QAAO,EAAgB,SACrB1T,EAAQ,KACR3kP,EAAI,SACJi3P,EAAQ,WACRD,IAEA,MAAMsB,EAAe,IAAIp4P,IACzB,IAAK,MAAMgJ,KAAWy7O,EACpB,GAAIz7O,EAAQqvP,mBAAoB,CAC9B,MAAMnwO,EAAK3lB,SAASyG,EAAQqvP,mBAAmBhwP,MAAM,OAAO,GAAI,IAChE,IAAIiwP,EAAQF,EAAaloQ,IAAIg4B,GACxBowO,IACHA,EAAQ,GACRF,EAAah3P,IAAI8mB,EAAIowO,IAEvBA,EAAM1qQ,KAAKob,EACb,CAEF,MAAMkf,EAAK6uO,EAAS7mQ,IAAI,iBACxB,IAAK2W,OAAOC,UAAUohB,GACpB,OAEF,MAAMqwO,EAAczB,EAAW5mQ,IAAIg4B,GAC7BswO,EAAgB,CAAC5I,EAAK6I,EAASC,KACnC,MAAMJ,EAAQF,EAAaloQ,IAAI0/P,GAC/B,GAAI0I,EAAO,CACT,MAAMK,EAAYF,EAAQz3P,OAAO,KAC3BkkD,EAAaplD,EAAK+V,WAAW8iP,GACnC,GAAIA,aAAqBj4P,IAAOwkD,aAAsBrlD,GAAM,CAC1D,MAAMyW,EAAS,CACbjU,IAAKq2P,EACL52P,KAAM22P,GAER,IAAK,MAAMzvP,KAAWsvP,EACpBtvP,EAAQiuP,iBAAmB3gP,CAE/B,CACA,OAAO,CACT,CACA,OAAO,CAAK,EAEd,IAAK,MAAMoiP,KAAUH,EAAa,CAChC,KAAMG,aAAkBh4P,IACtB,SAEF,MAAM+3P,EAAU34P,EAAKa,MAAM+3P,GACrB7/O,EAAI4/O,EAAQvoQ,IAAI,KACtB,GAAI2W,OAAOC,UAAU+R,GACnB2/O,EAAc3/O,EAAG4/O,EAASC,QAG5B,GAAKjrQ,MAAMsT,QAAQ8X,GAGnB,IAAK,IAAI+2O,KAAO/2O,EAAG,CAEjB,GADA+2O,EAAM9vP,EAAK+V,WAAW+5O,GAClB/oP,OAAOC,UAAU8oP,IAAQ4I,EAAc5I,EAAK6I,EAASC,GACvD,MAEF,KAAM9I,aAAe/vP,IACnB,SAEF,IAAKuD,GAAOwsP,EAAI1/P,IAAI,QAAS,OAC3B,MAEF,MAAM80P,EAAO4K,EAAI1/P,IAAI,QACrB,GAAI2W,OAAOC,UAAUk+O,IAASwT,EAAcxT,EAAMyT,EAASC,GACzD,KAEJ,CACF,CACF,CACA,cAAa,EAAiB,iBAC5BzB,EAAgB,QAChBY,EAAO,UACPE,EAAS,kBACTxB,EAAiB,aACjByB,EAAY,KACZl4P,EAAI,MACJqhO,IAEA,IACIw3B,EADAt2P,EAAM,KAEN40P,KAEA50P,OACE40P,GACJ0B,EAAY1B,EAAiBn1P,KAAKd,OAAO,MAAQu1P,GAEjDoC,EAAYpC,EAEdsB,EAAQz2P,IAAI,IAAKu3P,GACjB,MAAMzzM,EAAaplD,EAAK+V,WAAW8iP,GACnC,IAAKzzM,EAEH,YADA8yM,EAAapqQ,KAAKmqQ,GAGpB,IAAIa,EAAmBz3B,EAAMjxO,IAAIyoQ,GAC5BC,IACHA,EAAmB1zM,EAAWhjD,QAC9Bi/N,EAAMv+N,IAAI+1P,EAAWC,IAEvB,MAAMC,EAAgBD,EAAiB53P,OAAO,KAC9C,IAAI83P,EAAmBD,aAAyBn4P,GAAMygO,EAAMjxO,IAAI2oQ,GAAiB,KACjF,IAAKC,EAAkB,CACrBA,EAAmBh5P,EAAK+V,WAAWgjP,GACnCC,EAAmBrrQ,MAAMsT,QAAQ+3P,GAAoBA,EAAiB7+P,QAAU,CAAC4+P,GACjF,MAAME,EAAgBj5P,EAAK02P,qBAC3BoC,EAAiBx3P,IAAI,IAAK23P,GAC1B53B,EAAMv+N,IAAIm2P,EAAeD,EAC3B,CACA,MAAM79N,EAAQ69N,EAAiBn8M,QAAQt6C,GACvCy2P,EAAiBvhD,OAAOt8K,GAAS,EAAIA,EAAQ,EAAI69N,EAAiBlsQ,OAAQ,EAAGmrQ,EAC/E,EAEF,MAAMiB,GACJ,WAAA1jQ,CAAY4pC,EAAMp9B,GAChBzV,KAAK6yC,KAAOA,EACZ7yC,KAAKyV,KAAOA,EACZzV,KAAKsjQ,KAAO,GACZtjQ,KAAK4sQ,WACP,CACA,QAAIC,GACF,MAAMC,EAAU9sQ,KAAKyV,KAAK5R,IAAI,KACxBnB,EAAOoqQ,aAAmBz5P,GAAOy5P,EAAQpqQ,KAAO,IAChD,KACJygQ,GACEnjQ,KAAK6yC,KACT,OAAIswN,EAAK4F,QAAQ/zP,IAAItS,GACZygQ,EAAK4F,QAAQllQ,IAAInB,GAEnBA,CACT,CACA,SAAAkqQ,GACE,IAAIG,EAAY,KAChB,MAAMxB,EAASvrQ,KAAKyV,KAAKd,OAAO,MAC5B42P,aAAkBl3P,KACpB04P,EAAYxB,EAAO/+P,YAErB,MAAM82P,EAAOtjQ,KAAKyV,KAAK5R,IAAI,KAC3B,GAAIzC,MAAMsT,QAAQ4uP,GAChB,IAAK,MAAMC,KAAOD,EAAM,CACtB,MAAM3mP,EAAU3c,KAAKgtQ,SAASD,EAAWxJ,GACrC5mP,GACF3c,KAAKsjQ,KAAK/hQ,KAAKob,EAEnB,KACK,CACL,MAAMA,EAAU3c,KAAKgtQ,SAASD,EAAWzJ,GACrC3mP,GACF3c,KAAKsjQ,KAAK/hQ,KAAKob,EAEnB,CACF,CACA,QAAAqwP,CAASD,EAAWxJ,GAClB,GAAI/oP,OAAOC,UAAU8oP,GACnB,OAAIvjQ,KAAK6yC,KAAK63N,SAAS92P,QAAUm5P,EACxB,KAEF,IAAIE,GAAc,CACvB1oQ,KAxfQ,EAyfRo0P,KAAM4K,EACNwJ,cAGJ,IAAIG,EAAU,KAMd,GALI3J,aAAelvP,GACjB64P,EAAUltQ,KAAKyV,KAAKhC,KAAKa,MAAMivP,GACtBA,aAAe/vP,KACxB05P,EAAU3J,IAEP2J,EACH,OAAO,KAET,MAAM/D,EAAU+D,EAAQv4P,OAAO,MAC3Bw0P,aAAmB90P,KACrB04P,EAAY5D,EAAQ38P,YAEtB,MAAMjI,EAAO2oQ,EAAQrpQ,IAAI,kBAAmBwP,GAAO65P,EAAQrpQ,IAAI,QAAQnB,KAAO,KAC9E,GAAa,QAAT6B,EAAgB,CAClB,GAAIvE,KAAK6yC,KAAK63N,SAAS92P,QAAUm5P,EAC/B,OAAO,KAET,MAAMV,EAASa,EAAQv4P,OAAO,OAC9B,OAAO,IAAIs4P,GAAc,CACvB1oQ,KAhhBU,EAihBV4oQ,SAAUd,aAAkBh4P,GAAMg4P,EAAO7/P,WAAa,KACtDugQ,YACApU,KAAMuU,EAAQrpQ,IAAI,SAEtB,CACA,GAAa,SAATU,EAAiB,CACnB,GAAIvE,KAAK6yC,KAAK63N,SAAS92P,QAAUm5P,EAC/B,OAAO,KAET,MAAMV,EAASa,EAAQv4P,OAAO,OAC9B,OAAO,IAAIs4P,GAAc,CACvB1oQ,KA3hBE,EA4hBF4oQ,SAAUd,aAAkBh4P,GAAMg4P,EAAO7/P,WAAa,KACtDugQ,aAEJ,CACA,OAAO,IAAIE,GAAc,CACvB1oQ,KA/hBK,EAgiBLkR,KAAMy3P,GAEV,EAEF,MAAMD,GACJ,WAAAhkQ,EAAY,KACV1E,EAAI,KACJkR,EAAO,KAAI,KACXkjP,EAAO,KAAI,UACXoU,EAAY,KAAI,SAChBI,EAAW,OAEXntQ,KAAKuE,KAAOA,EACZvE,KAAKyV,KAAOA,EACZzV,KAAK24P,KAAOA,EACZ34P,KAAK+sQ,UAAYA,EACjB/sQ,KAAKmtQ,SAAWA,EAChBntQ,KAAKwmQ,WAAa,IACpB,EAEF,MAAM6E,GACJ,WAAApiQ,CAAYmhQ,EAAgBM,GAC1B1qQ,KAAKmjQ,KAAOiH,EACZpqQ,KAAK6oQ,SAAWuB,EAAiBA,EAAe30P,KAAO,KACvDzV,KAAK0qQ,SAAWA,EAChB1qQ,KAAKgqP,MAAQ,EACf,CACA,cAAAshB,CAAenC,GACb,KAAKnpQ,KAAKmjQ,MAASnjQ,KAAK6oQ,UAAcM,aAAmB90P,IACvD,OAAO,KAET,MAAMi2P,EAAatqQ,KAAK6oQ,SAAShlQ,IAAI,cACrC,IAAKymQ,EACH,OAAO,KAET,MAAMzoD,EAAM7hN,KAAKmjQ,KAAK6F,iBAAiBnlQ,IAAIslQ,GAC3C,IAAKtnD,EACH,OAAO,KAET,MAAM5lM,EAAM,IAAItI,IACV82P,EAAa,IAAI5G,GAAWyG,EAAYtqQ,KAAK6oQ,SAASp1P,MAC5D,IAAK,MAAO25P,KAAWvrD,EAAK,CAC1B,MAAM/9M,EAAM2mQ,EAAW91P,OAAOy4P,GAC1BtpQ,aAAeuQ,IACjB4H,EAAIlH,IAAIq4P,EAAQtpQ,EAEpB,CACA,OAAOmY,CACT,CACA,KAAAqN,CAAM6/O,GACJ,KAAKnpQ,KAAKmjQ,MAASnjQ,KAAK6oQ,UAAcM,aAAmB90P,IACvD,OAEF,MAAMi2P,EAAatqQ,KAAK6oQ,SAAShlQ,IAAI,cACrC,IAAKymQ,EACH,OAEF,MAAMzuO,EAAK77B,KAAK0qQ,SAAS7mQ,IAAI,iBACvBg+M,EAAM7hN,KAAKmjQ,KAAK6F,iBAAiBnlQ,IAAIslQ,GAC3C,IAAK3uP,OAAOC,UAAUohB,KAAQgmL,EAC5B,OAEF,MAAM5lM,EAAM,IAAItI,IACV82P,EAAa,IAAI5G,GAAWyG,EAAYtqQ,KAAK6oQ,SAASp1P,MAC5D,GAAI+G,OAAOC,UAAUohB,GAAK,CACxB,MAAMqwO,EAAczB,EAAW5mQ,IAAIg4B,GACnC,GAAIz6B,MAAMsT,QAAQw3P,GAChB,IAAK,MAAMl2P,KAAOk2P,EACZl2P,aAAe3B,IACjBrU,KAAKqtQ,QAAQrtQ,KAAK6oQ,SAASp1P,KAAKa,MAAM0B,GAAMiG,EAIpD,CACA,GAAK4lM,EAGL,IAAK,MAAOurD,EAAQ7oQ,KAASs9M,EAAK,CAChC,MAAM/9M,EAAM2mQ,EAAW5mQ,IAAIupQ,GAC3B,GAAItpQ,EAAK,CACP,MAAMysC,EAAOvwC,KAAKqtQ,QAAQrtQ,KAAK6oQ,SAASp1P,KAAK+V,WAAW1lB,GAAMmY,GACnC,IAAvBs0B,GAAM+yN,MAAM/iQ,QAnnBd,IAmnB8BgwC,EAAK+yN,KAAK,GAAG/+P,OAC3CgsC,EAAK+yN,KAAK,GAAG/+P,KAAOA,EAExB,CACF,CACF,CACA,OAAA8oQ,CAAQ53P,EAAMwG,EAAKm9N,EAAQ,GACzB,GAAIA,EA9nBU,GAgoBZ,OADA5xO,EAAK,iCACE,KAET,KAAMiO,aAAgBjC,IACpB,OAAO,KAET,GAAIyI,EAAIjH,IAAIS,GACV,OAAOwG,EAAIpY,IAAI4R,GAEjB,MAAMkH,EAAU,IAAIgwP,GAAkB3sQ,KAAMyV,GAC5CwG,EAAIlH,IAAIU,EAAMkH,GACd,MAAMvG,EAASX,EAAK5R,IAAI,KACxB,IAAKuS,GAAUW,GAAOX,EAAOvS,IAAI,QAAS,kBAIxC,OAHK7D,KAAKstQ,gBAAgB73P,EAAMkH,IAC9BV,EAAIvF,OAAOjB,GAENkH,EAET,MAAM6pP,EAAaxmQ,KAAKqtQ,QAAQj3P,EAAQ6F,EAAKm9N,EAAQ,GACrD,IAAKotB,EACH,OAAO7pP,EAET,IAAIumM,GAAO,EACX,IAAK,MAAMqgD,KAAOiD,EAAWlD,KAhpBtB,IAipBDC,EAAIh/P,MAAsCg/P,EAAI9tP,OAASA,IACzD8tP,EAAIiD,WAAa7pP,EACjBumM,GAAO,GAMX,OAHKA,GACHjnM,EAAIvF,OAAOjB,GAENkH,CACT,CACA,eAAA2wP,CAAgB73P,EAAMkH,GACpB,MAAM7Y,EAAM9D,KAAK6oQ,SAAShlQ,IAAI,KAC9B,IAAKC,EACH,OAAO,EAET,GAAIA,aAAe0P,GACjB,OAAI1P,EAAI8P,QAAU6B,EAAK7B,QAGvB5T,KAAKgqP,MAAM,GAAKrtO,GACT,GAET,IAAKvb,MAAMsT,QAAQ5Q,GACjB,OAAO,EAET,IAAIo/M,GAAO,EACX,IAAK,IAAI5hN,EAAI,EAAGA,EAAIwC,EAAIvD,OAAQe,IAAK,CACnC,MAAM+qQ,EAASvoQ,EAAIxC,GACf+qQ,GAAQ7/P,aAAeiJ,EAAK7B,QAC9B5T,KAAKgqP,MAAM1oP,GAAKqb,EAChBumM,GAAO,EAEX,CACA,OAAOA,CACT,CACA,gBAAIqhD,GACF,SAASgJ,EAAmB3/N,EAAMx3B,EAAQgjO,EAAQ,GAChD,GAAIA,EA5rBQ,GA8rBV,YADA5xO,EAAK,+CAGP,MAAM1D,EAAMJ,OAAOwP,OAAO,MAC1BpP,EAAI+oQ,KAAOj/N,EAAKi/N,KAChB/oQ,EAAI2pC,SAAW,GACfr3B,EAAOq3B,SAASlsC,KAAKuC,GACrB,IAAI2mB,EAAMmjB,EAAKn4B,KAAK5R,IAAI,OACL,iBAAR4mB,IACTA,EAAMmjB,EAAKn4B,KAAK5R,IAAI,eAEH,iBAAR4mB,IACT3mB,EAAI2mB,IAAMla,EAAkBka,IAE9B,MAAMtc,EAAIy/B,EAAKn4B,KAAK5R,IAAI,KACxB,GAAIsK,aAAaqF,GAAM,CACrB,MAAMk8M,EAAO9zM,GAAiBzN,EAAEsG,SAAS,QAAS,MAClD,GAAIi7M,EACF5rN,EAAI4rN,KAAOA,MACN,CACL,MAAM7vM,EAAQ1R,EAAEtK,IAAI,SACdic,EAAS3R,EAAEtK,IAAI,UACA,iBAAVgc,GAAsBA,EAAQ,GAAuB,iBAAXC,GAAuBA,EAAS,IACnFhc,EAAI4rN,KAAO,CAAC,EAAG,EAAG7vM,EAAOC,GAE7B,CACF,CACA,MAAMozO,EAAOtlN,EAAKn4B,KAAK5R,IAAI,QACP,iBAATqvP,IACTpvP,EAAIovP,KAAO3iP,EAAkB2iP,IAE/B,IAAK,MAAMqQ,KAAO31N,EAAK01N,KAAM,CAC3B,MAAMkK,EAvtBH,IAutBgBjK,EAAIh/P,KAAqCg/P,EAAIiD,WAAa,KACzEgH,EACFD,EAAmBC,EAAY1pQ,EAAKs1O,EAAQ,GA7tBtC,IA+tBGmqB,EAAIh/P,MA9tBL,IA8tBgDg/P,EAAIh/P,KAC5DT,EAAI2pC,SAASlsC,KAAK,CAChBgD,KAAM,UACNs3B,GAAI,IAAI0nO,EAAIwJ,eAAexJ,EAAI5K,SAhuBjC,IAkuBS4K,EAAIh/P,KACbT,EAAI2pC,SAASlsC,KAAK,CAChBgD,KAAM,SACNs3B,GAAI0nO,EAAI4J,WApuBN,IAsuBK5J,EAAIh/P,MACbT,EAAI2pC,SAASlsC,KAAK,CAChBgD,KAAM,aACNs3B,GAAI,qBAAsB0nO,EAAI4J,YAGpC,CACF,CACA,MAAMhK,EAAOz/P,OAAOwP,OAAO,MAC3BiwP,EAAK11N,SAAW,GAChB01N,EAAK0J,KAAO,OACZ,IAAK,MAAMpG,KAASzmQ,KAAKgqP,MAClByc,GAGL8G,EAAmB9G,EAAOtD,GAE5B,OAAOA,CACT,EAeF,SAASsK,GAAoBznP,GAC3B,IAAK5kB,MAAMsT,QAAQsR,IAASA,EAAKzlB,OAAS,EACxC,OAAO,EAET,MAAO2qQ,EAAMwC,KAASvsQ,GAAQ6kB,EAC9B,KAAMklP,aAAgB72P,IAASmG,OAAOC,UAAUywP,IAC9C,OAAO,EAET,KAAMwC,aAAgBr6P,IACpB,OAAO,EAET,MAAMs6P,EAAUxsQ,EAAKZ,OACrB,IAAIqtQ,GAAY,EAChB,OAAQF,EAAKhrQ,MACX,IAAK,MACH,GAAIirQ,EAAU,GAAKA,EAAU,EAC3B,OAAO,EAET,MACF,IAAK,MACL,IAAK,OACH,OAAmB,IAAZA,EACT,IAAK,OACL,IAAK,QACL,IAAK,OACL,IAAK,QACH,GAAIA,EAAU,EACZ,OAAO,EAET,MACF,IAAK,OACH,GAAgB,IAAZA,EACF,OAAO,EAETC,GAAY,EACZ,MACF,QACE,OAAO,EAEX,IAAK,MAAMl3B,KAAOv1O,EAChB,KAAqB,iBAARu1O,GAAoBk3B,GAAqB,OAARl3B,GAC5C,OAAO,EAGX,OAAO,CACT,CACA,SAASm3B,GAAU7nP,GAIjB,OAHIA,aAAgBxS,KAClBwS,EAAOA,EAAKniB,IAAI,MAEX4pQ,GAAoBznP,GAAQA,EAAO,IAC5C,CACA,SAAS8nP,GAAgB5wP,GACvB,IAAI8I,EAAO9I,EAAOrZ,IAAI,KACtB,GAAImiB,EAAM,CAIR,GAHIA,aAAgB3S,KAClB2S,EAAOA,EAAKtjB,MAEM,iBAATsjB,EACT,OAAOzV,EAAkByV,GACpB,GAAIynP,GAAoBznP,GAC7B,OAAO+nP,KAAKC,UAAUhoP,EAE1B,CACA,OAAO,IACT,CACA,MAAMioP,GACJ,WAAAhlQ,CAAYugQ,EAAY/1P,GAItB,GAHAzT,KAAKwpQ,WAAaA,EAClBxpQ,KAAKyT,KAAOA,EACZzT,KAAKkuQ,SAAWz6P,EAAK06P,kBACfnuQ,KAAKkuQ,oBAAoB16P,IAC7B,MAAM,IAAI7J,EAAY,uCAExB3J,KAAKouQ,kBACLpuQ,KAAKquQ,gBAAkB,KACvBruQ,KAAKkpP,UAAY,IAAIvyO,GACrB3W,KAAKmpP,iBAAmB,IAAIx1O,IAC5B3T,KAAKopP,sBAAwB,IAAIz1O,IACjC3T,KAAKqpP,iBAAmB,IAAIvY,GAC5B9wO,KAAKsuQ,mBAAqB,IAAI33P,GAC9B3W,KAAKuuQ,eAAiB,IAAI53P,GAC1B3W,KAAKwuQ,cAAgB,IAAI73P,GACzB3W,KAAK8pP,iBAAmB,IAAI3zO,GAC5BnW,KAAKg7O,gBAAkB,IAAIrnO,GAC7B,CACA,SAAAs2P,GACE,OAAOjqQ,KAAKkuQ,SAASr4P,OACvB,CACA,WAAI/T,GACF,MAAMA,EAAU9B,KAAKkuQ,SAASrqQ,IAAI,WAClC,GAAI/B,aAAmBuR,GAAM,CAC3B,GAAI8F,GAAmB2E,KAAKhc,EAAQY,MAClC,OAAOgG,EAAO1I,KAAM,UAAW8B,EAAQY,MAEzC8E,EAAK,gCAAgC1F,EAAQY,OAC/C,CACA,OAAOgG,EAAO1I,KAAM,UAAW,KACjC,CACA,QAAIkzP,GACF,MAAMA,EAAOlzP,KAAKkuQ,SAASrqQ,IAAI,QAC/B,OAAO6E,EAAO1I,KAAM,OAAQkzP,GAAwB,iBAATA,EAAoB3iP,EAAkB2iP,GAAQ,KAC3F,CACA,kBAAIub,GACF,MAAMA,EAAiBzuQ,KAAKkuQ,SAASrqQ,IAAI,kBACzC,OAAO6E,EAAO1I,KAAM,iBAA4C,kBAAnByuQ,GAA+BA,EAC9E,CACA,cAAIC,GACF,IAAIA,EAAa,KACjB,IACE,MAAM5qQ,EAAM9D,KAAKkuQ,SAASrqQ,IAAI,cAC1BC,aAAe0P,IAAQ1P,EAAImQ,KAAO,IACpCy6P,EAAa5qQ,EAEjB,CAAE,MAAOiN,GACP,GAAIA,aAAcyI,GAChB,MAAMzI,EAER3J,EAAK,oEACP,CACA,OAAOsB,EAAO1I,KAAM,aAAc0uQ,EACpC,CACA,YAAIC,GACF,IAAIA,EAAW,KACf,IACE,MAAM7qQ,EAAM9D,KAAKkuQ,SAASrqQ,IAAI,YAC1BC,aAAe0P,IAAQ1P,EAAImQ,KAAO,IACpC06P,EAAW7qQ,EAEf,CAAE,MAAOiN,GACP,GAAIA,aAAcyI,GAChB,MAAMzI,EAER3J,EAAK,8DACP,CACA,OAAOsB,EAAO1I,KAAM,WAAY2uQ,EAClC,CACA,eAAIC,GACF,MAAMjmQ,EAAQ3I,KAAKkuQ,SAASv5P,OAAO,YACnC,OAAOjM,EAAO1I,KAAM,cAAe2I,aAAiB0L,GAAM1L,EAAQ,KACpE,CACA,YAAIkmQ,GACF,MAAMC,EAAY9uQ,KAAKkuQ,SAASv5P,OAAO,YACvC,KAAMm6P,aAAqBz6P,IACzB,OAAO3L,EAAO1I,KAAM,WAAY,MAElC,IAAI6uQ,EAAW,KACf,IACE,MAAM7sP,EAAShiB,KAAKyT,KAAKa,MAAMw6P,GAAY9uQ,KAAKyT,KAAKs7P,SAASC,iBAC9D,GAAIhtP,aAAkB1K,IAAc0K,EAAOvM,gBAAgBjC,GAAM,CAC/D,MAAMjP,EAAOyd,EAAOvM,KAAK5R,IAAI,QACvBsyN,EAAUn0M,EAAOvM,KAAK5R,IAAI,WAChC,GAAIkT,GAAOxS,EAAM,aAAewS,GAAOo/M,EAAS,OAAQ,CACtD,MAAMp8M,EAAO1R,GAAmB2Z,EAAOpJ,aACnCmB,IACF80P,EAAW,IAAIhH,GAAe9tP,GAAMwqP,aAExC,CACF,CACF,CAAE,MAAOxzP,GACP,GAAIA,aAAcyI,GAChB,MAAMzI,EAER3J,EAAK,+BAA+B2J,MACtC,CACA,OAAOrI,EAAO1I,KAAM,WAAY6uQ,EAClC,CACA,YAAII,GACF,IAAIA,EAAW,KACf,IACEA,EAAWjvQ,KAAKkvQ,eAClB,CAAE,MAAOn+P,GACP,GAAIA,aAAcyI,GAChB,MAAMzI,EAERvJ,EAAK,4BACP,CACA,OAAOkB,EAAO1I,KAAM,WAAYivQ,EAClC,CACA,aAAAC,GACE,MAAMprQ,EAAM9D,KAAKkuQ,SAASrqQ,IAAI,YAC9B,KAAMC,aAAe0P,IACnB,OAAO,KAET,MAAMy7P,EAAW,CACfE,QAAQ,EACRC,gBAAgB,EAChBC,UAAU,GAEZ,IAAK,MAAM7rQ,KAAOyrQ,EAAU,CAC1B,MAAMtmQ,EAAQ7E,EAAID,IAAIL,GACD,kBAAVmF,IACTsmQ,EAASzrQ,GAAOmF,EAEpB,CACA,OAAOsmQ,CACT,CACA,kBAAI7E,GACF,IAAIkF,EAAa,KACjB,IACEA,EAAatvQ,KAAKuvQ,qBACpB,CAAE,MAAOx+P,GACP,GAAIA,aAAcyI,GAChB,MAAMzI,EAERvJ,EAAK,sCACP,CACA,OAAOkB,EAAO1I,KAAM,iBAAkBsvQ,EACxC,CACA,mBAAAC,GACE,MAAMC,EAASxvQ,KAAKkuQ,SAASv5P,OAAO,kBAC9B7Q,EAAM9D,KAAKyT,KAAK+V,WAAWgmP,GACjC,KAAM1rQ,aAAe0P,IACnB,OAAO,KAET,MAAM2vP,EAAO,IAAIyF,GAAe9kQ,EAAK0rQ,GAErC,OADArM,EAAK8F,OACE9F,CACT,CACA,qBAAIiL,GACF,MAAMqB,EAAWzvQ,KAAKkuQ,SAASrqQ,IAAI,SACnC,KAAM4rQ,aAAoBj8P,IACxB,MAAM,IAAI7J,EAAY,uCAExB,OAAOjB,EAAO1I,KAAM,oBAAqByvQ,EAC3C,CACA,mBAAIC,GACF,IAAI5rQ,EAAM,KACV,IACEA,EAAM9D,KAAK2vQ,sBACb,CAAE,MAAO5+P,GACP,GAAIA,aAAcyI,GAChB,MAAMzI,EAERvJ,EAAK,mCACP,CACA,OAAOkB,EAAO1I,KAAM,kBAAmB8D,EACzC,CACA,oBAAA6rQ,GACE,IAAI7rQ,EAAM9D,KAAKkuQ,SAASrqQ,IAAI,YAC5B,KAAMC,aAAe0P,IACnB,OAAO,KAGT,GADA1P,EAAMA,EAAI6Q,OAAO,WACX7Q,aAAeuQ,IACnB,OAAO,KAET,MAAM8uP,EAAO,CACXrsP,MAAO,IAEH3W,EAAQ,CAAC,CACb2D,MACAsS,OAAQ+sP,IAEJpZ,EAAY,IAAI5zO,GACtB4zO,EAAUxzO,IAAIzS,GACd,MAAM2P,EAAOzT,KAAKyT,KAChBm8P,EAAa,IAAI9pP,kBAAkB,GACrC,KAAO3lB,EAAMI,OAAS,GAAG,CACvB,MAAMe,EAAInB,EAAMyzB,QACVi8O,EAAcp8P,EAAK+V,WAAWloB,EAAEwC,KACtC,GAAoB,OAAhB+rQ,EACF,SAEGA,EAAY76P,IAAI,UACnBxN,EAAK,qCAEP,MAAMuS,EAAO,CACXlS,IAAK,KACLme,KAAM,KACN9I,OAAQ,MAEV+wP,GAAQ6B,oBAAoB,CAC1BC,SAAUF,EACVG,UAAWj2P,EACXk2P,WAAYjwQ,KAAK8H,QACjBooQ,eAAgBlwQ,KAAKmwQ,cAEvB,MAAMzuQ,EAAQmuQ,EAAYhsQ,IAAI,SACxB8+B,EAAQktO,EAAYhsQ,IAAI,MAAQ,EAChCsqB,EAAQ0hP,EAAYp7P,SAAS,KAC7B0R,EAAQ0pP,EAAYhsQ,IAAI,SAC9B,IAAIkiO,EAAW6pC,GACXv0P,GAAc8S,EAAO,IAAoB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,KACxE43M,EAAWvgN,GAAWiE,WAAW5D,IAAIH,OAAOyI,EAAO,IAErD,MAAMiiP,EAAc,CAClBlzP,OAAQnD,EAAKmD,OACbmzP,WAAYt2P,EAAKs2P,WACjBrqP,KAAMjM,EAAKiM,KACXne,IAAKkS,EAAKlS,IACVyoQ,UAAWv2P,EAAKu2P,UAChB3xP,UAAW5E,EAAK4E,UAChB4xP,YAAax2P,EAAKw2P,YAClB7uQ,MAAwB,iBAAVA,EAAqB6O,EAAkB7O,GAAS,GAC9DysB,MAAO43M,EACP5/M,MAAO3L,OAAOC,UAAU0L,GAASA,OAAQ/iB,EACzC60N,QAAiB,EAARt1L,GACTu1L,UAAmB,EAARv1L,GACX7rB,MAAO,IAETxV,EAAE8U,OAAOU,MAAMvV,KAAK6uQ,GACpBtsQ,EAAM+rQ,EAAYl7P,OAAO,SACrB7Q,aAAeuQ,KAAQ01O,EAAU/0O,IAAIlR,KACvC3D,EAAMoB,KAAK,CACTuC,MACAsS,OAAQg6P,IAEVrmB,EAAUxzO,IAAIzS,IAEhBA,EAAM+rQ,EAAYl7P,OAAO,QACrB7Q,aAAeuQ,KAAQ01O,EAAU/0O,IAAIlR,KACvC3D,EAAMoB,KAAK,CACTuC,MACAsS,OAAQ9U,EAAE8U,SAEZ2zO,EAAUxzO,IAAIzS,GAElB,CACA,OAAOq/P,EAAKrsP,MAAMvW,OAAS,EAAI4iQ,EAAKrsP,MAAQ,IAC9C,CACA,eAAI05P,GACF,IAAIA,EAAc,KAClB,IACEA,EAAcxwQ,KAAKywQ,kBACrB,CAAE,MAAO1/P,GACP,GAAIA,aAAcyI,GAChB,MAAMzI,EAERvJ,EAAK,8BACP,CACA,OAAOkB,EAAO1I,KAAM,cAAewwQ,EACrC,CACA,gBAAAC,GACE,MAAM1B,EAAU/uQ,KAAKyT,KAAKi9P,QAAQ7sQ,IAAI,WACtC,KAAMkrQ,aAAmBv7P,IACvB,OAAO,KAET,IAAImvB,EAAQosO,EAAQlrQ,IAAI,KACxB,GAAqB,iBAAV8+B,EACT,OAAO,KAETA,GAAS,GAAK,GACd,MAAM6tO,EAAc,GACpB,IAAK,MAAMhtQ,KAAOsB,EAAgB,CAChC,MAAM6D,EAAQ7D,EAAetB,GACzBm/B,EAAQh6B,GACV6nQ,EAAYjvQ,KAAKoH,EAErB,CACA,OAAO6nQ,CACT,CACA,yBAAIG,GACF,IAAIC,EAAS,KACb,IACE,MAAMp7P,EAAaxV,KAAKkuQ,SAASrqQ,IAAI,gBACrC,IAAK2R,EACH,OAAO9M,EAAO1I,KAAM,wBAAyB,MAE/C,MAAM6wQ,EAAgBr7P,EAAW3R,IAAI,KACrC,IAAKgtQ,EACH,OAAOnoQ,EAAO1I,KAAM,wBAAyB,MAE/C,MAAM8wQ,EAAat7P,EAAW3R,IAAI,QAClC,IAAKzC,MAAMsT,QAAQo8P,GACjB,OAAOpoQ,EAAO1I,KAAM,wBAAyB,MAE/C,MAAM+wQ,EAAgB,IAAIp6P,GAC1B,IAAK,MAAMq6P,KAAYF,EACfE,aAAoB38P,KAAQ08P,EAAc/7P,IAAIg8P,IAGpDD,EAAcx6P,IAAIy6P,EAAUhxQ,MAAK,EAA0BgxQ,IAE7DJ,EAAS5wQ,MAAK,EAA2B6wQ,EAAeE,EAC1D,CAAE,MAAOhgQ,GACP,GAAIA,aAAcyI,GAChB,MAAMzI,EAERvJ,EAAK,2CAA2CuJ,IAClD,CACA,OAAOrI,EAAO1I,KAAM,wBAAyB4wQ,EAC/C,CACA,GAA0BI,GACxB,MAAM9lB,EAAQlrP,KAAKyT,KAAKa,MAAM08P,GACxBltQ,EAAM,CACV+3B,GAAIm1O,EAASxkQ,WACb9J,KAAM,KACNugP,OAAQ,KACRguB,MAAO,CACLC,MAAO,KACPtyB,KAAM,MAERuyB,SAAU,IAENzuQ,EAAOwoP,EAAMrnP,IAAI,QACH,iBAATnB,IACToB,EAAIpB,KAAO6N,EAAkB7N,IAE/B,IAAIugP,EAASiI,EAAMz2O,SAAS,UACvBrT,MAAMsT,QAAQuuO,KACjBA,EAAS,CAACA,IAERA,EAAO3nO,OAAMha,GAAKA,aAAa+R,OACjCvP,EAAIm/O,OAASA,EAAOhnO,KAAI3a,GAAKA,EAAEoB,QAEjC,MAAMuuQ,EAAQ/lB,EAAMrnP,IAAI,SACxB,KAAMotQ,aAAiBz9P,IACrB,OAAO1P,EAET,MAAMstQ,EAAWttQ,EAAImtQ,MACfC,EAAQD,EAAMptQ,IAAI,SACxB,GAAIqtQ,aAAiB19P,GAAM,CACzB,MAAM69P,EAAaH,EAAMrtQ,IAAI,cAC7B,GAAIwtQ,aAAsBh+P,GACxB,OAAQg+P,EAAW3uQ,MACjB,IAAK,KACL,IAAK,MACH0uQ,EAASF,MAAQ,CACfG,WAAYA,EAAW3uQ,MAIjC,CACA,MAAMk8O,EAAOqyB,EAAMptQ,IAAI,QACvB,GAAI+6O,aAAgBprO,GAAM,CACxB,MAAM89P,EAAY1yB,EAAK/6O,IAAI,aAC3B,GAAIytQ,aAAqBj+P,GACvB,OAAQi+P,EAAU5uQ,MAChB,IAAK,KACL,IAAK,MACH0uQ,EAASxyB,KAAO,CACd0yB,UAAWA,EAAU5uQ,MAI/B,CACA,OAAOoB,CACT,CACA,GAA2B8sQ,EAAQG,GACjC,SAASQ,EAAWC,GAClB,MAAMC,EAAW,GACjB,GAAIrwQ,MAAMsT,QAAQ88P,GAChB,IAAK,MAAM7oQ,KAAS6oQ,EACd7oQ,aAAiB0L,IAAO08P,EAAc/7P,IAAIrM,IAC5C8oQ,EAASlwQ,KAAKoH,EAAM6D,YAI1B,OAAOilQ,CACT,CACA,SAASC,EAAWF,EAAMG,EAAe,GACvC,IAAKvwQ,MAAMsT,QAAQ88P,GACjB,OAAO,KAET,MAAMl2M,EAAQ,GACd,IAAK,MAAM3yD,KAAS6oQ,EAAM,CACxB,GAAI7oQ,aAAiB0L,IAAO08P,EAAc/7P,IAAIrM,GAAQ,CACpDipQ,EAAgBr7P,IAAI5N,GACpB2yD,EAAM/5D,KAAKoH,EAAM6D,YACjB,QACF,CACA,MAAMqlQ,EAAcC,EAAiBnpQ,EAAOgpQ,GACxCE,GACFv2M,EAAM/5D,KAAKswQ,EAEf,CACA,GAAIF,EAAe,EACjB,OAAOr2M,EAET,MAAMy2M,EAAe,GACrB,IAAK,MAAOf,KAAaD,EAAcj6P,QACjC86P,EAAgB58P,IAAIg8P,IAGxBe,EAAaxwQ,KAAKyvQ,EAASxkQ,YAQ7B,OANIulQ,EAAaxxQ,QACf+6D,EAAM/5D,KAAK,CACTmB,KAAM,KACN44D,MAAOy2M,IAGJz2M,CACT,CACA,SAASw2M,EAAiB97P,EAAK27P,GAC7B,KAAMA,EAAeK,EAEnB,OADAxqQ,EAAK,iDACE,KAET,MAAMmB,EAAQ8K,EAAK+V,WAAWxT,GAC9B,IAAK5U,MAAMsT,QAAQ/L,GACjB,OAAO,KAET,MAAMspQ,EAAax+P,EAAK+V,WAAW7gB,EAAM,IACzC,GAA0B,iBAAfspQ,EACT,OAAO,KAET,MAAMJ,EAAcH,EAAW/oQ,EAAMiF,MAAM,GAAI+jQ,GAC/C,OAAKE,GAAatxQ,OAGX,CACLmC,KAAM6N,EAAkB0hQ,GACxB32M,MAAOu2M,GAJA,IAMX,CAmBA,MAAMp+P,EAAOzT,KAAKyT,KAChBm+P,EAAkB,IAAIz7P,GACtB67P,EAAoB,GAEtB,OAtBA,SAAuBb,GACrB,GAAK/vQ,MAAMsT,QAAQy8P,GAGnB,IAAK,MAAMxoQ,KAASwoQ,EAAU,CAC5B,MAAMe,EAAUz+P,EAAK+V,WAAW7gB,GAChC,IAAKvH,MAAMsT,QAAQw9P,KAAaA,EAAQ3xQ,OACtC,SAEF,MAAM4xQ,EAAgB,IAAI77P,IAC1B,IAAK,MAAMN,KAAOk8P,EACZl8P,aAAe3B,IAAO08P,EAAc/7P,IAAIgB,KAASm8P,EAAcn9P,IAAIgB,EAAIxJ,cACzE2lQ,EAAc37P,IAAIR,EAAIxJ,YACtBukQ,EAAcltQ,IAAImS,GAAKm7P,SAAS5vQ,KAAK4wQ,GAG3C,CACF,CAIAC,CAAcxB,EAAO/sQ,IAAI,aAClB,CACLnB,KAAoC,iBAAvBkuQ,EAAO/sQ,IAAI,QAAuB0M,EAAkBqgQ,EAAO/sQ,IAAI,SAAW,KACvFwuQ,QAA0C,iBAA1BzB,EAAO/sQ,IAAI,WAA0B0M,EAAkBqgQ,EAAO/sQ,IAAI,YAAc,KAChGyuQ,UAAW1B,EAAO/sQ,IAAI,uBAAwBwP,GAAOu9P,EAAO/sQ,IAAI,aAAanB,KAAO,KACpFV,GAAIuvQ,EAAWX,EAAO/sQ,IAAI,OAC1B1B,IAAKovQ,EAAWX,EAAO/sQ,IAAI,QAC3By3D,MAAOo2M,EAAWd,EAAO/sQ,IAAI,UAC7Bi+M,OAAQ,IAAIivD,GAEhB,CACA,iBAAAwB,CAAkB9/P,EAAM,MACtBzS,KAAKquQ,gBAAkB57P,CACzB,CACA,qBAAI+/P,GACF,OAAgC,OAAzBxyQ,KAAKquQ,eACd,CACA,eAAIoE,GACF,MAAM3uQ,EAAM9D,KAAKouQ,kBAAkBvqQ,IAAI,SACvC,IAAK2W,OAAOC,UAAU3W,GACpB,MAAM,IAAI6F,EAAY,+DAExB,OAAOjB,EAAO1I,KAAM,cAAe8D,EACrC,CACA,YAAIsrD,GACF,OAAOpvD,KAAKwyQ,kBAAoBxyQ,KAAKquQ,gBAAkBruQ,KAAKyyQ,WAC9D,CACA,gBAAIC,GACF,MAAM5uQ,EAAM9D,KAAK2yQ,aACfC,EAAQlvQ,OAAOwP,OAAO,MACxB,GAAIpP,aAAe8/P,GACjB,IAAK,MAAOpgQ,EAAKmF,KAAU7E,EAAIu/P,SAAU,CACvC,MAAMr9O,EAAO6nP,GAAUllQ,GACnBqd,IACF4sP,EAAMriQ,EAAkB/M,IAAQwiB,EAEpC,MACK,GAAIliB,aAAe0P,GACxB,IAAK,MAAOhQ,EAAKmF,KAAU7E,EAAK,CAC9B,MAAMkiB,EAAO6nP,GAAUllQ,GACnBqd,IACF4sP,EAAMpvQ,GAAOwiB,EAEjB,CAEF,OAAOtd,EAAO1I,KAAM,eAAgB4yQ,EACtC,CACA,cAAAC,CAAeh3O,GACb,MAAM/3B,EAAM9D,KAAK2yQ,aACjB,GAAI7uQ,aAAe8/P,GAAU,CAC3B,MAAM59O,EAAO6nP,GAAU/pQ,EAAID,IAAIg4B,IAC/B,GAAI7V,EACF,OAAOA,EAET,MAAM8sP,EAAU9yQ,KAAK0yQ,aAAa72O,GAClC,GAAIi3O,EAEF,OADAtrQ,EAAK,UAAUq0B,gDACRi3O,CAEX,MAAO,GAAIhvQ,aAAe0P,GAAM,CAC9B,MAAMwS,EAAO6nP,GAAU/pQ,EAAID,IAAIg4B,IAC/B,GAAI7V,EACF,OAAOA,CAEX,CACA,OAAO,IACT,CACA,UAAA2sP,GACE,MAAM7uQ,EAAM9D,KAAKkuQ,SAASrqQ,IAAI,SAC9B,OAAIC,GAAKkR,IAAI,SACJ,IAAI4uP,GAAS9/P,EAAI6Q,OAAO,SAAU3U,KAAKyT,MACrCzT,KAAKkuQ,SAASl5P,IAAI,SACpBhV,KAAKkuQ,SAASrqQ,IAAI,cADpB,CAIT,CACA,cAAIkvQ,GACF,IAAIjvQ,EAAM,KACV,IACEA,EAAM9D,KAAKgzQ,iBACb,CAAE,MAAOjiQ,GACP,GAAIA,aAAcyI,GAChB,MAAMzI,EAERvJ,EAAK,8BACP,CACA,OAAOkB,EAAO1I,KAAM,aAAc8D,EACpC,CACA,eAAAkvQ,GACE,MAAMlvQ,EAAM9D,KAAKkuQ,SAASv5P,OAAO,cACjC,IAAK7Q,EACH,OAAO,KAET,MAAMivQ,EAAa,IAAI3xQ,MAAMpB,KAAKovD,UAClC,IAAIoqL,EAAQ,KACVy5B,EAAS,GACX,MACM1I,EADa,IAAI1G,GAAW//P,EAAK9D,KAAKyT,MACpB4vP,SACxB,IAAI6P,EAAe,GACjBrkO,EAAe,EACjB,IAAK,IAAIvtC,EAAI,EAAG0P,EAAKhR,KAAKovD,SAAU9tD,EAAI0P,EAAI1P,IAAK,CAC/C,MAAM6xQ,EAAY5I,EAAK1mQ,IAAIvC,GAC3B,QAAkB8B,IAAd+vQ,EAAyB,CAC3B,KAAMA,aAAqB3/P,IACzB,MAAM,IAAI7J,EAAY,kCAExB,GAAIwpQ,EAAUn+P,IAAI,UAAY+B,GAAOo8P,EAAUtvQ,IAAI,QAAS,aAC1D,MAAM,IAAI8F,EAAY,yCAExB,GAAIwpQ,EAAUn+P,IAAI,KAAM,CACtB,MAAMye,EAAI0/O,EAAUtvQ,IAAI,KACxB,KAAM4vB,aAAapgB,IACjB,MAAM,IAAI1J,EAAY,0CAExB6vO,EAAQ/lN,EAAE/wB,IACZ,MACE82O,EAAQ,KAEV,GAAI25B,EAAUn+P,IAAI,KAAM,CACtB,MAAM1H,EAAI6lQ,EAAUtvQ,IAAI,KACxB,GAAiB,iBAANyJ,EACT,MAAM,IAAI3D,EAAY,2CAExBspQ,EAAS1iQ,EAAkBjD,EAC7B,MACE2lQ,EAAS,GAEX,GAAIE,EAAUn+P,IAAI,MAAO,CACvB,MAAMo+P,EAAKD,EAAUtvQ,IAAI,MACzB,KAAM2W,OAAOC,UAAU24P,IAAOA,GAAM,GAClC,MAAM,IAAIzpQ,EAAY,0CAExBklC,EAAeukO,CACjB,MACEvkO,EAAe,CAEnB,CACA,OAAQ2qM,GACN,IAAK,IACH05B,EAAerkO,EACf,MACF,IAAK,IACL,IAAK,IACHqkO,EAAe74P,GAAgBw0B,EAAwB,MAAV2qM,GAC7C,MACF,IAAK,IACL,IAAK,IACH,MAAM65B,EAAQ,GAGRC,EAAyB,MAAV95B,EADJ,GADI,GAGf+5B,EAAc1kO,EAAe,EAEnCqkO,EADkBlpQ,OAAOC,aAAaqpQ,EAAeC,EAAcF,GAC1C14P,OAAOvQ,KAAK6W,MAAMsyP,EAAcF,GAAS,GAClE,MACF,QACE,GAAI75B,EACF,MAAM,IAAI7vO,EAAY,kBAAkB6vO,+BAE1C05B,EAAe,GAEnBH,EAAWzxQ,GAAK2xQ,EAASC,EACzBrkO,GACF,CACA,OAAOkkO,CACT,CACA,cAAIS,GACF,MAAM1vQ,EAAM9D,KAAKkuQ,SAASrqQ,IAAI,cAC9B,IAAI2vQ,EAAa,GACjB,GAAI1vQ,aAAeuP,GACjB,OAAQvP,EAAIpB,MACV,IAAK,aACL,IAAK,YACL,IAAK,gBACL,IAAK,iBACL,IAAK,cACL,IAAK,eACH8wQ,EAAa1vQ,EAAIpB,KAGvB,OAAOgG,EAAO1I,KAAM,aAAcwzQ,EACpC,CACA,YAAIC,GACF,MAAM3vQ,EAAM9D,KAAKkuQ,SAASrqQ,IAAI,YAC9B,IAAI4vQ,EAAW,UACf,GAAI3vQ,aAAeuP,GACjB,OAAQvP,EAAIpB,MACV,IAAK,UACL,IAAK,cACL,IAAK,YACL,IAAK,aACL,IAAK,QACL,IAAK,iBACH+wQ,EAAW3vQ,EAAIpB,KAGrB,OAAOgG,EAAO1I,KAAM,WAAYyzQ,EAClC,CACA,qBAAIC,GACF,MAAM5vQ,EAAM9D,KAAKkuQ,SAASrqQ,IAAI,qBAC9B,KAAMC,aAAe0P,IACnB,OAAO9K,EAAO1I,KAAM,oBAAqB,MAE3C,IAAI2zQ,EAAQ,KACZ,IAAK,MAAMnwQ,KAAOM,EAAI8Q,UAAW,CAC/B,MAAMjM,EAAQ7E,EAAID,IAAIL,GACtB,IAAIowQ,EACJ,OAAQpwQ,GACN,IAAK,cACL,IAAK,cACL,IAAK,eACL,IAAK,YACL,IAAK,eACL,IAAK,kBACL,IAAK,oBACkB,kBAAVmF,IACTirQ,EAAYjrQ,GAEd,MACF,IAAK,wBACH,GAAIA,aAAiB0K,GACnB,OAAQ1K,EAAMjG,MACZ,IAAK,UACL,IAAK,cACL,IAAK,YACL,IAAK,QACHkxQ,EAAYjrQ,EAAMjG,KAClB,MACF,QACEkxQ,EAAY,UAGlB,MACF,IAAK,YACH,GAAIjrQ,aAAiB0K,GACnB,OAAQ1K,EAAMjG,MACZ,IAAK,MACL,IAAK,MACHkxQ,EAAYjrQ,EAAMjG,KAClB,MACF,QACEkxQ,EAAY,MAGlB,MACF,IAAK,WACL,IAAK,WACL,IAAK,YACL,IAAK,YACH,GAAIjrQ,aAAiB0K,GACnB,OAAQ1K,EAAMjG,MACZ,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,SACHkxQ,EAAYjrQ,EAAMjG,KAClB,MACF,QACEkxQ,EAAY,UAGlB,MACF,IAAK,eACH,GAAIjrQ,aAAiB0K,GACnB,OAAQ1K,EAAMjG,MACZ,IAAK,OACL,IAAK,aACHkxQ,EAAYjrQ,EAAMjG,KAClB,MACF,QACEkxQ,EAAY,aAGlB,MACF,IAAK,SACH,GAAIjrQ,aAAiB0K,GACnB,OAAQ1K,EAAMjG,MACZ,IAAK,UACL,IAAK,sBACL,IAAK,qBACHkxQ,EAAYjrQ,EAAMjG,KAClB,MACF,QACEkxQ,EAAY,OAGlB,MACF,IAAK,iBACCxyQ,MAAMsT,QAAQ/L,IAAUA,EAAMpI,OAAS,GAAM,GAC/BoI,EAAM2S,OAAM,CAAC4vP,EAAM5pQ,EAAGiR,IAAQiI,OAAOC,UAAUywP,IAASA,EAAO,IAAY,IAAN5pQ,GAAW4pQ,GAAQ34P,EAAIjR,EAAI,KAAO4pQ,GAAQlrQ,KAAKovD,aAElIwkN,EAAYjrQ,GAGhB,MACF,IAAK,YACC6R,OAAOC,UAAU9R,IAAUA,EAAQ,IACrCirQ,EAAYjrQ,GAEd,MACF,QACEnB,EAAK,mDAAmDhE,MACxD,cAEcJ,IAAdwwQ,GAICD,IACHA,EAAQjwQ,OAAOwP,OAAO,OAExBygQ,EAAMnwQ,GAAOowQ,GANXpsQ,EAAK,uBAAuBhE,6BAA+BmF,KAO/D,CACA,OAAOD,EAAO1I,KAAM,oBAAqB2zQ,EAC3C,CACA,cAAIE,GACF,MAAM/vQ,EAAM9D,KAAKkuQ,SAASrqQ,IAAI,cACxBgwQ,EAAanwQ,OAAOwP,OAAO,MACjC,GAAIpP,aAAe0P,GAAM,CACvB,MAAMu8P,EAAW,IAAIv8P,GAAKxT,KAAKyT,MAC/Bs8P,EAASh7P,IAAI,IAAKjR,GAClB,MAAMksQ,EAAY,CAChBnoQ,IAAK,KACLme,KAAM,KACN9I,OAAQ,MAEV+wP,GAAQ6B,oBAAoB,CAC1BC,WACAC,cAEE5uQ,MAAMsT,QAAQs7P,EAAUhqP,MAC1B6tP,EAAW7tP,KAAOgqP,EAAUhqP,KACnBgqP,EAAU9yP,SACnB22P,EAAW32P,OAAS8yP,EAAU9yP,OAElC,MAAW9b,MAAMsT,QAAQ5Q,KACvB+vQ,EAAW7tP,KAAOliB,GAEpB,OAAO4E,EAAO1I,KAAM,aAAc8K,EAAW+oQ,GAAc,EAAIA,EAAa,KAC9E,CACA,eAAI1D,GACF,MAAMrsQ,EAAM9D,KAAKkuQ,SAASrqQ,IAAI,SAC9B,IAAIssQ,EAAc,KAClB,GAAIrsQ,aAAe0P,IAAQ1P,EAAIkR,IAAI,iBAAkB,CACnD,MAAM8+P,EAAW,IAAIlQ,GAAS9/P,EAAI6Q,OAAO,iBAAkB3U,KAAKyT,MAChE,IAAK,MAAOjQ,EAAKmF,KAAUmrQ,EAASzQ,SAAU,CAC5C,MAAMa,EAAK,IAAIF,GAASr7P,EAAO3I,KAAKyT,MAC/B08P,IACHA,EAAczsQ,OAAOwP,OAAO,OAE9Bi9P,EAAY5/P,EAAkB/M,IAAQ0gQ,EAAGK,YAC3C,CACF,CACA,OAAO77P,EAAO1I,KAAM,cAAemwQ,EACrC,CACA,aAAI4D,GACF,MAAMjwQ,EAAM9D,KAAKkuQ,SAASrqQ,IAAI,SAC9B,IAAIkwQ,EAAY,KAChB,GAAIjwQ,aAAe0P,IAAQ1P,EAAIkR,IAAI,aAAc,CAC/C,MAAM8+P,EAAW,IAAIlQ,GAAS9/P,EAAI6Q,OAAO,aAAc3U,KAAKyT,MAC5D,IAAK,MAAOjQ,EAAKmF,KAAUmrQ,EAASzQ,SAC7B0Q,IACHA,EAAY,IAAIvgQ,GAAKxT,KAAKyT,OAE5BsgQ,EAAUh/P,IAAIxE,EAAkB/M,GAAMmF,EAE1C,CACA,OAAOD,EAAO1I,KAAM,YAAa+zQ,EACnC,CACA,kBAAAC,GACE,MAAMlwQ,EAAM9D,KAAKkuQ,SAASrqQ,IAAI,SAC9B,IAAIowQ,EAAa,KACjB,SAASC,EAAuBxxQ,EAAMyxQ,GACpC,KAAMA,aAAkB3gQ,IACtB,OAEF,IAAKuD,GAAOo9P,EAAOtwQ,IAAI,KAAM,cAC3B,OAEF,IAAI+Y,EAAKu3P,EAAOtwQ,IAAI,MACpB,GAAI+Y,aAActF,GAChBsF,EAAKA,EAAGhE,iBACH,GAAkB,iBAAPgE,EAChB,OAEFA,EAAKrM,EAAkBqM,GAAI9L,WAAW,KAAQ,IAC1C8L,IACDq3P,IAAe,IAAItgQ,KAAOoB,IAAIrS,EAAMka,EAEzC,CACA,GAAI9Y,aAAe0P,IAAQ1P,EAAIkR,IAAI,cAAe,CAChD,MAAM8+P,EAAW,IAAIlQ,GAAS9/P,EAAI6Q,OAAO,cAAe3U,KAAKyT,MAC7D,IAAK,MAAOjQ,EAAKmF,KAAUmrQ,EAASzQ,SAClC6Q,EAAuB3jQ,EAAkB/M,GAAMmF,EAEnD,CACA,MAAMkrQ,EAAa7zQ,KAAKkuQ,SAASrqQ,IAAI,cAIrC,OAHIgwQ,GACFK,EAAuB,aAAcL,GAEhCI,CACT,CACA,aAAIG,GACF,MAAMH,EAAaj0Q,KAAKg0Q,qBACxB,IAAIj3P,EAAUF,GAAe7c,KAAKyT,KAAMzT,KAAKkuQ,SAAUznQ,GACvD,GAAIwtQ,EAAY,CACdl3P,IAAYrZ,OAAOwP,OAAO,MAC1B,IAAK,MAAO1P,EAAK0pB,KAAQ+mP,EACnBzwQ,KAAOuZ,EACTA,EAAQvZ,GAAKjC,KAAK2rB,GAElBnQ,EAAQvZ,GAAO,CAAC0pB,EAGtB,CACA,OAAOxkB,EAAO1I,KAAM,YAAa+c,EACnC,CACA,kBAAMs3P,CAAax4O,EAAIotN,GACrB,MAAMqrB,QAAwB5hQ,QAAQ++O,IAAIzxP,KAAKkpP,WAC/C,IAAK,MAAMmG,KAAkBilB,EAC3B,GAAIjlB,EAAe5uC,aAAe5kL,EAEhC,YADAwzN,EAAe3zO,SAASutO,EAI9B,CACA,aAAMljM,CAAQwuN,GAAoB,GAChCzQ,KACA9jQ,KAAKqpP,iBAAiBzzO,MAAM2+P,GAC5Bv0Q,KAAKsuQ,mBAAmB14P,QACxB5V,KAAKuuQ,eAAe34P,QACpB5V,KAAKwuQ,cAAc54P,QACnB5V,KAAK8pP,iBAAiBl0O,QACtB,MAAM0+P,QAAwB5hQ,QAAQ++O,IAAIzxP,KAAKkpP,WAC/C,IAAK,MAAM,KACTzzO,KACG6+P,SACI7+P,EAAK+S,SAEdxoB,KAAKkpP,UAAUtzO,QACf5V,KAAKmpP,iBAAiBvzO,QACtB5V,KAAKopP,sBAAsBxzO,QAC3B5V,KAAKg7O,gBAAgBplO,OACvB,CACA,iBAAM4+P,CAAYp1P,GAChB,MAAMq1P,EAAe,CAACz0Q,KAAKouQ,mBACrBsG,EAAe,IAAIv+P,GACnBw+P,EAAW30Q,KAAKkuQ,SAASv5P,OAAO,SAClCggQ,aAAoBtgQ,IACtBqgQ,EAAan+P,IAAIo+P,GAEnB,MAAMlhQ,EAAOzT,KAAKyT,KAChB66P,EAAqBtuQ,KAAKsuQ,mBAC1BC,EAAiBvuQ,KAAKuuQ,eACtBC,EAAgBxuQ,KAAKwuQ,cACvB,IAAIoG,EAAmB,EACvB,KAAOH,EAAal0Q,QAAQ,CAC1B,MAAMs0Q,EAAcJ,EAAanjO,MACjC,GAAIujO,aAAuBxgQ,GAAK,CAC9B,MAAM8R,EAAQmoP,EAAmBzqQ,IAAIgxQ,GACrC,GAAI1uP,GAAS,GAAKyuP,EAAmBzuP,GAAS/G,EAAW,CACvDw1P,GAAoBzuP,EACpB,QACF,CACA,GAAIuuP,EAAa1/P,IAAI6/P,GACnB,MAAM,IAAIlrQ,EAAY,2CAExB+qQ,EAAan+P,IAAIs+P,GACjB,MAAM/wQ,QAAa0qQ,EAAc3qQ,IAAIgxQ,IAAgBphQ,EAAKe,WAAWqgQ,IACrE,GAAI/wQ,aAAe0P,GAAM,CACvB,IAAIjP,EAAOT,EAAI6Q,OAAO,QAItB,GAHIpQ,aAAgB8P,KAClB9P,QAAakP,EAAKe,WAAWjQ,IAE3BwS,GAAOxS,EAAM,UAAYT,EAAIkR,IAAI,QAAS,CAO5C,GANKs5P,EAAmBt5P,IAAI6/P,IAC1BvG,EAAmB/3P,IAAIs+P,EAAa,GAEjCtG,EAAev5P,IAAI6/P,IACtBtG,EAAeh4P,IAAIs+P,EAAaD,GAE9BA,IAAqBx1P,EACvB,MAAO,CAACtb,EAAK+wQ,GAEfD,IACA,QACF,CACF,CACAH,EAAalzQ,KAAKuC,GAClB,QACF,CACA,KAAM+wQ,aAAuBrhQ,IAC3B,MAAM,IAAI7J,EAAY,iEAExB,MAAM,MACJiK,GACEihQ,EACJ,IAAI1uP,EAAQ0uP,EAAYlgQ,OAAO,SAI/B,GAHIwR,aAAiB9R,KACnB8R,QAAc1S,EAAKe,WAAW2R,IAE5B3L,OAAOC,UAAU0L,IAAUA,GAAS,IAClCvS,IAAU06P,EAAmBt5P,IAAIpB,IACnC06P,EAAmB/3P,IAAI3C,EAAOuS,GAE5ByuP,EAAmBzuP,GAAS/G,GAAW,CACzCw1P,GAAoBzuP,EACpB,QACF,CAEF,IAAIm9O,EAAOuR,EAAYlgQ,OAAO,QAI9B,GAHI2uP,aAAgBjvP,KAClBivP,QAAa7vP,EAAKe,WAAW8uP,KAE1BliQ,MAAMsT,QAAQ4uP,GAAO,CACxB,IAAI/+P,EAAOswQ,EAAYlgQ,OAAO,QAI9B,GAHIpQ,aAAgB8P,KAClB9P,QAAakP,EAAKe,WAAWjQ,IAE3BwS,GAAOxS,EAAM,UAAYswQ,EAAY7/P,IAAI,QAAS,CACpD,GAAI4/P,IAAqBx1P,EACvB,MAAO,CAACy1P,EAAa,MAEvBD,IACA,QACF,CACA,MAAM,IAAIjrQ,EAAY,+CACxB,CACA,IAAK,IAAIqnB,EAAOsyO,EAAK/iQ,OAAS,EAAGywB,GAAQ,EAAGA,IAAQ,CAClD,MAAM8jP,EAAUxR,EAAKtyO,GACrByjP,EAAalzQ,KAAKuzQ,GACdD,IAAgB70Q,KAAKouQ,mBAAqB0G,aAAmBzgQ,KAAQm6P,EAAcx5P,IAAI8/P,IACzFtG,EAAcj4P,IAAIu+P,EAASrhQ,EAAKe,WAAWsgQ,GAE/C,CACF,CACA,MAAM,IAAIr1Q,MAAM,cAAc2f,eAChC,CACA,qBAAM21P,CAAgBvrN,GAAe,GACnC,MAAM,aACJy+L,GACEjoP,KAAKwpQ,WAAWxb,iBACd7tP,EAAQ,CAAC,CACb00Q,YAAa70Q,KAAKouQ,kBAClB4G,UAAW,IAEPN,EAAe,IAAIv+P,GACnBw+P,EAAW30Q,KAAKkuQ,SAASv5P,OAAO,SAClCggQ,aAAoBtgQ,IACtBqgQ,EAAan+P,IAAIo+P,GAEnB,MAAM14P,EAAM,IAAItI,IACdF,EAAOzT,KAAKyT,KACZ86P,EAAiBvuQ,KAAKuuQ,eACxB,IAAInvP,EAAY,EAOhB,SAAS61P,EAAah3N,GACpB,GAAIA,aAAiBvkC,KAAuB8vC,EAC1C,MAAMvL,EAEJuL,GAAgBy+L,GAA8B,IAAd7oO,IAClC5X,EAAK,mDAAmDy2C,OACxDA,EAAQzqC,GAAK0B,OAEf+G,EAAIlH,IAAIqK,IAAa,CAAC6+B,EAAO,MAC/B,CACA,KAAO99C,EAAMI,OAAS,GAAG,CACvB,MAAM20Q,EAAY/0Q,EAAMi9B,IAAI,IACtB,YACJy3O,EAAW,UACXG,GACEE,EACJ,IAAI5R,EAAOuR,EAAYlgQ,OAAO,QAC9B,GAAI2uP,aAAgBjvP,GAClB,IACEivP,QAAa7vP,EAAKe,WAAW8uP,EAC/B,CAAE,MAAOvyP,GACPkkQ,EAAalkQ,GACb,KACF,CAEF,IAAK3P,MAAMsT,QAAQ4uP,GAAO,CACxB2R,EAAa,IAAItrQ,EAAY,iDAC7B,KACF,CACA,GAAIqrQ,GAAa1R,EAAK/iQ,OAAQ,CAC5BJ,EAAMmxC,MACN,QACF,CACA,MAAM6jO,EAAS7R,EAAK0R,GACpB,IAAIlxQ,EACJ,GAAIqxQ,aAAkB9gQ,GAAK,CACzB,GAAIqgQ,EAAa1/P,IAAImgQ,GAAS,CAC5BF,EAAa,IAAItrQ,EAAY,4CAC7B,KACF,CACA+qQ,EAAan+P,IAAI4+P,GACjB,IACErxQ,QAAY2P,EAAKe,WAAW2gQ,EAC9B,CAAE,MAAOpkQ,GACPkkQ,EAAalkQ,GACb,KACF,CACF,MACEjN,EAAMqxQ,EAER,KAAMrxQ,aAAe0P,IAAO,CAC1ByhQ,EAAa,IAAItrQ,EAAY,kEAC7B,KACF,CACA,IAAIpF,EAAOT,EAAI6Q,OAAO,QACtB,GAAIpQ,aAAgB8P,GAClB,IACE9P,QAAakP,EAAKe,WAAWjQ,EAC/B,CAAE,MAAOwM,GACPkkQ,EAAalkQ,GACb,KACF,CAEEgG,GAAOxS,EAAM,UAAYT,EAAIkR,IAAI,SArElB01P,EAsEL5mQ,GAtEeqlQ,EAsEVgM,aAAkB9gQ,GAAM8gQ,EAAS,QArEpC5G,EAAev5P,IAAIm0P,IACjCoF,EAAeh4P,IAAI4yP,EAAS/pP,GAE9BnD,EAAIlH,IAAIqK,IAAa,CAACsrP,EAAUvB,KAoE9BhpQ,EAAMoB,KAAK,CACTszQ,YAAa/wQ,EACbkxQ,UAAW,IAGfE,EAAUF,WACZ,CA9EA,IAAqBtK,EAAUvB,EA+E/B,OAAOltP,CACT,CACA,YAAAm5P,CAAajM,GACX,MAAMkM,EAAkBr1Q,KAAKuuQ,eAAe1qQ,IAAIslQ,GAChD,QAAwB/lQ,IAApBiyQ,EACF,OAAO3iQ,QAAQG,QAAQwiQ,GAEzB,MAAM5hQ,EAAOzT,KAAKyT,KAyDlB,IAAIuR,EAAQ,EACZ,MAAM+P,EAAO/e,GAzDb,SAAwBq2P,GACtB,IACEC,EADEtnP,EAAQ,EAEZ,OAAOvR,EAAKe,WAAW63P,GAAQ/oP,MAAK,SAAUsqB,GAC5C,GAAIz2B,GAAYk1P,EAAQlD,KAAajyP,GAAO02B,EAAM,WAAaA,aAAgBp6B,KAASo6B,EAAK54B,IAAI,SAAW44B,EAAK54B,IAAI,aACnH,MAAM,IAAIrL,EAAY,uDAExB,IAAKikC,EACH,OAAO,KAET,KAAMA,aAAgBp6B,IACpB,MAAM,IAAI7J,EAAY,8BAGxB,OADA2iQ,EAAY1+N,EAAKj5B,OAAO,UACjBi5B,EAAKr5B,SAAS,SACvB,IAAG+O,MAAK,SAAUlN,GAChB,IAAKA,EACH,OAAO,KAET,KAAMA,aAAkB5C,IACtB,MAAM,IAAI7J,EAAY,gCAExB,OAAOyM,EAAO7B,SAAS,OACzB,IAAG+O,MAAK,SAAUggP,GAChB,IAAKA,EACH,OAAO,KAET,MAAMgS,EAAc,GACpB,IAAI7oN,GAAQ,EACZ,IAAK,MAAM82M,KAAOD,EAAM,CACtB,KAAMC,aAAelvP,IACnB,MAAM,IAAI1K,EAAY,4BAExB,GAAIwN,GAAYosP,EAAK8I,GAAS,CAC5B5/M,GAAQ,EACR,KACF,CACA6oN,EAAY/zQ,KAAKkS,EAAKe,WAAW+uP,GAAKjgP,MAAK,SAAUxf,GACnD,KAAMA,aAAe0P,IACnB,MAAM,IAAI7J,EAAY,kCAEpB7F,EAAIkR,IAAI,SACVgQ,GAASlhB,EAAID,IAAI,SAEjBmhB,GAEJ,IACF,CACA,IAAKynC,EACH,MAAM,IAAI9iD,EAAY,6CAExB,OAAO+I,QAAQ++O,IAAI6jB,GAAahyP,MAAK,WACnC,MAAO,CAAC0B,EAAOsnP,EACjB,GACF,GACF,CAEoBiJ,CAAev/P,GAAKsN,MAAKniB,IAC3C,IAAKA,EAEH,OADAnB,KAAKuuQ,eAAeh4P,IAAI4yP,EAASnkP,GAC1BA,EAET,MAAOmB,EAAOmmP,GAAanrQ,EAE3B,OADA6jB,GAASmB,EACF4O,EAAKu3O,EAAU,IAExB,OAAOv3O,EAAKo0O,EACd,CACA,WAAIrhQ,GACF,MAAM0tQ,EAAMx1Q,KAAKkuQ,SAASrqQ,IAAI,OAC9B,GAAI2xQ,aAAehiQ,GAAM,CACvB,MAAM4X,EAAOoqP,EAAI3xQ,IAAI,QACrB,GAAoB,iBAATunB,EAAmB,CAC5B,MAAM9iB,EAAcV,EAAuBwjB,EAAM,KAAM,CACrDhjB,oBAAoB,IAEtB,GAAIE,EACF,OAAOI,EAAO1I,KAAM,UAAWsI,EAAYmtQ,KAE/C,CACF,CACA,OAAO/sQ,EAAO1I,KAAM,UAAWA,KAAKwpQ,WAAWyG,WACjD,CACA,0BAAOH,EAAoB,SACzBC,EAAQ,UACRC,EAAS,WACTC,EAAa,KAAI,eACjBC,EAAiB,OAEjB,KAAMH,aAAoBv8P,IAExB,YADAhM,EAAK,yDAGP,IACEK,EACAme,EAFE9I,EAAS6yP,EAASlsQ,IAAI,KAiB1B,GAdMqZ,aAAkB1J,KAClBu8P,EAAS/6P,IAAI,QACfkI,EAAS6yP,EAASlsQ,IAAI,SAEtBqZ,EAAS6yP,EAASlsQ,IAAI,MAClBqZ,aAAkB1J,KAChB0J,EAAOlI,IAAI,KACbkI,EAASA,EAAOrZ,IAAI,KACXqZ,EAAOlI,IAAI,OACpBkI,EAASA,EAAOrZ,IAAI,SAKxBqZ,aAAkB1J,GAAM,CAC1B,MAAMkiQ,EAAax4P,EAAOrZ,IAAI,KAC9B,KAAM6xQ,aAAsBriQ,IAE1B,YADA7L,EAAK,2DAGP,MAAMmuQ,EAAaD,EAAWhzQ,KAC9B,OAAQizQ,GACN,IAAK,YACH,MAAMhzO,EAAQzlB,EAAOrZ,IAAI,SACnB+xQ,IAAqD,GAAxB,iBAAVjzO,EAAqBA,EAAQ,IAChDitL,EAAS,GACT4hD,EAAO,GACb,IAAK,MAAM1tQ,KAAOoZ,EAAOrZ,IAAI,WAAa,GACpCC,aAAeuQ,GACjBm9P,EAAKjwQ,KAAKuC,EAAI0I,YACU,iBAAR1I,GAChB8rN,EAAOruN,KAAKgP,EAAkBzM,IAGlCksQ,EAAU6F,UAAY,CACpBjmD,SACA4hD,OACAoE,WAEF,MACF,IAAK,MACH/tQ,EAAMqV,EAAOrZ,IAAI,OACbgE,aAAewL,KACjBxL,EAAM,IAAMA,EAAInF,MAElB,MACF,IAAK,OACHsjB,EAAO9I,EAAOrZ,IAAI,KAClB,MACF,IAAK,SACL,IAAK,QACH,MAAMiyQ,EAAU54P,EAAOrZ,IAAI,KAC3B,GAAIiyQ,aAAmBtiQ,GAAM,CAC3B,MAAM0wP,EAAK,IAAIF,GAAS8R,EAAS,MAAM,IACjC,YACJtR,GACEN,EAAGK,aACP18P,EAAM28P,CACR,KAA8B,iBAAZsR,IAChBjuQ,EAAMiuQ,GAER,MAAMC,EAAajI,GAAgB5wP,GAC/B64P,GAA6B,iBAARluQ,IACvBA,EAAMA,EAAImU,MAAM,IAAK,GAAG,GAAK,IAAM+5P,GAErC,MAAMp3P,EAAYzB,EAAOrZ,IAAI,aACJ,kBAAd8a,IACTqxP,EAAUrxP,UAAYA,GAExB,MACF,IAAK,QACH,MAAMq3P,EAAS94P,EAAOrZ,IAAI,KAC1B,IAAIwsQ,EACJ,GAAIH,GAAkB8F,aAAkBxiQ,GAAM,CAC5C,MAAMyiQ,EAAeD,EAAOnyQ,IAAI,KAC1BnB,EAAOszQ,EAAOnyQ,IAAI,KACpBkT,GAAOk/P,EAAc,MAAwB,iBAATvzQ,IACtC2tQ,EAAaH,EAAe3/P,EAAkB7N,IAElD,CACA,GAAI2tQ,EAAY,CACdL,EAAUK,WAAaA,EACvB,MAAM6F,EAAiBpI,GAAgB5wP,GACnCg5P,IACFlG,EAAUkG,eAAiBA,EAE/B,MACE1uQ,EAAK,uDAEP,MACF,IAAK,QACH,MAAM2uQ,EAAcj5P,EAAOrZ,IAAI,KAC3BsyQ,aAAuB9iQ,KACzB28P,EAAU9yP,OAASi5P,EAAYzzQ,MAEjC,MACF,IAAK,cACH,MAAM6nD,EAAQrtC,EAAOrZ,IAAI,SACnBuyQ,EAAal5P,EAAOrZ,IAAI,cAC9B,IAAKzC,MAAMsT,QAAQ61C,IAA2B,IAAjBA,EAAMhqD,OACjC,MAEF,MAAM81Q,EAAW,GACjB,IAAK,MAAM9lO,KAAQga,EACjB,GAAIha,aAAgBl9B,GAClB,OAAQk9B,EAAK7tC,MACX,IAAK,KACL,IAAK,MACL,IAAK,SACH2zQ,EAAS90Q,KAAKgvC,EAAK7tC,WAGd6tC,aAAgBl8B,IACzBgiQ,EAAS90Q,KAAKgvC,EAAK/jC,YAGvB,GAAI6pQ,EAAS91Q,SAAWgqD,EAAMhqD,OAC5B,MAEFyvQ,EAAUO,YAAc,CACtBhmN,MAAO8rN,EACPD,WAAkC,kBAAfA,GAA2BA,GAEhD,MACF,IAAK,aACH,MAAME,EAAWp5P,EAAOrZ,IAAI,MAC5B,IAAI+Y,EACA05P,aAAoBh/P,GACtBsF,EAAK05P,EAAS19P,YACe,iBAAb09P,IAChB15P,EAAK05P,GAEP,MAAMC,EAAQ35P,GAAM6B,GAAalO,EAAkBqM,IACnD,GAAI25P,EAAO,CACT1uQ,EAAM0uQ,EAAM1uQ,IACZmoQ,EAAUrxP,UAAY43P,EAAM53P,UAC5B,KACF,CACF,QACE,GAAmB,eAAfg3P,GAA8C,eAAfA,EACjC,MAEFnuQ,EAAK,8CAA8CmuQ,OAGzD,MAAW5F,EAAS/6P,IAAI,UACtBgR,EAAO+pP,EAASlsQ,IAAI,SAEtB,GAAmB,iBAARgE,EAAkB,CAC3B,MAAMS,EAAcV,EAAuBC,EAAKooQ,EAAY,CAC1DjoQ,oBAAoB,EACpBI,oBAAoB,IAElBE,IACF0nQ,EAAUnoQ,IAAMS,EAAYmtQ,MAE9BzF,EAAUM,UAAYzoQ,CACxB,CACIme,IACEA,aAAgB3S,KAClB2S,EAAOA,EAAKtjB,MAEM,iBAATsjB,EACTgqP,EAAUhqP,KAAOzV,EAAkByV,GAC1BynP,GAAoBznP,KAC7BgqP,EAAUhqP,KAAOA,GAGvB,EAWF,SAASwwP,GAAY5oO,EAAM6mO,GACzB,GAAI7mO,aAAgBp6B,GAClBo6B,EAAOA,EAAK/4B,oBACP,GAAI+4B,aAAgBt2B,GACzBs2B,EAAOA,EAAKn4B,KAAKZ,oBACZ,IAAKzT,MAAMsT,QAAQk5B,GACxB,OAEF,IAAK,MAAM6oO,KAAY7oO,IAXAjlC,EAYD8tQ,aAXEpiQ,IAAO1L,aAAiB6K,IAAQ7K,aAAiB2O,IAAclW,MAAMsT,QAAQ/L,KAYjG8rQ,EAAalzQ,KAAKk1Q,GAbxB,IAAyB9tQ,CAgBzB,CACA,MAAM+tQ,GACJ,WAAAztQ,CAAYwM,EAAM1K,EAAM0I,GACtBzT,KAAKyV,KAAOA,EACZzV,KAAK+K,KAAOA,EACZ/K,KAAKyT,KAAOA,EACZzT,KAAK22Q,OAAS,IAChB,CACA,UAAMC,GACJ,GAAI52Q,KAAKyT,KAAKuO,OAAOxK,aACnB,OAEF,MAAM,KACJzM,EAAI,KACJ0K,GACEzV,KACJA,KAAK22Q,OAAS,IAAIxgQ,GAClB,MAAMs+P,EAAe,GACrB,IAAK,MAAMjxQ,KAAOuH,EAAM,CACtB,MAAM0rQ,EAAWhhQ,EAAKd,OAAOnR,QACZJ,IAAbqzQ,GACFhC,EAAalzQ,KAAKk1Q,EAEtB,CACA,OAAOz2Q,KAAK62Q,MAAMpC,EACpB,CACA,WAAMoC,CAAMpC,GACV,MAAMqC,EAAiB,GACjBC,EAAkB,GACxB,KAAOtC,EAAal0Q,QAAQ,CAC1B,IAAIs0Q,EAAcJ,EAAanjO,MAC/B,GAAIujO,aAAuBxgQ,GAAK,CAC9B,GAAIrU,KAAK22Q,OAAO3hQ,IAAI6/P,GAClB,SAEF,IACE70Q,KAAK22Q,OAAOpgQ,IAAIs+P,GAChBA,EAAc70Q,KAAKyT,KAAKa,MAAMugQ,EAChC,CAAE,MAAO9jQ,GACP,KAAMA,aAAcyI,IAAuB,CACzChS,EAAK,8CAA8CuJ,OACnD/Q,KAAK22Q,OAAS,KACd,MAAM,QACJp2P,GACEvgB,KAAKyT,KAAKuO,OACd,OAAOzB,EAAQgD,kBACjB,CACAuzP,EAAev1Q,KAAKszQ,GACpBkC,EAAgBx1Q,KAAK,CACnBmX,MAAO3H,EAAG2H,MACVC,IAAK5H,EAAG4H,KAEZ,CACF,CACA,GAAIk8P,aAAuBv9P,GAAY,CACrC,MAAMyc,EAAc8gP,EAAY37P,iBAChC,GAAI6a,EAAa,CACf,IAAIijP,GAAmB,EACvB,IAAK,MAAMh1P,KAAU+R,EACf/R,EAAOxK,eAGXw/P,GAAmB,EACnBD,EAAgBx1Q,KAAK,CACnBmX,MAAOsJ,EAAO/I,MACdN,IAAKqJ,EAAOrJ,OAGZq+P,GACFF,EAAev1Q,KAAKszQ,EAExB,CACF,CACA2B,GAAY3B,EAAaJ,EAC3B,CACA,GAAIsC,EAAgBx2Q,OAAQ,OACpBP,KAAKyT,KAAKuO,OAAOzB,QAAQkE,cAAcsyP,GAC7C,IAAK,MAAMnpO,KAAQkpO,EACblpO,aAAgBv5B,IAClBrU,KAAK22Q,OAAOlgQ,OAAOm3B,GAGvB,OAAO5tC,KAAK62Q,MAAMC,EACpB,CACA92Q,KAAK22Q,OAAS,IAEhB,EAIF,MAAMM,GAAoBlkQ,SACpBmkQ,GAAWnkQ,SACXokQ,GAAepkQ,SACfqkQ,GAAkBrkQ,SAClBskQ,GAAStkQ,SACTukQ,GAAavkQ,SACbwkQ,GAAWxkQ,SACXykQ,GAASzkQ,SACT0kQ,GAAY1kQ,SACZ2kQ,GAAW3kQ,OAAO,WAClB4kQ,GAAQ5kQ,OAAO,QACf6kQ,GAAQ7kQ,SACR8kQ,GAAS9kQ,OAAO,SAChB+kQ,GAAY/kQ,SACZglQ,GAAahlQ,SACbilQ,GAAkBjlQ,SAClBklQ,GAAiBllQ,SACjBmlQ,GAAqBnlQ,SACrBolQ,GAAsBplQ,SACtBqlQ,GAAqBrlQ,SACrBslQ,GAAuBtlQ,SACvBulQ,GAAgBvlQ,SAChBwlQ,GAAYxlQ,SACZylQ,GAA2BzlQ,SAC3B0lQ,GAAe1lQ,SACf2lQ,GAAwB3lQ,SACxB4lQ,GAAe5lQ,SACf6lQ,GAAoB7lQ,SACpB8lQ,GAAa9lQ,SACb+lQ,GAAmB/lQ,SACnBgmQ,GAAchmQ,SACdimQ,GAAoBjmQ,SACpBkmQ,GAAOlmQ,SACPmmQ,GAAWnmQ,SACXomQ,GAAYpmQ,SACZqmQ,GAAcrmQ,SACdsmQ,GAActmQ,SACdumQ,GAAevmQ,SACfwmQ,GAAgBxmQ,SAChBymQ,GAAgBzmQ,SAChB0mQ,GAAgB1mQ,SAChB2mQ,GAAoB3mQ,SACpB4mQ,GAAiB5mQ,SACjB6mQ,GAAY7mQ,SACZ8mQ,GAAiB9mQ,SACjB+mQ,GAAe/mQ,OAAO,eACtBgnQ,GAAYhnQ,OAAO,YACnBinQ,GAAgBjnQ,SAChBknQ,GAAWlnQ,SACXmnQ,GAAgBnnQ,SAChBonQ,GAAUpnQ,SACVqnQ,GAAcrnQ,SACdsnQ,GAAWtnQ,SACXunQ,GAAYvnQ,SACZwnQ,GAAexnQ,SACfynQ,GAAQznQ,OAAO,QACf0nQ,GAAqB1nQ,SACrB2nQ,GAAc3nQ,SACd4nQ,GAAS5nQ,SACT6nQ,GAAoB7nQ,SACpB8nQ,GAAY9nQ,SACZ+nQ,GAAY/nQ,SACZgoQ,GAAQhoQ,SACRioQ,GAAWjoQ,SACXkoQ,GAAUloQ,SACVmoQ,GAAYnoQ,SACZooQ,GAAWpoQ,SACXqoQ,GAAOroQ,OAAO,OAGdsoQ,GAAkBtoQ,SAClBuoQ,GAAe,CACnB1K,OAAQ,CACN/0O,GAAI,EACJpC,MAAO8hP,GAAMA,EAAGtzQ,WAAW,mCAE7BuzQ,cAAe,CACb3/O,GAAI,EACJpC,MAAO8hP,GAAMA,EAAGtzQ,WAAW,kDAE7BwzQ,SAAU,CACR5/O,GAAI,EACJpC,MAAO8hP,GAAMA,EAAGtzQ,WAAW,wCAE7ByzQ,KAAM,CACJ7/O,GAAI,EACJpC,MAAO8hP,GAAMA,EAAGtzQ,WAAW,wCAE7B0zQ,UAAW,CACT9/O,GAAI,EACJpC,MAAO8hP,GAAMA,EAAGtzQ,WAAW,8CAE7B2zQ,IAAK,CACH//O,GAAI,EACJpC,MAAO8hP,GAAa,iCAAPA,GAEf9tD,UAAW,CACT5xL,GAAI,EACJpC,MAAO8hP,GAAa,uCAAPA,GAEfM,UAAW,CACThgP,GAAI,EACJpC,MAAO8hP,GAAMA,EAAGtzQ,WAAW,8CAE7B6zQ,WAAY,CACVjgP,GAAI,EACJpC,MAAO8hP,GAAa,yCAAPA,GAEfx9O,SAAU,CACRlC,GAAI,EACJpC,MAAO8hP,GAAMA,EAAGtzQ,WAAW,4CAE7B8zQ,IAAK,CACHlgP,GAAI,GACJpC,MAAO8hP,GAAMA,EAAGtzQ,WAAW,mCAE7B+zQ,IAAK,CACHngP,GAAI,GACJpC,MAAO8hP,GAAa,6BAAPA,GAEfU,KAAM,CACJpgP,GAAI,GACJpC,MAAO8hP,GAAa,8BAAPA,GAEfW,MAAO,CACLrgP,GAAI,GACJpC,MAAO8hP,GAAa,iCAAPA,GAEfY,QAAS,CACPtgP,GAAI,GACJpC,MAAO8hP,GAAa,iCAAPA,IAMXa,GAAgB,CACpBC,GAAItsQ,GAAKA,EACT4tP,GAAI5tP,GAAKA,EAAI,KAAO,GACpBusQ,GAAIvsQ,GAAKA,EAAI,KAAc,GAC3BwsQ,GAAIxsQ,GAAS,GAAJA,EACTysQ,GAAIzsQ,GAAKA,GAEL0sQ,GAAqB,uBAC3B,SAASC,GAAYhyQ,GACnB,OAAIA,EAAIzC,WAAW,MAAQyC,EAAIzC,WAAW,KACjCyC,EAAIkD,MAAM,GAAI,GAEhBlD,CACT,CACA,SAASiyQ,IAAW,KAClB5iQ,EAAI,aACJ6iQ,EAAY,SACZC,IAEA,IAAK9iQ,EACH,OAAO6iQ,EAET7iQ,EAAOA,EAAKyuP,OACZ,MAAMj8P,EAAI2J,SAAS6D,EAAM,IACzB,OAAKyE,MAAMjS,IAAMswQ,EAAStwQ,GACjBA,EAEFqwQ,CACT,CACA,SAASE,IAAS,KAChB/iQ,EAAI,aACJ6iQ,EAAY,SACZC,IAEA,IAAK9iQ,EACH,OAAO6iQ,EAET7iQ,EAAOA,EAAKyuP,OACZ,MAAMj8P,EAAIgS,WAAWxE,GACrB,OAAKyE,MAAMjS,IAAMswQ,EAAStwQ,GACjBA,EAEFqwQ,CACT,CACA,SAASG,IAAW,KAClBhjQ,EAAI,aACJ6iQ,EAAY,SACZC,IAEA,OAAK9iQ,GAID8iQ,EADJ9iQ,EAAOA,EAAKyuP,QAEHzuP,EAJA6iQ,CAOX,CACA,SAASI,GAAgBjjQ,EAAMhS,GAC7B,OAAOg1Q,GAAW,CAChBhjQ,OACA6iQ,aAAc70Q,EAAQ,GACtB80Q,SAAUrwP,GAAKzkB,EAAQ+D,SAAS0gB,IAEpC,CACA,SAASywP,GAAevyQ,EAAKwyQ,EAAM,KAEjC,GADAA,IAAQ,KACHxyQ,EACH,OAAOuyQ,GAAeC,GAExB,MAAM/0Q,EAAQuC,EAAI89P,OAAOrgQ,MAAMs0Q,IAC/B,IAAKt0Q,EACH,OAAO80Q,GAAeC,GAExB,MAAO,CAAEC,EAAUC,GAAQj1Q,EACrBQ,EAAQ4V,WAAW4+P,GACzB,GAAI3+P,MAAM7V,GACR,OAAOs0Q,GAAeC,GAExB,GAAc,IAAVv0Q,EACF,OAAO,EAET,MAAM00Q,EAAOjB,GAAcgB,GAC3B,OAAIC,EACKA,EAAK10Q,GAEPA,CACT,CACA,SAAS20Q,GAASvjQ,GAChB,IAAKA,EACH,MAAO,CACLtH,IAAK,EACL8qQ,IAAK,GAGT,MAAMn6G,EAAQrpJ,EAAKyuP,OAAOxsP,MAAM,WAAWC,KAAIlM,GAAKwO,WAAWxO,KAAIyjB,QAAOzjB,IAAMyO,MAAMzO,KAItF,GAHqB,IAAjBqzJ,EAAM7iK,QACR6iK,EAAM7hK,KAAK,GAEQ,IAAjB6hK,EAAM7iK,OACR,MAAO,CACLkS,IAAK,EACL8qQ,IAAK,GAGT,MAAO9qQ,EAAK8qQ,GAAOn6G,EACnB,MAAO,CACL3wJ,MACA8qQ,MAEJ,CACA,SAASC,GAAYzjQ,GACnB,OAAKA,EAGEA,EAAKyuP,OAAOxsP,MAAM,OAAOC,KAAInc,IAAK,CACvC29Q,SAAmB,MAAT39Q,EAAE,GACZ49Q,SAAU59Q,EAAEuc,UAAU,OAJf,EAMX,CAoDA,MAAMshQ,GACJ,kBAAWC,GACT,OAAOl1Q,EAAO1I,KAAM,UAAW,IAAI29Q,IAAW,EAAO,KAAM,KAAM,MACnE,CACA,gBAAWE,GACT,OAAOn1Q,EAAO1I,KAAM,QAAS,IAAI29Q,IAAW,EAAM,KAAM,KAAM,MAChE,CACA,WAAA10Q,CAAY60Q,EAASC,EAAMruD,EAAMsuD,GAC/Bh+Q,KAAK89Q,QAAUA,EACf99Q,KAAK+9Q,KAAOA,EACZ/9Q,KAAK0vN,KAAOA,EACZ1vN,KAAKg+Q,UAAYA,CACnB,CACA,OAAAC,GACE,QAASj+Q,KAAKg+Q,SAChB,CACA,gBAAOA,CAAUpwO,GACf,OAAO,IAAI+vO,IAAW,EAAO,KAAM,KAAM/vO,EAC3C,CACA,cAAOkwO,CAAQC,EAAMruD,EAAO,MAC1B,OAAO,IAAIiuD,IAAW,EAAMI,EAAMruD,EAAM,KAC1C,EAOF,MAAMwuD,GACJ,WAAAj1Q,CAAYk1Q,GACVn+Q,KAAKo+Q,MAAQ,IAAIzqQ,IACjB3T,KAAK80O,MAAQ,IAAInhO,IACjB3T,KAAK8+D,OAAS,IAAIxoD,IAClBtW,KAAKq+Q,YAAc,KACnBr+Q,KAAKwW,IAAI2nQ,EACX,CACA,GAAA3nQ,CAAI2nQ,EAAUG,EAAqB,MACjC,IAAK,MAAMC,KAAWJ,EACpBn+Q,KAAKw+Q,WAAWD,GAElB,IAAK,MAAMA,KAAWv+Q,KAAKo+Q,MAAMtpQ,SAC1BypQ,EAAQE,UACXF,EAAQE,QAAUF,EAAQrmD,QAAUqmD,EAAQtmD,MAAQsmD,EAAQG,YAGhE,IAAKJ,GAAkD,IAA5BA,EAAmBrqQ,KAC5C,OAEF,MAAM0qQ,EAAS3+Q,KAAKo+Q,MAAMv6Q,IAAI,4BAC9B,IAAK,MAAM+6Q,KAAWN,EACpBt+Q,KAAKo+Q,MAAMrpQ,IAAI6pQ,EAASD,EAE5B,CACA,UAAAH,CAAWD,GACT,MAAMtgQ,EAAcsgQ,EAAQtgQ,YACtBvb,EAAOub,EAAYN,WACzB,IAAI2kM,EAAOtiN,KAAKo+Q,MAAMv6Q,IAAInB,GACrB4/M,IACHA,EAAO5+M,OAAOwP,OAAO,MACrBlT,KAAKo+Q,MAAMrpQ,IAAIrS,EAAM4/M,GAChBtiN,KAAKq+Q,cACRr+Q,KAAKq+Q,YAAc/7D,IAGvB,IAAI5sM,EAAW,GACf,MAAMyI,EAAaI,WAAWN,EAAYE,YACE,IAAxCI,WAAWN,EAAYG,aACzB1I,EAAWyI,GAAc,IAAM,aAAe,SACrCA,GAAc,MACvBzI,EAAW,QAERA,KACC6oQ,EAAQ77Q,KAAKoJ,SAAS,SAAWyyQ,EAAQjpD,QAAQxpN,SAAS,WAC5D4J,EAAW,SAET6oQ,EAAQ77Q,KAAKoJ,SAAS,WAAayyQ,EAAQ77Q,KAAKm8Q,SAAS,OAASN,EAAQjpD,QAAQxpN,SAAS,WAAayyQ,EAAQjpD,QAAQupD,SAAS,SACnInpQ,GAAY,WAGXA,IACHA,EAAW,WAEb4sM,EAAK5sM,GAAY6oQ,CACnB,CACA,UAAAO,GACE,OAAO9+Q,KAAKq+Q,WACd,CACA,IAAAU,CAAKh/D,EAAUniM,GAAW,GACxB,IAAI0kM,EAAOtiN,KAAKo+Q,MAAMv6Q,IAAIk8M,IAAa//M,KAAK80O,MAAMjxO,IAAIk8M,GACtD,GAAIuC,EACF,OAAOA,EAET,MAAM69B,EAAU,8CAChB,IAAIz9O,EAAOq9M,EAASjvM,WAAWqvO,EAAS,IAExC,GADA79B,EAAOtiN,KAAKo+Q,MAAMv6Q,IAAInB,GAClB4/M,EAEF,OADAtiN,KAAK80O,MAAM//N,IAAIgrM,EAAUuC,GAClBA,EAET5/M,EAAOA,EAAKkY,cACZ,MAAMokQ,EAAQ,GACd,IAAK,MAAOC,EAAQV,KAAYv+Q,KAAKo+Q,MAAMpnN,UACrCioN,EAAOnuQ,WAAWqvO,EAAS,IAAIvlO,cAAc3S,WAAWvF,IAC1Ds8Q,EAAMz9Q,KAAKg9Q,GAGf,GAAqB,IAAjBS,EAAMz+Q,OACR,IAAK,MAAO,CAAEg+Q,KAAYv+Q,KAAKo+Q,MAAMpnN,UAC/BunN,EAAQE,QAAQ/7Q,MAAMoO,WAAWqvO,EAAS,IAAIvlO,cAAc3S,WAAWvF,IACzEs8Q,EAAMz9Q,KAAKg9Q,GAIjB,GAAqB,IAAjBS,EAAMz+Q,OAAc,CACtBmC,EAAOA,EAAKoO,WAAW,YAAa,IACpC,IAAK,MAAOmuQ,EAAQV,KAAYv+Q,KAAKo+Q,MAAMpnN,UACrCioN,EAAOnuQ,WAAWqvO,EAAS,IAAIvlO,cAAc3S,WAAWvF,IAC1Ds8Q,EAAMz9Q,KAAKg9Q,EAGjB,CACA,GAAqB,IAAjBS,EAAMz+Q,OACR,IAAK,MAAMg+Q,KAAWv+Q,KAAKo+Q,MAAMtpQ,SAC3BypQ,EAAQE,QAAQ/7Q,MAAMoO,WAAWqvO,EAAS,IAAIvlO,cAAc3S,WAAWvF,IACzEs8Q,EAAMz9Q,KAAKg9Q,GAIjB,OAAIS,EAAMz+Q,QAAU,GACG,IAAjBy+Q,EAAMz+Q,QAAgBqd,GACxBpW,EAAK,qDAAqDu4M,KAE5D//M,KAAK80O,MAAM//N,IAAIgrM,EAAUi/D,EAAM,IACxBA,EAAM,KAEXphQ,IAAa5d,KAAK8+D,OAAO9pD,IAAI+qM,KAC/B//M,KAAK8+D,OAAOtoD,IAAIupM,GAChBv4M,EAAK,+BAA+Bu4M,MAE/B,KACT,EAEF,SAASm/D,GAAWC,EAASC,GAC3B,MAAwB,WAApBD,EAAQE,QACa,SAAnBF,EAAQ9gQ,OACH+gQ,EAASV,WAEXU,EAASlnD,OACY,SAAnBinD,EAAQ9gQ,OACV+gQ,EAASnnD,KAEXmnD,EAASX,OAClB,CA4BA,MAAMa,GACJ,WAAAr2Q,CAAYk2Q,EAASI,EAAQ7oD,EAAY8oD,GAQvC,GAPAx/Q,KAAK02N,WAAaA,EAClB12N,KAAKy/Q,WAAaF,GAAU,CAC1BG,IAAK,EACLC,OAAQ,EACR52N,KAAM,EACN62N,MAAO,IAEJT,EAEH,aADCn/Q,KAAKu+Q,QAASv+Q,KAAKm/Q,SAAWn/Q,KAAKq+Q,YAAYmB,IAGlDx/Q,KAAKm/Q,QAAU,CACbC,SAAUD,EAAQC,SAClBC,QAASF,EAAQE,QACjBhhQ,OAAQ8gQ,EAAQ9gQ,OAChBpK,KAAMkrQ,EAAQlrQ,KACd4rQ,cAAeV,EAAQU,eAEzB,MAAMT,EAAWI,EAAWT,KAAKI,EAAQC,UACpCA,GAILp/Q,KAAKu+Q,QAAUW,GAAWC,EAASC,GAC9Bp/Q,KAAKu+Q,WACPv+Q,KAAKu+Q,QAASv+Q,KAAKm/Q,SAAWn/Q,KAAKq+Q,YAAYmB,MAL/Cx/Q,KAAKu+Q,QAASv+Q,KAAKm/Q,SAAWn/Q,KAAKq+Q,YAAYmB,EAOpD,CACA,WAAAnB,CAAYmB,GACV,MAAMl9D,EAAOk9D,EAAWT,KAAK,aAAa,IAAUS,EAAWT,KAAK,cAAc,IAAUS,EAAWT,KAAK,SAAS,IAAUS,EAAWV,aAC1I,GAAIx8D,GAAMm8D,QAAS,CACjB,MAAMF,EAAUj8D,EAAKm8D,QASrB,MAAO,CAACF,EAPQ,CACda,SAFWb,EAAQtgQ,YAEJN,WACf0hQ,QAAS,SACThhQ,OAAQ,SACRpK,KAAM,GACN4rQ,cAAe,GAGnB,CAQA,MAAO,CAAC,KAPQ,CACdT,SAAU,UACVC,QAAS,SACThhQ,OAAQ,SACRpK,KAAM,GACN4rQ,cAAe,GAGnB,EAEF,MAAMC,GACJ,WAAA72Q,CAAY82Q,EAAgBC,EAAmBC,EAAmBT,GAChEx/Q,KAAKw/Q,WAAaA,EAClBx/Q,KAAKoxB,MAAQ,CAAC,IAAIkuP,GAASS,EAAgBC,EAAmBC,EAAmBT,GACnF,CACA,QAAAU,CAASf,EAASI,EAAQ7oD,GACxB,MAAMypD,EAAWngR,KAAKoxB,MAAMgM,IAAI,GAChC,IAAK,MAAM16B,IAAQ,CAAC,WAAY,UAAW,SAAU,OAAQ,iBACtDy8Q,EAAQz8Q,KACXy8Q,EAAQz8Q,GAAQy9Q,EAAShB,QAAQz8Q,IAGrC,IAAK,MAAMA,IAAQ,CAAC,MAAO,SAAU,OAAQ,SACvC8b,MAAM+gQ,EAAO78Q,MACf68Q,EAAO78Q,GAAQy9Q,EAASV,WAAW/8Q,IAGvC,MAAM09Q,EAAW,IAAId,GAASH,EAASI,EAAQ7oD,GAAcypD,EAASzpD,WAAY12N,KAAKw/Q,YAClFY,EAAS7B,UACZ6B,EAAS7B,QAAU4B,EAAS5B,SAE9Bv+Q,KAAKoxB,MAAM7vB,KAAK6+Q,EAClB,CACA,OAAAC,GACErgR,KAAKoxB,MAAMkgB,KACb,CACA,OAAAgvO,GACE,OAAOtgR,KAAKoxB,MAAMgM,IAAI,EACxB,EAEF,MAAMmjP,GACJ,WAAAt3Q,CAAY82Q,EAAgBC,EAAmBC,EAAmB7B,GAChEp+Q,KAAKgiN,OAAS,GACdhiN,KAAKwgR,aAAe,IAAIV,GAAaC,EAAgBC,EAAmBC,EAAmB7B,GAC3Fp+Q,KAAKygR,YAAc,CACrB,CACA,QAAAP,CAASf,EAASI,EAAQ7oD,GACxB12N,KAAKwgR,aAAaN,SAASf,EAASI,EAAQ7oD,EAC9C,CACA,OAAA2pD,CAAQlB,GACN,OAAOn/Q,KAAKwgR,aAAaH,SAC3B,CACA,OAAAK,GACE,MAAMP,EAAWngR,KAAKwgR,aAAaF,UACnCtgR,KAAKygR,aAAeN,EAASV,WAAWC,IAAMS,EAASV,WAAWE,MACpE,CACA,SAAAgB,CAAUj2Q,GACR,IAAKA,EACH,OAEF,MAAMy1Q,EAAWngR,KAAKwgR,aAAaF,UAC7BruB,EAAWkuB,EAAShB,QAAQlrQ,KAClC,GAAIksQ,EAAS5B,QAAb,CACE,MAAMsB,EAAgBM,EAAShB,QAAQU,cACjCtB,EAAU4B,EAAS5B,QACnBqC,EAAiBrC,EAAQ7nD,YAAc,IACvCA,EAAaypD,EAASzpD,YAActsN,KAAK2D,IAAI,IAAK6yQ,GAAkB3uB,EAEpE4uB,EAAQD,QADsBx9Q,IAApBm7Q,EAAQn/C,QAAwB,GAAMm/C,EAAQn/C,SAExD0hD,EAAkB12Q,KAAK2D,IAAI,EAAG8yQ,GAAS5uB,EACvC1mO,EAAQ0mO,EAAW,IACnB8uB,EAAgBxC,EAAQ5lN,cAAgB4lN,EAAQ76C,cAAc,KAAK,GAAG7jN,MAC5E,IAAK,MAAM2tB,KAAQ9iC,EAAIsR,MAAM,cAAe,CAC1C,MAAMglQ,EAAczC,EAAQx6C,aAAav2L,GAAMhjC,KAAK,IAC9Cw3M,EAASu8D,EAAQ76C,cAAcs9C,GACrC,IAAK,MAAMviN,KAASujJ,EAAQ,CAC1B,MAAMniM,EAAQ4+C,EAAM5+C,OAASkhQ,EAC7B/gR,KAAKgiN,OAAOzgN,KAAK,CAACse,EAAQ0L,EAAQs0P,EAAenpD,EAAYoqD,EAAiBriN,EAAM24I,SAAS,GAC/F,CACAp3M,KAAKgiN,OAAOzgN,KAAK,CAAC,EAAG,EAAG,EAAG,MAAM,GACnC,CACAvB,KAAKgiN,OAAO1wK,KAEd,KArBA,CAsBA,IAAK,MAAM9D,KAAQ9iC,EAAIsR,MAAM,cAAe,CAC1C,IAAK,MAAMI,KAAQoxB,EAAKxxB,MAAM,IAC5Bhc,KAAKgiN,OAAOzgN,KAAK,CAAC0wP,EAAU,IAAMA,EAAUA,EAAU71O,GAAM,IAE9Dpc,KAAKgiN,OAAOzgN,KAAK,CAAC,EAAG,EAAG,EAAG,MAAM,GACnC,CACAvB,KAAKgiN,OAAO1wK,KAPZ,CAQF,CACA,OAAA2vO,CAAQ3+O,GACN,IAAI4+O,GAAgB,EAClBC,EAAiB,EACjBthQ,EAAQ,EACRC,EAAS,EACTshQ,EAAmB,EACnBC,EAAoB,EAClBC,GAAW,EACXC,GAAc,EAClB,IAAK,IAAIjgR,EAAI,EAAG0P,EAAKhR,KAAKgiN,OAAOzhN,OAAQe,EAAI0P,EAAI1P,IAAK,CACpD,MAAO40P,EAAYx/B,EAAYoqD,EAAiB1kQ,EAAMolQ,GAASxhR,KAAKgiN,OAAO1gN,GACrEwvN,EAAmB,MAAT10M,EACVg5O,EAAcmsB,EAAcT,EAAkBpqD,EAChD8qD,GACF3hQ,EAAQzV,KAAK2D,IAAI8R,EAAOuhQ,GACxBA,EAAmB,EACnBthQ,GAAUuhQ,EACVA,EAAoBjsB,EACpB8rB,GAAgB,EAChBC,EAAiB,EACjBI,GAAc,GAGZzwD,EACEswD,EAAmBlrB,EAAa5zN,GAClCziB,EAAQzV,KAAK2D,IAAI8R,EAAOuhQ,GACxBA,EAAmB,EACnBthQ,GAAUuhQ,EACVA,EAAoBjsB,EACpB8rB,GAAgB,EAChBC,EAAiB,EACjBG,GAAW,EACXC,GAAc,IAEdF,EAAoBj3Q,KAAK2D,IAAIqnP,EAAaisB,GAC1CF,EAAiBC,EACjBA,GAAoBlrB,EACpBgrB,EAAe5/Q,GAIf8/Q,EAAmBlrB,EAAa5zN,GAClCxiB,GAAUuhQ,EACVA,EAAoBjsB,GACE,IAAlB8rB,GACF5/Q,EAAI4/Q,EACJrhQ,EAAQzV,KAAK2D,IAAI8R,EAAOshQ,GACxBC,EAAmB,EACnBF,GAAgB,EAChBC,EAAiB,IAEjBthQ,EAAQzV,KAAK2D,IAAI8R,EAAOuhQ,GACxBA,EAAmBlrB,GAErBorB,GAAW,EACXC,GAAc,IAGhBH,GAAoBlrB,EACpBmrB,EAAoBj3Q,KAAK2D,IAAIqnP,EAAaisB,GAC5C,CAGA,OAFAxhQ,EAAQzV,KAAK2D,IAAI8R,EAAOuhQ,GACxBthQ,GAAUuhQ,EAAoBrhR,KAAKygR,YAC5B,CACL5gQ,MAzMe,KAyMOA,EACtBC,SACAwhQ,WAEJ,EAMF,MAAMG,GAAc,UACdC,GAAe,UAQfC,GAAY,IAAIhuQ,IAAI,CAAC,CAAC,QAAS,CAACwvP,EAAMye,IAAYze,EAAKsY,SAAWtY,EAAKsY,SAAS1hQ,KAAOopP,GAAO,CAAC,UAAW,CAACA,EAAMye,KAAaze,EAAKsY,SAAWtY,EAAKsY,SAAS1hQ,KAAOopP,GAAMsV,MAAgB,IAAK,CAAC,YAAa,CAACtV,EAAMye,IAAYze,EAAKplO,UAAW,CAAC,iBAAkB,CAAColO,EAAMye,IAAYze,EAAKqY,eAAgB,CAAC,QAAS,CAACrY,EAAMye,IAAYze,EAAKuY,MAAO,CAAC,UAAW,CAACvY,EAAMye,IAAYze,EAAK3nM,QAAS,CAAC,QAAS,CAAC2nM,EAAMye,IAAYze,EAAK0e,MAAO,CAAC,cAAe,CAAC1e,EAAMye,IAAYze,EAAK2e,YAAa,CAAC,SAAU,CAAC3e,EAAMye,IAAYze,EAAK4e,OAAQ,CAAC,IAAK,CAAC5e,EAAMye,IAAYze,EAAKsY,UAAW,CAAC,OAAQ,CAACtY,EAAMye,IAAYze,GAAO,CAAC,MAAO,CAACA,EAAMye,IAAYze,GAAO,CAAC,IAAK,CAACA,EAAMye,IAAYA,KAChpBI,GAAW,IAAIC,QAQrB,SAASC,GAAgBnqC,EAAMoqC,EAAeC,GAAS,GACrD,IAAIj6Q,EAAQ4vO,EAAK5vO,MAAMs5Q,IACvB,IAAKt5Q,EACH,OAAO,KAET,IAAKzF,GAAQyF,EACb,MAAMg9P,EAAS,CAAC,CACdziQ,OACA2/Q,UAAW,IAAM3/Q,EACjBksC,MAAO,EACPhyB,GAAI,KACJ0lQ,SAAU,KACV1sC,SA3BG,IA6BL,IAAIz9N,EAAMzV,EAAKnC,OACf,KAAO4X,EAAM4/N,EAAKx3O,QAAQ,CACxB,MAAMmnN,EAAOvvM,EAEb,GAAa,MADA4/N,EAAK7mO,OAAOiH,KACP,CAEhB,GADAhQ,EAAQ4vO,EAAKnqO,MAAMuK,GAAKhQ,MAAMu5Q,KACzBv5Q,EAEH,OADAX,EAAK,yCACE,KAET29P,EAAO/nO,IAAI,GAAGwR,MA7BJ,OADdA,GADkBA,EA+BmBzmC,EAAM,IA9B7BqgQ,QAEL/Y,IAEFv5O,SAAS04B,EAAO,KAAO,EA2B1Bz2B,GAAOhQ,EAAM,GAAG5H,OAAS,EACzB,QACF,CACA,IAAIq1O,EACJ,OAAQmC,EAAK7mO,OAAOiH,IAClB,IAAK,IACH,IAAKgqQ,EACH,OAAO,KAEThqQ,IACAy9N,EAjDE,EAkDF,MACF,IAAK,IACHz9N,IACAy9N,EApDG,EAqDH,MACF,IAAK,IACH,GAAIwsC,EAEF,OADA56Q,EAAK,0FACE,KAETouO,EA1DM,EA2DN,MACF,IAAK,IACH,GAAIwsC,EAEF,OADA56Q,EAAK,4FACE,KAETouO,EAhEI,EAiEJ,MACF,QACEA,EAvED,EA2EH,GADAztO,EAAQ4vO,EAAKnqO,MAAMuK,GAAKhQ,MAAMs5Q,KACzBt5Q,EACH,OAEDzF,GAAQyF,EACTgQ,GAAOzV,EAAKnC,OACZ4kQ,EAAO5jQ,KAAK,CACVmB,OACA2/Q,UAAWtqC,EAAKnqO,MAAM85M,EAAMvvM,GAC5By9N,WACAhnM,MAAO,EACPhyB,GAAI,KACJ0lQ,SAAU,MAEd,CAhFF,IAAoB1zO,EAiFlB,OAAOu2N,CACT,CACA,SAASwB,GAAWxD,EAAMof,EAAWxqC,EAAMoqC,GAAgB,EAAMK,GAAW,GAC1E,MAAMrd,EAAS+c,GAAgBnqC,EAAMoqC,GACrC,IAAKhd,EACH,OAAO,KAET,MAAMvyP,EAAK+uQ,GAAU99Q,IAAIshQ,EAAO,GAAGziQ,MACnC,IACI+/Q,EADAnhR,EAAI,EAEJsR,GACF6vQ,GAAc,EACdtf,EAAO,CAACvwP,EAAGuwP,EAAMof,IACjBjhR,EAAI,IAEJmhR,EAA4B,OAAdF,EACdpf,EAAO,CAACof,GAAapf,IAEvB,IAAK,IAAInyP,EAAKm0P,EAAO5kQ,OAAQe,EAAI0P,EAAI1P,IAAK,CACxC,MAAM,KACJoB,EAAI,UACJ2/Q,EAAS,SACTzsC,EAAQ,MACRhnM,GACEu2N,EAAO7jQ,GACL0oP,EAAQ,GACd,IAAK,MAAMp8M,KAAQu1N,EAAM,CACvB,IAAKv1N,EAAK80O,YACR,SAEF,IAAIj1O,EAAU22M,EASd,GARIo+B,IACFp+B,EAAS49B,GAASn+Q,IAAI+pC,GACjBw2M,IACHA,EAAS,IAAIzwO,IACbquQ,GAASjtQ,IAAI64B,EAAMw2M,IAErB32M,EAAW22M,EAAOvgP,IAAIw+Q,KAEnB50O,EAAU,CACb,OAAQmoM,GACN,KAlIH,EAmIKnoM,EAAWG,EAAKwqO,IAAoB11Q,GAAM,GAC1C,MACF,KApIA,EAqIE+qC,EAAWG,EAAKwqO,IAAoB11Q,GAAM,GAC1C,MACF,KAtIC,EAuIC+qC,EAAWG,EAAKuqO,IAAqBz1Q,GACrC+qC,EAAWA,EAASk1O,iBAAmBl1O,EAASA,SAAW,CAACA,GAK5D+0O,GACFp+B,EAAOrvO,IAAIstQ,EAAW50O,EAE1B,CACIA,EAASltC,OAAS,GACpBypP,EAAMzoP,KAAKksC,EAEf,CACA,GAAqB,IAAjBu8M,EAAMzpP,QAAiBkiR,GAAqB,IAANnhR,EAU1C6hQ,EAAOyf,SAASh0O,GAASo7M,EAAMx2N,QAAOoa,GAAQgB,EAAQhB,EAAKrtC,SAAQ0b,KAAI2xB,GAAQA,EAAKgB,KAAUo7M,EAAM64B,WAVpG,CACE,MAAMzsQ,EAASmsQ,EAAU1J,MAEzB,KADA0J,EAAYnsQ,GAEV,OAAO,KAET9U,GAAK,EACL6hQ,EAAO,CAACof,EAEV,CAEF,CACA,OAAoB,IAAhBpf,EAAK5iQ,OACA,KAEF4iQ,CACT,CACA,SAAS2f,GAAe3f,EAAMof,EAAWxqC,GACvC,MAAMotB,EAAS+c,GAAgBnqC,GAC/B,IAAKotB,EACH,OAAO,KAET,GAAIA,EAAO4d,MAAKhzQ,GA5KR,IA4KaA,EAAE6lO,WACrB,OAAO,KAET,MAAMhjO,EAAK+uQ,GAAU99Q,IAAIshQ,EAAO,GAAGziQ,MACnC,IAAIpB,EAAI,EACJsR,GACFuwP,EAAOvwP,EAAGuwP,EAAMof,GAChBjhR,EAAI,GAEJ6hQ,EAAOof,GAAapf,EAEtB,IAAK,IAAInyP,EAAKm0P,EAAO5kQ,OAAQe,EAAI0P,EAAI1P,IAAK,CACxC,MAAM,KACJoB,EAAI,SACJkzO,EAAQ,MACRhnM,GACEu2N,EAAO7jQ,GACX,IAAKshR,SAASh0O,GAEZ,OADAu2N,EAAO7jQ,GAAGstC,MAAQ,EACXu0N,EAAK6f,YAAY7d,EAAOv3P,MAAMtM,IAEvC,IAAImsC,EACJ,OAAQmoM,GACN,KApMC,EAqMCnoM,EAAW01N,EAAKiV,IAAoB11Q,GAAM,GAC1C,MACF,KAtMI,EAuMF+qC,EAAW01N,EAAKiV,IAAoB11Q,GAAM,GAC1C,MACF,KAxMK,EAyMH+qC,EAAW01N,EAAKgV,IAAqBz1Q,GACrC+qC,EAAWA,EAASk1O,iBAAmBl1O,EAASA,SAAW,CAACA,GAKhE,GAAwB,IAApBA,EAASltC,OACX,OAAO4iQ,EAAK6f,YAAY7d,EAAOv3P,MAAMtM,IAEvC,KAAIstC,EAAQnB,EAASltC,QASnB,OADA4kQ,EAAO7jQ,GAAGstC,MAAQA,EAAQnB,EAASltC,OAC5B4iQ,EAAK6f,YAAY7d,EAAOv3P,MAAMtM,IATV,CAC3B,MAAMmlQ,EAAQh5N,EAASmB,GACvB,IAAK63N,EAAMic,YAET,OADAl7Q,EAAK,+BACE,KAET27P,EAAOsD,CACT,CAIF,CACA,OAAO,IACT,CASA,MAAMwc,GAAkBlwQ,SAClBmwQ,GAAcnwQ,SACdowQ,GAAkBpwQ,SAClBqwQ,GAAYrwQ,OAAO,aACnBswQ,GAAkBtwQ,SAClBuwQ,GAAavwQ,SACbwwQ,GAAgBxwQ,SAChBywQ,GAA6BzwQ,SAC7B0wQ,GAAgB1wQ,SAChB2wQ,GAAsB3wQ,SACtB4wQ,GAAe5wQ,SACf6wQ,GAAO7wQ,SACP8wQ,GAAW9wQ,SACX+wQ,GAAU/wQ,OAAO,UACjBgxQ,GAA2BhxQ,SAC3BixQ,GAAiBjxQ,SACjBkxQ,GAAalxQ,SACnB,IAAImxQ,GAAM,EACV,MAAMC,GAAc7I,GAAaG,SAAS5/O,GAC1C,MAAMuoP,GACJ,WAAAn7Q,CAAYo7Q,EAAM3hR,EAAM4hR,GAAc,GACpCtkR,KAAK85Q,IAAgBuK,EACrBrkR,KAAK+5Q,IAAar3Q,EAClB1C,KAAK2jR,IAAgBW,EACrBtkR,KAAK8jR,IAAW,KAChB9jR,KAAKojR,IAAa,GAClBpjR,KAAKo7Q,IAAQ,GAAG14Q,IAAOwhR,OACvBlkR,KAAK+4Q,IAAe,IACtB,CACA,eAAI2J,GACF,OAAO,CACT,CACA,oBAAIC,GACF,OAAO,CACT,CACA,WAAAK,CAAYlnQ,GACV,IAAIqnP,EAAOnjQ,KACT4tC,EAAO,KACT,IAAK,MAAM,KACTlrC,EAAI,MACJksC,KACG9yB,EAAM,CACT,IAAK,IAAIxa,EAAI,EAAG0P,EAAK4xQ,SAASh0O,GAASA,EAAQ,EAAGttC,GAAK0P,EAAI1P,IAAK,CAC9D,MAAM+iR,EAAOlhB,EAAK2W,MAAkBqK,IAAe,EAAIhhB,EAAK2W,IAC5DlsO,EAAO,IAAI22O,GAAUF,EAAM3hR,GAC3BygQ,EAAKgU,IAAcvpO,EACrB,CACAu1N,EAAOv1N,CACT,CACA,OAAOA,CACT,CACA,CAACqsO,IAAUxT,GACT,IAAKzmQ,KAAK2jR,MAAkB3jR,KAAKk6Q,IAAezT,GAC9C,OAAO,EAET,MAAM/jQ,EAAO+jQ,EAAMsT,IACbnsO,EAAO5tC,KAAK0C,GAClB,KAAIkrC,aAAgB42O,IAWlB,OALa,OAAT52O,GACF5tC,KAAKu6Q,IAAc3sO,GAErB5tC,KAAK0C,GAAQ+jQ,EACbzmQ,KAAKm3Q,IAAc1Q,IACZ,EAVP,GAAI74N,EAAKrsC,KAAKklQ,GAEZ,OADAzmQ,KAAKm3Q,IAAc1Q,IACZ,EAUX,IAAI5qO,EAAK,GAOT,OANI77B,KAAK67B,GACPA,EAAK,SAAS77B,KAAK67B,MACV77B,KAAK0C,OACdm5B,EAAK,WAAW77B,KAAK0C,QAAQ1C,KAAKuzC,EAAE5qC,UAEtCnB,EAAK,eAAexH,KAAK+5Q,OAAcl+O,yBAA0Bn5B,QAC1D,CACT,CACA,CAACw3Q,IAAezT,GACd,OAAOzmQ,KAAKgE,eAAeyiQ,EAAMsT,MAAetT,EAAMqT,MAAkB95Q,KAAK85Q,GAC/E,CACA,CAACN,MACC,OAAO,CACT,CACA,CAACvC,MACC,OAAO,CACT,CACA,CAACmC,MACC,OAAO,CACT,CACA,CAACC,MACC,OAAO,CACT,CACA,CAACgB,MACKr6Q,KAAKykR,MACPzkR,KAAK84Q,MAAoBjB,IAAQ6M,UAAUpzO,KAE/C,CACA,CAACgpO,MACCt6Q,KAAK84Q,MAAoBjB,IAAQ6M,UAAUnjR,KAAKvB,KAAKykR,KACvD,CACA,CAAC9J,IAAQ94D,GACH7hN,KAAK67B,IAAM77B,KAAK85Q,MAAkBwB,GAAav9O,SAASlC,IAC1DgmL,EAAI9sM,IAAI/U,KAAK67B,GAAI77B,KAErB,CACA,CAAC84Q,MACC,OAAO94Q,KAAK+4Q,IAAah7O,QAC3B,CACA,CAAC07O,MACC,OAAO,CACT,CACA,CAACC,MACC,OAAO,CACT,CACA,CAACvC,IAAc1Q,GACbA,EAAMqd,IAAW9jR,KACjBA,KAAKojR,IAAW7hR,KAAKklQ,IAChBA,EAAMsS,KAAgB/4Q,KAAK+4Q,MAC9BtS,EAAMsS,IAAe/4Q,KAAK+4Q,IAE9B,CACA,CAACwB,IAAc9T,GACb,MAAMnlQ,EAAItB,KAAKojR,IAAW9yN,QAAQm2M,GAClCzmQ,KAAKojR,IAAWl4D,OAAO5pN,EAAG,EAC5B,CACA,CAAC03Q,MACC,OAAOh5Q,KAAKgE,eAAe,QAC7B,CACA,CAAC62Q,IAAWt5N,GAAI,CAChB,CAAC44N,IAAS54N,GAAI,CACd,CAACu2N,MAAc,CACf,CAACT,IAAQj1C,UACApiO,KAAK2jR,IACR3jR,KAAKu3Q,MACPn1C,EAAQuiD,MAAM3kR,KAAKu3Q,YACZv3Q,KAAKu3Q,IAEhB,CACA,CAAC2B,IAAUzS,GACT,OAAOzmQ,KAAKojR,IAAW9yN,QAAQm2M,EACjC,CACA,CAAC0S,IAAW73Q,EAAGmlQ,GACbA,EAAMqd,IAAW9jR,KACjBA,KAAKojR,IAAWl4D,OAAO5pN,EAAG,EAAGmlQ,IACxBA,EAAMsS,KAAgB/4Q,KAAK+4Q,MAC9BtS,EAAMsS,IAAe/4Q,KAAK+4Q,IAE9B,CACA,CAACY,MACC,OAAQ35Q,KAAK0C,IACf,CACA,CAACm3Q,MACC,MAAO,EACT,CACA,CAACkB,MACC,OAA+B,IAA3B/6Q,KAAKojR,IAAW7iR,OACXP,KAAK03Q,IAEP13Q,KAAKojR,IAAWnnQ,KAAI7N,GAAKA,EAAE2sQ,QAAUvwQ,KAAK,GACnD,CACA,IAAK24Q,MACH,MAAMtuD,EAAQnxN,OAAOkhR,eAAe5kR,MACpC,IAAK60N,EAAMquD,YAAa,CACtB,MAAMre,EAAahwC,EAAMquD,YAAc,IAAI5sQ,IAC3C,IAAK,MAAM5T,KAAQgB,OAAOmhR,oBAAoB7kR,MAAO,CACnD,GAAmB,OAAfA,KAAK0C,IAAkB1C,KAAK0C,aAAiB0hR,IAAapkR,KAAK0C,aAAiB8hR,GAClF,MAEF3f,EAAWruP,IAAI9T,EACjB,CACF,CACA,OAAOgG,EAAO1I,KAAMmjR,GAAiBtuD,EAAMquD,YAC7C,CACA,CAAC3J,IAAenjQ,GACd,IAAIw3B,EAAO5tC,KACX,KAAO4tC,GAAM,CACX,GAAIA,IAASx3B,EACX,OAAO,EAETw3B,EAAOA,EAAKirO,KACd,CACA,OAAO,CACT,CACA,CAACA,MACC,OAAO74Q,KAAK8jR,GACd,CACA,CAAClL,MACC,OAAO54Q,KAAK64Q,KACd,CACA,CAACJ,IAAc/1Q,EAAO,MACpB,OAAKA,EAGE1C,KAAK0C,GAFH1C,KAAKojR,GAGhB,CACA,CAACxL,MACC,MAAMkN,EAASphR,OAAOwP,OAAO,MACzBlT,KAAK03Q,MACPoN,EAAOpN,SAAW13Q,KAAK03Q,KAEzB,IAAK,MAAMh1Q,KAAQgB,OAAOmhR,oBAAoB7kR,MAAO,CACnD,MAAM2I,EAAQ3I,KAAK0C,GACL,OAAViG,IAGAA,aAAiBy7Q,GACnBU,EAAOpiR,GAAQiG,EAAMivQ,MACZjvQ,aAAiB67Q,GACrB77Q,EAAM4O,YACTutQ,EAAOpiR,GAAQiG,EAAMm+P,QAGvBge,EAAOpiR,GAAQiG,EAEnB,CACA,OAAOm8Q,CACT,CACA,CAAC3J,MACC,OAAO,IACT,CACA,CAACF,MACC,OAAO0C,GAAWE,KACpB,CACA,EAAEnF,MACA,IAAK,MAAM9qO,KAAQ5tC,KAAKy4Q,YAChB7qO,CAEV,CACA,EAAE41O,IAA4BhwP,EAAQoiP,GACpC,IAAK,MAAMhoO,KAAQ5tC,KAAK04Q,MACtB,IAAKllP,GAAUoiP,IAAYpiP,EAAOxe,IAAI44B,EAAKmsO,KAAa,CACtD,MAAMgL,EAAiB/kR,KAAKk4Q,MACtB1zC,EAAM52L,EAAKqtO,IAAS8J,GACrBvgD,EAAIs5C,UACP99Q,KAAK63Q,IAAQmN,YAAcp3O,SAEvB42L,CACR,CAEJ,CACA,CAACuzC,MACC,OAAO,IACT,CACA,CAACb,IAAU6G,EAAMruD,GACf1vN,KAAK63Q,IAAQpqO,SAASlsC,KAAKw8Q,EAC7B,CACA,CAAC7F,MAAuB,CACxB,CAACd,KAAiB,OAChB5jP,EAAS,KAAI,QACboiP,GAAU,IAEV,GAAK51Q,KAAK63Q,IAAQoN,UAEX,CACL,MAAMF,EAAiB/kR,KAAKk4Q,MACtB1zC,EAAMxkO,KAAK63Q,IAAQmN,YAAY/J,IAAS8J,GAC9C,IAAKvgD,EAAIs5C,QACP,OAAOt5C,EAELA,EAAIu5C,MACN/9Q,KAAKk3Q,IAAU1yC,EAAIu5C,KAAMv5C,EAAI9U,aAExB1vN,KAAK63Q,IAAQmN,WACtB,MAXEhlR,KAAK63Q,IAAQoN,UAAYjlR,KAAKwjR,IAA4BhwP,EAAQoiP,GAYpE,OAAa,CACX,MAAM9/P,EAAM9V,KAAK63Q,IAAQoN,UAAUlwP,OACnC,GAAIjf,EAAIqN,KACN,MAEF,MAAMqhN,EAAM1uN,EAAInN,MAChB,IAAK67N,EAAIs5C,QACP,OAAOt5C,EAELA,EAAIu5C,MACN/9Q,KAAKk3Q,IAAU1yC,EAAIu5C,KAAMv5C,EAAI9U,KAEjC,CAEA,OADA1vN,KAAK63Q,IAAQoN,UAAY,KAClBtH,GAAWE,KACpB,CACA,CAACjD,IAAmB/V,GAClB7kQ,KAAKgkR,IAAkB,IAAI1tQ,IAAI5S,OAAOqH,KAAK85P,GAC7C,CACA,CAAC6e,IAAqBwB,GACpB,MAAMC,EAAUnlR,KAAKmjR,IACfiC,EAAUplR,KAAKgkR,IACrB,MAAO,IAAIkB,GAAiB1xP,QAAOzjB,GAAKo1Q,EAAQnwQ,IAAIjF,KAAOq1Q,EAAQpwQ,IAAIjF,IACzE,CACA,CAAC0qQ,IAAoB54D,EAAKwjE,EAAY,IAAI/uQ,KACxC,IAAK,MAAMmwP,KAASzmQ,KAAKojR,IACvB3c,EAAMsd,IAA0BliE,EAAKwjE,EAEzC,CACA,CAACtB,IAA0BliE,EAAKwjE,GAC9B,MAAMxwD,EAAQ70N,KAAKyjR,IAAe5hE,EAAKwjE,GACnCxwD,EACF70N,KAAKijR,IAAiBpuD,EAAOhT,EAAKwjE,GAElCrlR,KAAKy6Q,IAAoB54D,EAAKwjE,EAElC,CACA,CAAC5B,IAAe5hE,EAAKwjE,GACnB,MAAM,IACJC,EAAG,QACHC,GACEvlR,KACJ,IAAKslR,IAAQC,EACX,OAAO,KAET,IAAI1wD,EAAQ,KACR2wD,EAAgB,KAChB3pP,EAAK,KACL7lB,EAAMsvQ,EA0BV,GAzBIC,GACFvvQ,EAAMuvQ,EACFA,EAAQt9Q,WAAW,UAAYs9Q,EAAQ1G,SAAS,KAClD2G,EAAgBD,EAAQ33Q,MAAM,GAAiB,GACtC23Q,EAAQt9Q,WAAW,WAAas9Q,EAAQ1G,SAAS,KAC1D2G,EAAgBD,EAAQ33Q,MAAM,GAAkB,GACvC23Q,EAAQt9Q,WAAW,KAC5B4zB,EAAK0pP,EAAQ33Q,MAAM,GACV23Q,EAAQt9Q,WAAW,QAC5B4zB,EAAK0pP,EAAQ33Q,MAAM,KAEZ03Q,EAAIr9Q,WAAW,KACxB4zB,EAAKypP,EAAI13Q,MAAM,GAEf43Q,EAAgBF,EAElBtlR,KAAKslR,IAAMtlR,KAAKulR,QAAU,GACtB1pP,EACFg5L,EAAQhT,EAAIh+M,IAAIg4B,IAEhBg5L,EAAQ8xC,GAAW9kD,EAAIh+M,IAAI22Q,IAAQx6Q,KAAMwlR,GAAe,GAAM,GAC1D3wD,IACFA,EAAQA,EAAM,MAGbA,EAEH,OADArtN,EAAK,sCAAsCwO,MACpC,KAET,GAAI6+M,EAAMklD,MAAe/5Q,KAAK+5Q,IAE5B,OADAvyQ,EAAK,iCAAiCqtN,EAAMklD,WAAkB/5Q,KAAK+5Q,QAC5D,KAET,GAAIsL,EAAUrwQ,IAAI6/M,GAEhB,OADArtN,EAAK,2CACE,KAET69Q,EAAU7uQ,IAAIq+M,GACd,MAAM4wD,EAAa5wD,EAAM4uD,IAAe5hE,EAAKwjE,GAM7C,OALII,GACF5wD,EAAMouD,IAAiBwC,EAAY5jE,EAAKwjE,GAE1CxwD,EAAM4lD,IAAoB54D,EAAKwjE,GAC/BA,EAAU3uQ,OAAOm+M,GACVA,CACT,CACA,CAACouD,IAAiBpuD,EAAOhT,EAAKwjE,GAC5B,GAAIA,EAAUrwQ,IAAI6/M,GAChBrtN,EAAK,+CADP,EAIKxH,KAAK03Q,KAAa7iD,EAAM6iD,MAC3B13Q,KAAK03Q,IAAY7iD,EAAM6iD,KAEJ,IAAIphQ,IAAI+uQ,GAChB7uQ,IAAIq+M,GACjB,IAAK,MAAM6wD,KAAiB1lR,KAAK0jR,IAAqB7uD,EAAMmvD,KAC1DhkR,KAAK0lR,GAAiB7wD,EAAM6wD,GACxB1lR,KAAKgkR,KACPhkR,KAAKgkR,IAAgBxtQ,IAAIkvQ,GAG7B,IAAK,MAAMhjR,KAAQgB,OAAOmhR,oBAAoB7kR,MAAO,CACnD,GAAIA,KAAKmjR,IAAiBnuQ,IAAItS,GAC5B,SAEF,MAAMiG,EAAQ3I,KAAK0C,GACbijR,EAAa9wD,EAAMnyN,GACzB,GAAIiG,aAAiB67Q,GAArB,CACE,IAAK,MAAM/d,KAAS99P,EAAMy6Q,IACxB3c,EAAMsd,IAA0BliE,EAAKwjE,GAEvC,IAAK,IAAI/jR,EAAIqH,EAAMy6Q,IAAW7iR,OAAQyQ,EAAK20Q,EAAWvC,IAAW7iR,OAAQe,EAAI0P,EAAI1P,IAAK,CACpF,MAAMmlQ,EAAQ5xC,EAAMuuD,IAAW9hR,GAAGk2Q,MAClC,IAAI7uQ,EAAMpH,KAAKklQ,GAKb,MAJAA,EAAMqd,IAAW9jR,KACjBA,KAAKojR,IAAW7hR,KAAKklQ,GACrBA,EAAMsd,IAA0BliE,EAAKwjE,EAIzC,CAEF,MACA,GAAc,OAAV18Q,GAOJ,GAAmB,OAAfg9Q,EAAqB,CACvB,MAAMlf,EAAQkf,EAAWnO,MACzB/Q,EAAMqd,IAAW9jR,KACjBA,KAAK0C,GAAQ+jQ,EACbzmQ,KAAKojR,IAAW7hR,KAAKklQ,GACrBA,EAAMsd,IAA0BliE,EAAKwjE,EACvC,OAZE18Q,EAAM8xQ,IAAoB54D,EAAKwjE,GAC3BM,GACFh9Q,EAAMs6Q,IAAiB0C,EAAY9jE,EAAKwjE,EAW9C,CAhDA,CAiDF,CACA,OAAQhC,IAAiBv/Q,GACvB,OAAI1C,MAAMsT,QAAQ5Q,GACTA,EAAImY,KAAIlM,GAAKq0Q,GAAUf,IAAiBtzQ,KAE9B,iBAARjM,GAA4B,OAARA,EACtBJ,OAAO+5C,OAAO,CAAC,EAAG35C,GAEpBA,CACT,CACA,CAAC0zQ,MACC,MAAM3hQ,EAAQnS,OAAOwP,OAAOxP,OAAOkhR,eAAe5kR,OAClD,IAAK,MAAM4lR,KAAWliR,OAAOmiR,sBAAsB7lR,MACjD,IACE6V,EAAM+vQ,GAAW5lR,KAAK4lR,EACxB,CAAE,MACAl9Q,EAAOmN,EAAO+vQ,EAAS5lR,KAAK4lR,GAC9B,CAEF/vQ,EAAMulQ,IAAQ,GAAGvlQ,EAAMkkQ,MAAamK,OACpCruQ,EAAMutQ,IAAa,GACnB,IAAK,MAAM1gR,KAAQgB,OAAOmhR,oBAAoB7kR,MAAO,CACnD,GAAIA,KAAKmjR,IAAiBnuQ,IAAItS,GAAO,CACnCmT,EAAMnT,GAAQ0hR,GAAUf,IAAiBrjR,KAAK0C,IAC9C,QACF,CACA,MAAMiG,EAAQ3I,KAAK0C,GACnBmT,EAAMnT,GAAQiG,aAAiB67Q,GAAiB,IAAIA,GAAe77Q,EAAMi7Q,KAAS,IACpF,CACA,IAAK,MAAMnd,KAASzmQ,KAAKojR,IAAY,CACnC,MAAM1gR,EAAO+jQ,EAAMsT,IACb+L,EAAcrf,EAAM+Q,MAC1B3hQ,EAAMutQ,IAAW7hR,KAAKukR,GACtBA,EAAYhC,IAAWjuQ,EACH,OAAhBA,EAAMnT,GACRmT,EAAMnT,GAAQojR,EAEdjwQ,EAAMnT,GAAM0gR,IAAW7hR,KAAKukR,EAEhC,CACA,OAAOjwQ,CACT,CACA,CAAC4iQ,IAAc/1Q,EAAO,MACpB,OAAKA,EAGE1C,KAAKojR,IAAW5vP,QAAOplB,GAAKA,EAAE2rQ,MAAer3Q,IAF3C1C,KAAKojR,GAGhB,CACA,CAACjL,IAAqBz1Q,GACpB,OAAO1C,KAAK0C,EACd,CACA,CAAC01Q,IAAoB11Q,EAAMqjR,EAAgB13Q,GAAQ,GACjD,OAAOjN,MAAMkL,KAAKtM,KAAKq4Q,IAAsB31Q,EAAMqjR,EAAgB13Q,GACrE,CACA,EAAEgqQ,IAAsB31Q,EAAMqjR,EAAgB13Q,GAAQ,GACpD,GAAa,WAAT3L,EAAJ,CAIA,IAAK,MAAM+jQ,KAASzmQ,KAAKojR,IACnB3c,EAAMsT,MAAer3Q,UACjB+jQ,GAEJA,EAAM/jQ,OAASA,UACX+jQ,IAEJsf,GAAkBtf,EAAMkT,eACnBlT,EAAM4R,IAAsB31Q,EAAMqjR,GAAgB,IAGzD13Q,GAASrO,KAAKmjR,IAAiBnuQ,IAAItS,WAC/B,IAAIsjR,GAAahmR,KAAM0C,EAAM1C,KAAK0C,IAb1C,YAFQ1C,KAAK8jR,GAiBf,EAEF,MAAMU,GACJ,WAAAv7Q,CAAY8E,EAAM0hP,KAChBzvP,KAAK4jR,IAAQ71Q,EACb/N,KAAKojR,IAAa,EACpB,CACA,eAAIV,GACF,OAAO,CACT,CACA,oBAAIC,GACF,OAAO,CACT,CACA,IAAAphR,CAAKklQ,GAEH,OADYzmQ,KAAKojR,IAAW7iR,QACjBP,KAAK4jR,KACd5jR,KAAKojR,IAAW7hR,KAAKklQ,IACd,IAETj/P,EAAK,eAAei/P,EAAMsT,6BAAoC/5Q,KAAK4jR,iBAC5D,EACT,CACA,OAAArsQ,GACE,OAAkC,IAA3BvX,KAAKojR,IAAW7iR,MACzB,CACA,IAAAumQ,GACE,OAAkC,IAA3B9mQ,KAAKojR,IAAW7iR,OAAeP,KAAKojR,IAAW,GAAGxL,MAAW53Q,KAAKojR,IAAWnnQ,KAAIlM,GAAKA,EAAE6nQ,OACjG,CACA,CAACJ,MACC,MAAM3hQ,EAAQ,IAAI2uQ,GAAexkR,KAAK4jR,KAEtC,OADA/tQ,EAAMutQ,IAAapjR,KAAKojR,IAAWnnQ,KAAI7N,GAAKA,EAAEopQ,QACvC3hQ,CACT,CACA,YAAI43B,GACF,OAAOztC,KAAKojR,GACd,CACA,KAAAxtQ,GACE5V,KAAKojR,IAAW7iR,OAAS,CAC3B,EAEF,MAAMylR,GACJ,WAAA/8Q,CAAY2kC,EAAMlrC,EAAMiG,GACtB3I,KAAK8jR,IAAWl2O,EAChB5tC,KAAK+5Q,IAAar3Q,EAClB1C,KAAK03Q,IAAY/uQ,EACjB3I,KAAKy3Q,KAAa,EAClBz3Q,KAAKo7Q,IAAQ,YAAY8I,IAC3B,CACA,CAACrL,MACC,OAAO74Q,KAAK8jR,GACd,CACA,CAACxK,MACC,OAAO,CACT,CACA,CAAChB,MACC,OAAOt4Q,KAAK03Q,IAAUlP,MACxB,CACA,CAACqS,IAAWlyQ,GACVA,EAAQA,EAAMA,OAAS,GACvB3I,KAAK03Q,IAAY/uQ,EAAM6D,UACzB,CACA,CAACuuQ,MACC,OAAO/6Q,KAAK03Q,GACd,CACA,CAAC6B,IAAenjQ,GACd,OAAOpW,KAAK8jR,MAAa1tQ,GAAUpW,KAAK8jR,IAASvK,IAAenjQ,EAClE,EAEF,MAAMmuQ,WAAkBH,GACtB,WAAAn7Q,CAAYo7Q,EAAM3hR,EAAMmiQ,EAAa,CAAC,GAIpC,GAHAz7P,MAAMi7Q,EAAM3hR,GACZ1C,KAAK03Q,IAAY,GACjB13Q,KAAKsjR,IAAc,KACN,UAAT5gR,EAAkB,CACpB,MAAMuZ,EAAM,IAAItI,IAChB3T,KAAKkjR,IAAejnQ,EACpB,IAAK,MAAO8oP,EAAUp8P,KAAUjF,OAAOszD,QAAQ6tM,GAC7C5oP,EAAIlH,IAAIgwP,EAAU,IAAIihB,GAAahmR,KAAM+kQ,EAAUp8P,IAErD,GAAIk8P,EAAW7gQ,eAAeg2Q,IAAgB,CAC5C,MAAMiM,EAAWphB,EAAWmV,IAAekM,IAAID,cAC9B7iR,IAAb6iR,IACe,cAAbA,EACFjmR,KAAKsjR,KAAc,EACG,cAAb2C,IACTjmR,KAAKsjR,KAAc,GAGzB,CACF,CACAtjR,KAAKy3Q,KAAa,CACpB,CACA,CAACyD,IAAWz7P,GACV,MAAM0mQ,EAAUnmR,KAAK+5Q,IACrB,GAAgB,UAAZoM,EAEF,YADA1mQ,EAAIle,KAAKgc,GAAkBvd,KAAK03Q,MAGlC,MAAM0O,EAAc/0Q,GAAmB80Q,GACjClT,EAASjzQ,KAAK85Q,MAAkBqK,GAAc,OAAS,GAC7D1kQ,EAAIle,KAAK,IAAI0xQ,IAASmT,KACtB,IAAK,MAAO1jR,EAAMiG,KAAU3I,KAAKkjR,IAAalsN,UAAW,CACvD,MAAMqvN,EAAWh1Q,GAAmB3O,GACpC+c,EAAIle,KAAK,IAAI8kR,MAAa9oQ,GAAkB5U,EAAM+uQ,QACpD,CAQA,GAPyB,OAArB13Q,KAAKsjR,MACHtjR,KAAKsjR,IACP7jQ,EAAIle,KAAK,6BAETke,EAAIle,KAAK,8BAGRvB,KAAK03Q,KAAwC,IAA3B13Q,KAAKojR,IAAW7iR,OAAvC,CAKA,GADAkf,EAAIle,KAAK,KACLvB,KAAK03Q,IACuB,iBAAnB13Q,KAAK03Q,IACdj4P,EAAIle,KAAKgc,GAAkBvd,KAAK03Q,MAEhC13Q,KAAK03Q,IAAUwD,IAAWz7P,QAG5B,IAAK,MAAMgnP,KAASzmQ,KAAKojR,IACvB3c,EAAMyU,IAAWz7P,GAGrBA,EAAIle,KAAK,KAAK0xQ,IAASmT,KAbvB,MAFE3mQ,EAAIle,KAAK,KAgBb,CACA,CAAC04Q,IAAUxT,GACT,GAAIzmQ,KAAK03Q,IAAW,CAClB,MAAM9pO,EAAO,IAAI22O,GAAUvkR,KAAK85Q,IAAe,SAC/C95Q,KAAKm3Q,IAAcvpO,GACnBA,EAAK8pO,IAAY13Q,KAAK03Q,IACtB13Q,KAAK03Q,IAAY,EACnB,CAEA,OADA13Q,KAAKm3Q,IAAc1Q,IACZ,CACT,CACA,CAAC0T,IAASzvQ,GACR1K,KAAK03Q,KAAahtQ,CACpB,CACA,CAACotQ,MACC,GAAI93Q,KAAK03Q,KAAa13Q,KAAKojR,IAAW7iR,OAAS,EAAG,CAChD,MAAMqtC,EAAO,IAAI22O,GAAUvkR,KAAK85Q,IAAe,SAC/C95Q,KAAKm3Q,IAAcvpO,GACnBA,EAAK8pO,IAAY13Q,KAAK03Q,WACf13Q,KAAK03Q,GACd,CACF,CACA,CAACuD,MACC,MAAwB,UAApBj7Q,KAAK+5Q,IACA4D,GAAWG,QAAQ,CACxBp7Q,KAAM,QACNiG,MAAO3I,KAAK03Q,MAGTiG,GAAWE,KACpB,CACA,CAACpF,IAAc/1Q,EAAO,MACpB,OAAKA,EAGE1C,KAAKojR,IAAW5vP,QAAOplB,GAAKA,EAAE2rQ,MAAer3Q,IAF3C1C,KAAKojR,GAGhB,CACA,CAACnL,MACC,OAAOj4Q,KAAKkjR,GACd,CACA,CAAC/K,IAAqBz1Q,GACpB,MAAMiG,EAAQ3I,KAAKkjR,IAAar/Q,IAAInB,GACpC,YAAcU,IAAVuF,EACKA,EAEF3I,KAAKy4Q,IAAc/1Q,EAC5B,CACA,EAAE21Q,IAAsB31Q,EAAMqjR,GAC5B,MAAMp9Q,EAAQ3I,KAAKkjR,IAAar/Q,IAAInB,GAChCiG,UACIA,GAER,IAAK,MAAM89P,KAASzmQ,KAAKojR,IACnB3c,EAAMsT,MAAer3Q,UACjB+jQ,GAEJsf,UACKtf,EAAM4R,IAAsB31Q,EAAMqjR,GAG/C,CACA,EAAE/N,IAAiBt1Q,EAAM4jR,GACvB,MAAM39Q,EAAQ3I,KAAKkjR,IAAar/Q,IAAInB,IAChCiG,GAAW29Q,GAAiB39Q,EAAM8uQ,YAC9B9uQ,GAER,IAAK,MAAM89P,KAASzmQ,KAAKojR,UAChB3c,EAAMuR,IAAiBt1Q,EAAM4jR,EAExC,CACA,EAAE9N,IAA0B91Q,EAAMqjR,EAAgBO,GAChD,IAAK,MAAM7f,KAASzmQ,KAAKojR,IACnB3c,EAAMsT,MAAer3Q,GAAU4jR,GAAiB7f,EAAMgR,YAClDhR,GAEJsf,UACKtf,EAAM+R,IAA0B91Q,EAAMqjR,EAAgBO,GAGnE,CACA,CAAChN,MACC,OAAyB,OAArBt5Q,KAAKsjR,IAC2B,IAA3BtjR,KAAKojR,IAAW7iR,QAAgBP,KAAKojR,IAAW,GAAGtJ,MAAkBwB,GAAaY,MAAMrgP,GAE1F77B,KAAKsjR,GACd,CACA,CAAChL,MACC,OAAyB,OAArBt4Q,KAAKsjR,IACwB,IAA3BtjR,KAAKojR,IAAW7iR,OACXP,KAAK03Q,IAAUlP,OAEpBxoQ,KAAKojR,IAAW,GAAGtJ,MAAkBwB,GAAaY,MAAMrgP,GACnD77B,KAAKojR,IAAW,GAAGrI,MAASvS,OAE9B,KAEFxoQ,KAAK03Q,IAAUlP,MACxB,CACA,CAACqS,IAAWlyQ,GACVA,EAAQA,EAAMA,OAAS,GACvB3I,KAAK03Q,IAAY/uQ,EAAM6D,UACzB,CACA,CAACorQ,IAAO2O,GAAQ,GACd,MAAMzB,EAASphR,OAAOwP,OAAO,MACzBqzQ,IACFzB,EAAO0B,IAAMxmR,KAAK85Q,KAEhB95Q,KAAK03Q,MACPoN,EAAOpN,SAAW13Q,KAAK03Q,KAEzBoN,EAAO2B,MAAQzmR,KAAK+5Q,IACpB+K,EAAOr3O,SAAW,GAClB,IAAK,MAAMg5N,KAASzmQ,KAAKojR,IACvB0B,EAAOr3O,SAASlsC,KAAKklQ,EAAMmR,IAAO2O,IAEpCzB,EAAOjgB,WAAanhQ,OAAOwP,OAAO,MAClC,IAAK,MAAOxQ,EAAMiG,KAAU3I,KAAKkjR,IAC/B4B,EAAOjgB,WAAWniQ,GAAQiG,EAAM+uQ,IAElC,OAAOoN,CACT,EAEF,MAAM4B,WAAsBtC,GAC1B,WAAAn7Q,CAAYo7Q,EAAM3hR,GAChB0G,MAAMi7Q,EAAM3hR,GACZ1C,KAAK03Q,IAAY,EACnB,CACA,CAACyC,IAAS9iB,GACRr3P,KAAK03Q,KAAargB,CACpB,CACA,CAACygB,MAAc,EAEjB,MAAM6O,WAAqBD,GACzB,WAAAz9Q,CAAYo7Q,EAAM3hR,EAAMqF,GACtBqB,MAAMi7Q,EAAM3hR,GACZ1C,KAAK6jR,IAAY97Q,CACnB,CACA,CAAC+vQ,MACC93Q,KAAK03Q,IAAYqF,GAAW,CAC1BhjQ,KAAM/Z,KAAK03Q,IACXkF,aAAc58Q,KAAK6jR,IAAU,GAC7BhH,SAAUrwP,GAAKxsB,KAAK6jR,IAAU/3Q,SAAS0gB,IAE3C,CACA,CAAC6qP,IAAQj1C,GACPh5N,MAAMiuQ,IAAQj1C,UACPpiO,KAAK6jR,GACd,EAEF,MAAM+C,WAAqBF,GACzB,CAAC5O,MACC93Q,KAAK03Q,IAAY13Q,KAAK03Q,IAAUlP,MAClC,EAEF,MAAMqe,WAAsBH,GAC1B,WAAAz9Q,CAAYo7Q,EAAM3hR,EAAMk6Q,EAAckK,GACpC19Q,MAAMi7Q,EAAM3hR,GACZ1C,KAAKujR,IAAiB3G,EACtB58Q,KAAKikR,IAAc6C,CACrB,CACA,CAAChP,MACC93Q,KAAK03Q,IAAYiF,GAAW,CAC1B5iQ,KAAM/Z,KAAK03Q,IACXkF,aAAc58Q,KAAKujR,IACnB1G,SAAU78Q,KAAKikR,KAEnB,CACA,CAAC5M,IAAQj1C,GACPh5N,MAAMiuQ,IAAQj1C,UACPpiO,KAAKujR,WACLvjR,KAAKikR,GACd,EAEF,MAAM8C,WAAiBF,GACrB,WAAA59Q,CAAYo7Q,EAAM3hR,GAChB0G,MAAMi7Q,EAAM3hR,EAAM,GAAG6J,GAAW,IAANA,GAC5B,EAEF,MAAMy6Q,WAAiBH,GACrB,WAAA59Q,CAAYo7Q,EAAM3hR,GAChB0G,MAAMi7Q,EAAM3hR,EAAM,GAAG6J,GAAW,IAANA,GAC5B,EAUF,SAAS06Q,GAAgB15Q,GACvB,MAAiB,iBAANA,EACF,MAEFiN,OAAOC,UAAUlN,GAAK,GAAGA,MAAQ,GAAGA,EAAEwR,QAAQ,MACvD,CACA,MAAMmoQ,GAAa,CACjB,UAAAC,CAAWv5O,EAAM4rM,GACf,MAAMpjO,EAASw3B,EAAKgrO,MACpB,GAAKxiQ,KAAUA,EAAOolD,QAA4B,aAAlBplD,EAAOolD,QAMvC,OAHM,cAAeg+K,IACnBA,EAAMxsO,UAAY,IAEZ4gC,EAAKu5O,YACX,IAAK,eACH3tC,EAAMxsO,WAAa,yBACnB,MACF,IAAK,aACHwsO,EAAMxsO,WAAa,qBACnB,MACF,IAAK,cACHwsO,EAAMxsO,WAAa,yBACnB,MACF,IAAK,eACHwsO,EAAMxsO,WAAa,uBACnB,MACF,IAAK,aACHwsO,EAAMxsO,WAAa,oBACnB,MACF,IAAK,cACHwsO,EAAMxsO,WAAa,wBACnB,MACF,IAAK,YACHwsO,EAAMxsO,WAAa,oBACnB,MACF,IAAK,WACHwsO,EAAMxsO,WAAa,qBAGzB,EACA,UAAAo6Q,CAAWx5O,EAAM4rM,GACf,MAAMpjO,EAASw3B,EAAKgrO,MACpB,IAAI/4P,EAAQ+tB,EAAKmmJ,EACjB,MAAMj0K,EAAS8tB,EAAK2F,EACpB,GAAIn9B,EAAOolD,QAAQ1vD,SAAS,OAAQ,CAClC,MAAM2uO,EAAQrkO,EAAOyhQ,IACfwP,EAAUz5O,EAAKy5O,QACrB,IAAItzF,GACa,IAAbszF,GACFtzF,EAAI0mD,EAAM6sC,aAAa15Q,MAAM6sO,EAAM8sC,eAAezgE,QAAO,CAAC34M,EAAG4B,IAAM5B,EAAI4B,GAAG,GAC1E0qO,EAAM8sC,cAAgB,IAEtBxzF,EAAI0mD,EAAM6sC,aAAa15Q,MAAM6sO,EAAM8sC,cAAe9sC,EAAM8sC,cAAgBF,GAASvgE,QAAO,CAAC34M,EAAG4B,IAAM5B,EAAI4B,GAAG,GACzG0qO,EAAM8sC,eAAiB9sC,EAAM8sC,cAAgB35O,EAAKy5O,SAAW5sC,EAAM6sC,aAAa/mR,QAE7Eie,MAAMu1K,KACTl0K,EAAQ+tB,EAAKmmJ,EAAIA,EAErB,CACAylD,EAAM35N,MAAkB,KAAVA,EAAeonQ,GAAgBpnQ,GAAS,OACtD25N,EAAM15N,OAAoB,KAAXA,EAAgBmnQ,GAAgBnnQ,GAAU,MAC3D,EACA,QAAAuB,CAASusB,EAAM4rM,GACb,MAAMpjO,EAASw3B,EAAKgrO,MAChBxiQ,GAAQolD,QAA4B,aAAlBplD,EAAOolD,SAG7Bg+K,EAAMn4N,SAAW,WACjBm4N,EAAMzwL,KAAOk+N,GAAgBr5O,EAAK79B,GAClCypO,EAAMkmC,IAAMuH,GAAgBr5O,EAAK59B,GACnC,EACA,MAAAumP,CAAO3oN,EAAM4rM,GACP5rM,EAAK2oN,SACD,cAAe/c,IACnBA,EAAMxsO,UAAY,IAEpBwsO,EAAMxsO,WAAa,WAAW4gC,EAAK2oN,aACnC/c,EAAMguC,gBAAkB,WAE5B,EACA,QAAAC,CAAS75O,EAAM4rM,GACb,OAAQ5rM,EAAK65O,UACX,IAAK,YACHjuC,EAAMkuC,WAAa,SACnB,MACF,IAAK,SACL,IAAK,WACHluC,EAAMmuC,QAAU,OAGtB,EACA,MAAAC,CAAOh6O,EAAM4rM,GACX,GAAwB,SAApB5rM,EAAKmsO,IACP,OAAQnsO,EAAKg6O,QACX,IAAK,aACHpuC,EAAMquC,UAAY,cAClB,MACF,IAAK,QACHruC,EAAMquC,UAAY,OAClB,MACF,QACEruC,EAAMquC,UAAYj6O,EAAKg6O,YAG3B,OAAQh6O,EAAKg6O,QACX,IAAK,OACHpuC,EAAMsuC,UAAY,QAClB,MACF,IAAK,SACHtuC,EAAMsuC,UAAY,SAClB,MACF,IAAK,QACHtuC,EAAMsuC,UAAY,MAI1B,EACA,MAAAvI,CAAO3xO,EAAM4rM,GACP5rM,EAAK2xO,SACP/lC,EAAM+lC,OAAS3xO,EAAK2xO,OAAOpE,MAAYoE,OAE3C,GAEF,SAASwI,GAAoBn6O,EAAM4rM,GAEX,aADP5rM,EAAKgrO,MACTp9M,SACL5tB,EAAKo6O,KAAO,IACdxuC,EAAMyuC,SAAWhB,GAAgBr5O,EAAKo6O,OAEpCp6O,EAAKs6O,KAAO,IACd1uC,EAAMl3M,SAAW2kP,GAAgBr5O,EAAKs6O,OAEpCt6O,EAAKu6O,KAAO,IACd3uC,EAAM4uC,UAAYnB,GAAgBr5O,EAAKu6O,OAErCv6O,EAAKwI,KAAO,IACdojM,EAAMwE,UAAYipC,GAAgBr5O,EAAKwI,OAG7C,CACA,SAASiyO,GAAWhxB,EAAM8nB,EAASI,EAAQ7oD,EAAY8oD,EAAY3/P,GACjE,MAAMyoQ,EAAU,IAAI/H,GAAYpB,EAASI,EAAQ7oD,EAAY8oD,GAM7D,MALoB,iBAATnoB,EACTixB,EAAQ3H,UAAUtpB,GAElBA,EAAK+iB,IAAakO,GAEbA,EAAQrH,QAAQphQ,EACzB,CACA,SAAS0oQ,GAAW36O,EAAMm3O,GACxB,IAAIjlQ,EAAS,KACTD,EAAQ,KACRyhQ,GAAW,EACf,KAAM1zO,EAAKmmJ,IAAMnmJ,EAAK2F,IAAM3F,EAAKjlC,MAAO,CACtC,IAAI6/Q,EAAU,EACVC,EAAU,EACV76O,EAAK2xO,SACPiJ,EAAU56O,EAAK2xO,OAAOmJ,UAAY96O,EAAK2xO,OAAOoJ,WAC9CF,EAAU76O,EAAK2xO,OAAOqJ,SAAWh7O,EAAK2xO,OAAOsJ,aAE/C,IAAInyD,EAAa,KACb6oD,EAAS,KACT3xO,EAAK62O,OACPlF,EAAS77Q,OAAOwP,OAAO,MACvBwjN,EAAsC,KAAzB9oL,EAAK62O,KAAK/tD,WAAoB,KAAO9oL,EAAK62O,KAAK/tD,WAC5D6oD,EAAOG,IAA+B,KAAzB9xO,EAAK62O,KAAKqE,WAAoB,EAAIl7O,EAAK62O,KAAKqE,WACzDvJ,EAAOI,OAAkC,KAAzB/xO,EAAK62O,KAAKsE,WAAoB,EAAIn7O,EAAK62O,KAAKsE,WAC5DxJ,EAAOx2N,KAAgC,KAAzBnb,EAAK62O,KAAKuE,WAAoB,EAAIp7O,EAAK62O,KAAKuE,WAC1DzJ,EAAOK,MAAkC,KAA1BhyO,EAAK62O,KAAKwE,YAAqB,EAAIr7O,EAAK62O,KAAKwE,aAE9D,IAAI3mE,EAAO10K,EAAK00K,KAChB,IAAKA,EAAM,CACT,MAAM6gD,EAAOv1N,EAAKkrO,MAClB,IAAI1iQ,EAASw3B,EAAKirO,MAClB,KAAOziQ,GAAUA,IAAW+sP,GAAM,CAChC,GAAI/sP,EAAOksM,KAAM,CACfA,EAAOlsM,EAAOksM,KACd,KACF,CACAlsM,EAASA,EAAOyiQ,KAClB,CACF,CACA,MAAMv2O,GAAYsL,EAAKmmJ,GAAKgxF,EAAellQ,OAAS2oQ,EAC9ChJ,EAAa5xO,EAAKmrO,IAAayG,WACrC,GAAI5xO,EAAKjlC,MAAMugR,QAAUt7O,EAAKjlC,MAAMugR,OAAOxR,KAA+C,cAAlC9pO,EAAKjlC,MAAMugR,OAAOC,YAA6B,CACrG,MAAM3kD,EAAM6jD,GAAWz6O,EAAKjlC,MAAMugR,OAAOxR,IAAWp1D,EAAMi9D,EAAQ7oD,EAAY8oD,EAAYl9O,GAC1FziB,EAAQ2kN,EAAI3kN,MACZC,EAAS0kN,EAAI1kN,OACbwhQ,EAAW98C,EAAI88C,QACjB,KAAO,CACL,MAAMjqB,EAAOzpN,EAAKjlC,MAAMoyQ,MACxB,GAAI1jB,EAAM,CACR,MAAM7yB,EAAM6jD,GAAWhxB,EAAM/0C,EAAMi9D,EAAQ7oD,EAAY8oD,EAAYl9O,GACnEziB,EAAQ2kN,EAAI3kN,MACZC,EAAS0kN,EAAI1kN,OACbwhQ,EAAW98C,EAAI88C,QACjB,CACF,CACc,OAAVzhQ,GAAmB+tB,EAAKmmJ,IAC1Bl0K,GAAS2oQ,GAEI,OAAX1oQ,GAAoB8tB,EAAK2F,IAC3BzzB,GAAU2oQ,EAEd,CACA,MAAO,CACL10F,EAAGl0K,EACH0zB,EAAGzzB,EACHwhQ,WAEJ,CACA,SAAS8H,GAAYx7O,EAAMmwO,EAAMgH,GAC/B,IAAIr1D,EACJ,GAAe,KAAX9hL,EAAKmmJ,GAAuB,KAAXnmJ,EAAK2F,EACxBm8K,EAAO,CAAC9hL,EAAK79B,EAAG69B,EAAK59B,EAAG49B,EAAKmmJ,EAAGnmJ,EAAK2F,OAChC,CACL,IAAKwxO,EACH,OAAO,KAET,IAAIllQ,EAAQ+tB,EAAKmmJ,EACjB,GAAc,KAAVl0K,EAAc,CAChB,GAAkB,IAAd+tB,EAAKs6O,KAAY,CACnB,MAAM9xQ,EAASw3B,EAAKgrO,MACpB/4P,EAA0B,aAAlBzJ,EAAOolD,QAAsC,KAAbplD,EAAO29K,EAAW,EAAInmJ,EAAKo6O,IACrE,MACEnoQ,EAAQzV,KAAKC,IAAIujC,EAAKs6O,KAAMnD,EAAellQ,OAE7Ck+P,EAAKlZ,WAAWrrB,MAAM35N,MAAQonQ,GAAgBpnQ,EAChD,CACA,IAAIC,EAAS8tB,EAAK2F,EAClB,GAAe,KAAXzzB,EAAe,CACjB,GAAkB,IAAd8tB,EAAKwI,KAAY,CACnB,MAAMhgC,EAASw3B,EAAKgrO,MACpB94P,EAA2B,aAAlB1J,EAAOolD,QAAsC,KAAbplD,EAAOm9B,EAAW,EAAI3F,EAAKu6O,IACtE,MACEroQ,EAAS1V,KAAKC,IAAIujC,EAAKwI,KAAM2uO,EAAejlQ,QAE9Ci+P,EAAKlZ,WAAWrrB,MAAM15N,OAASmnQ,GAAgBnnQ,EACjD,CACA4vM,EAAO,CAAC9hL,EAAK79B,EAAG69B,EAAK59B,EAAG6P,EAAOC,EACjC,CACA,OAAO4vM,CACT,CACA,SAAS25D,GAAcz7O,GACrB,MAAMx3B,EAASw3B,EAAKgrO,MACpB,GAAIxiQ,EAAOolD,QAAQ1vD,SAAS,OAAQ,CAClC,MAAM2uO,EAAQrkO,EAAOyhQ,IACfwP,EAAUz5O,EAAKy5O,QACrB,IAAIxnQ,EAEFA,GADe,IAAbwnQ,EACM5sC,EAAM6sC,aAAa15Q,MAAM6sO,EAAM8sC,eAAezgE,QAAO,CAAC34M,EAAG4lL,IAAM5lL,EAAI4lL,GAAG,GAEtE0mD,EAAM6sC,aAAa15Q,MAAM6sO,EAAM8sC,cAAe9sC,EAAM8sC,cAAgBF,GAASvgE,QAAO,CAAC34M,EAAG4lL,IAAM5lL,EAAI4lL,GAAG,GAE1Gv1K,MAAMqB,KACT+tB,EAAKmmJ,EAAIl0K,EAEb,CACIzJ,EAAOolD,QAA4B,aAAlBplD,EAAOolD,SAC1B5tB,EAAK79B,EAAI69B,EAAK59B,EAAI,GAEA,UAAhB49B,EAAK4tB,QACQ,KAAX5tB,EAAKmmJ,GAAY3yL,MAAMsT,QAAQk5B,EAAK05O,gBACtC15O,EAAKmmJ,EAAInmJ,EAAK05O,aAAaxgE,QAAO,CAAC34M,EAAG4B,IAAM5B,EAAI4B,GAAG,GAGzD,CACA,SAASu5Q,GAAY17O,GACnB,OAAQA,EAAK4tB,QACX,IAAK,WAcL,QACE,MAAO,cAbT,IAAK,QACH,MAAO,UACT,IAAK,SACH,MAAO,WACT,IAAK,QACH,MAAO,UACT,IAAK,MACH,MAAO,SACT,IAAK,QACH,MAAO,WACT,IAAK,KACH,MAAO,QAIb,CACA,SAAS+tN,GAAQ37O,KAAS8mB,GACxB,MAAM8kL,EAAQ91O,OAAOwP,OAAO,MAC5B,IAAK,MAAMxQ,KAAQgyD,EAAO,CACxB,MAAM/rD,EAAQilC,EAAKlrC,GACnB,GAAc,OAAViG,EAGJ,GAAIu+Q,GAAWljR,eAAetB,GAC5BwkR,GAAWxkR,GAAMkrC,EAAM4rM,QAGzB,GAAI7wO,aAAiBy7Q,GAAW,CAC9B,MAAMoF,EAAW7gR,EAAMwyQ,MACnBqO,EACF9lR,OAAO+5C,OAAO+7L,EAAOgwC,GAErBhiR,EAAK,6BAA6B9E,wBAEtC,CACF,CACA,OAAO82O,CACT,CACA,SAASiwC,GAAc77O,EAAMmwO,GAC3B,MAAM,WACJlZ,GACEkZ,GACE,MACJvkC,GACEqrB,EACE6kB,EAAU,CACdhnR,KAAM,MACNmiQ,WAAY,CACV8kB,MAAO,CAAC,cACRnwC,MAAO91O,OAAOwP,OAAO,OAEvBu6B,SAAU,IAGZ,GADAo3N,EAAW8kB,MAAMpoR,KAAK,cAClBqsC,EAAKg8O,OAAQ,CACf,MAAM,OACJrzN,EAAM,OACNszN,GACEj8O,EAAKg8O,OAAO/R,IAChB,IAAIh4P,EAAOC,EACP4/P,EAAMmK,EAAO,GACb9gO,EAAO8gO,EAAO,GAClB,MAAMC,EAAUD,EAAO,GAAKA,EAAO,GAC7BE,EAAUF,EAAO,GAAKA,EAAO,GACnC,OAAQj8O,EAAKg8O,OAAOI,MAClB,IAAK,OACHtK,GAAOnpN,EAAO,GAAK,EACnBxN,GAAQwN,EAAO,GAAK,EACpB12C,EAAQ,gBAAgB02C,EAAO,GAAKA,EAAO,IAAM,EAAIwzN,OACrDjqQ,EAAS,gBAAgBy2C,EAAO,GAAKA,EAAO,IAAM,EAAIuzN,OACtD,MACF,IAAK,OACHpK,GAAOnpN,EAAO,GACdxN,GAAQwN,EAAO,GACf12C,EAAQ,eAAe02C,EAAO,GAAKA,EAAO,GAAKwzN,OAC/CjqQ,EAAS,eAAey2C,EAAO,GAAKA,EAAO,GAAKuzN,OAChD,MACF,IAAK,QACHjqQ,EAAQkqQ,EAAU,eAAeA,OAAe,OAChDjqQ,EAASgqQ,EAAU,eAAeA,OAAe,OAGrD,MAAMG,EAAa,CAAC,aAChBC,GAAYt8O,EAAKg8O,SACnBK,EAAW1oR,KAAK,gBAElB,MAAMqoR,EAAS,CACblnR,KAAM,MACNmiQ,WAAY,CACV8kB,MAAOM,EACPzwC,MAAO,CACLkmC,IAAK,GAAGA,MACR32N,KAAM,GAAGA,MACTlpC,QACAC,WAGJ2tB,SAAU,IAEZ,IAAK,MAAMjqC,IAAO,CAAC,SAAU,cAAe,cAAe,eAAgB,oBACtDJ,IAAfo2O,EAAMh2O,KACRomR,EAAO/kB,WAAWrrB,MAAMh2O,GAAOg2O,EAAMh2O,UAC9Bg2O,EAAMh2O,IAGjBkmR,EAAQj8O,SAASlsC,KAAKqoR,EAAQ7L,EAChC,MACE2L,EAAQj8O,SAASlsC,KAAKw8Q,GAExB,IAAK,MAAMv6Q,IAAO,CAAC,aAAc,iBAAkB,MAAO,OAAQ,QAAS,SAAU,WAAY,YAAa,WAAY,YAAa,YAAa,kBAAmB,mBAClJJ,IAAfo2O,EAAMh2O,KACRkmR,EAAQ7kB,WAAWrrB,MAAMh2O,GAAOg2O,EAAMh2O,UAC/Bg2O,EAAMh2O,IASjB,OANAkmR,EAAQ7kB,WAAWrrB,MAAMn4N,SAA8B,aAAnBm4N,EAAMn4N,SAA0B,WAAa,kBAC1Em4N,EAAMn4N,SACTm4N,EAAMsuC,YACR4B,EAAQ7kB,WAAWrrB,MAAMsuC,UAAYtuC,EAAMsuC,iBACpCtuC,EAAMsuC,WAER4B,CACT,CACA,SAASS,GAAc32B,GACrB,MAAM42B,EAASnN,GAAezpB,EAAO62B,WAAY,OACjD,GAAID,GAAU,EACZ,OAEF,MACM1nR,EAAO,WAAuB,SADD,UAArB8wP,EAAOq0B,UAAwB,QAAU,QACV,OAAS,SAChDyC,EAAUrN,GAAezpB,EAAO9wP,GAAO,OAC7C8wP,EAAO9wP,GAAW4nR,EAAUF,EAAb,IACjB,CACA,SAASG,GAAU38O,EAAMq8O,GACvB,OAAQr8O,EAAK48O,QACX,IAAK,iBACHP,EAAW1oR,KAAK,qBAChB,MACF,IAAK,WACH0oR,EAAW1oR,KAAK,eAChB,MACF,IAAK,YACH0oR,EAAW1oR,KAAK,eAGtB,CACA,SAAS2oR,GAAYt8O,GACnB,OAAOA,EAAK68O,SAASlqR,OAAS,IAAMqtC,EAAK68O,SAAS,GAAGhN,UAA0C,UAA9B7vO,EAAK68O,SAAS,GAAG/M,QACpF,CACA,SAASgN,GAAe98O,GACtB,MAAMxc,EAAQwc,EAAKkrO,MAAoBjB,IAAQ6M,UAC/C,OAAOtzP,EAAM7wB,OAAS6wB,EAAMgM,IAAI,GAAK,IACvC,CACA,SAASutP,GAAQ/8O,EAAMg9O,EAAWjiR,GAChC,GAAIA,EAAMk8P,WAAW8kB,OAAO79Q,SAAS,WAAY,CAC3C8+Q,IACa,KAAXh9O,EAAK2F,IACPq3O,EAAU9qQ,OAAS,QAEN,KAAX8tB,EAAKmmJ,IACP62F,EAAU/qQ,MAAQ,SAGtB,MAAM4kQ,EAAOiG,GAAe98O,GAC5B,GAAI62O,EAAM,CACR,MAAMoG,EAAaliR,EAAMk8P,WAAWrrB,MAGpC,OAFAqxC,EAAWlD,QAAU,OACrBkD,EAAWC,cAAgB,SACnBrG,EAAKsG,QACX,IAAK,MACHF,EAAWG,eAAiB,QAC5B,MACF,IAAK,SACHH,EAAWG,eAAiB,MAC5B,MACF,IAAK,SACHH,EAAWG,eAAiB,SAGhC,MAAMC,EAAYxG,EAAKtJ,MACvB,IAAK,MAAO33Q,EAAK0pB,KAAQxpB,OAAOszD,QAAQi0N,GAChCznR,KAAOqnR,IACXA,EAAWrnR,GAAO0pB,EAGxB,CACF,CACF,CACA,SAASg+P,GAAc/L,EAASvxO,EAAM4xO,EAAYhmC,GAChD,IAAKgmC,EAEH,mBADOhmC,EAAM77N,WAGf,MAAMjb,EAAOg6Q,GAAYyC,EAAQC,UACjC5lC,EAAM77N,WAAa,IAAIjb,KACvB,MAAM08Q,EAAWI,EAAWT,KAAKr8Q,GACjC,GAAI08Q,EAAU,CACZ,MAAM,WACJzhQ,GACEyhQ,EAASX,QAAQxgQ,YACjBN,IAAejb,IACjB82O,EAAM77N,WAAa,IAAIA,MAEzB,MAAM8mQ,EAAOiG,GAAe98O,GAC5B,GAAI62O,GAA4B,KAApBA,EAAK/tD,WACf,OAEF,GAAI8iB,EAAM9iB,WACR,OAEF,MAAM6nD,EAAUW,GAAWC,EAASC,GAChCb,IACF/kC,EAAM9iB,WAAatsN,KAAK2D,IAAI,IAAKwwQ,EAAQ7nD,YAE7C,CACF,CACA,SAASy0D,GAAOzgR,GACd,MAAMpC,EAAcV,EAAuB8C,EAAK,KAAM,CACpD1C,oBAAoB,EACpBI,oBAAoB,IAEtB,OAAOE,EAAcA,EAAYmtQ,KAAO,IAC1C,CAKA,SAAS2V,GAAWx9O,EAAMH,GACxB,MAAO,CACL/qC,KAAM,MACNmiQ,WAAY,CACV8kB,MAAO,CAAiB,UAAhB/7O,EAAK4tB,OAAqB,QAAU,UAE9C/tB,WAEJ,CACA,SAAS49O,GAAUz9O,GACjB,IAAKA,EAAKiqO,IACR,OAAO,KAET,MACMkG,EAAO,CACXr7Q,KAAM,MACNmiQ,WAHiBj3N,EAAKiqO,IAAQhT,WAI9Bp3N,SAAUG,EAAKiqO,IAAQpqO,UAEzB,GAAIG,EAAKiqO,IAAQmN,YAAa,CAC5B,MAAMsG,EAAkB19O,EAAKiqO,IAAQmN,YAAYjN,MAC7CuT,IACE19O,EAAK4tB,OAAOqjN,SAAS,OACvBd,EAAKtwO,SAASlsC,KAAK6pR,GAAWx9O,EAAM,CAAC09O,KAErCvN,EAAKtwO,SAASlsC,KAAK+pR,GAGzB,CACA,OAA6B,IAAzBvN,EAAKtwO,SAASltC,OACT,KAEFw9Q,CACT,CACA,SAASwN,GAAQ39O,EAAMmwO,EAAMruD,GAC3B,MAAM+qB,EAAQ7sM,EAAKiqO,IACbkN,EAAiBtqC,EAAMsqC,gBACtBh1Q,EAAGC,EAAG+jL,EAAGxgJ,GAAKm8K,EACrB,OAAQ9hL,EAAK4tB,QACX,IAAK,WAEDi/K,EAAM56N,MAAQzV,KAAK2D,IAAI0sO,EAAM56N,MAAO9P,EAAIgkL,GACxC0mD,EAAM36N,OAAS1V,KAAK2D,IAAI0sO,EAAM36N,OAAQ9P,EAAIujC,GAC1CknM,EAAMhtM,SAASlsC,KAAKw8Q,GACpB,MAEJ,IAAK,QACL,IAAK,QACEtjC,EAAMjtM,MAA0B,IAAlBitM,EAAM+wC,UACvB/wC,EAAMjtM,KAAO49O,GAAWx9O,EAAM,IAC9B6sM,EAAMhtM,SAASlsC,KAAKk5O,EAAMjtM,MAC1BitM,EAAMgxC,aAAe,GAEvBhxC,EAAMgxC,cAAgB,EACtBhxC,EAAMjtM,KAAKC,SAASlsC,KAAKw8Q,GACH,IAAlBtjC,EAAM+wC,SACR/wC,EAAMtxM,cAAgB4qJ,EACtB0mD,EAAM36N,OAAS1V,KAAK2D,IAAI0sO,EAAM36N,OAAQ26N,EAAMmD,WAAarqM,KAEzDknM,EAAMtxM,aAAe4qJ,EACrB0mD,EAAMmD,WAAanD,EAAM36N,OACzB26N,EAAM36N,QAAUyzB,EAChBknM,EAAM+wC,QAAU,GAElB/wC,EAAM56N,MAAQzV,KAAK2D,IAAI0sO,EAAM56N,MAAO46N,EAAMtxM,cAC1C,MACF,IAAK,SACL,IAAK,MACH,CACEsxM,EAAMhtM,SAASlsC,KAAKw8Q,GACpBtjC,EAAM56N,OAASk0K,EACf0mD,EAAM36N,OAAS1V,KAAK2D,IAAI0sO,EAAM36N,OAAQyzB,GACtC,MAAMzzB,EAASmnQ,GAAgBxsC,EAAM36N,QACrC,IAAK,MAAM2mP,KAAShsB,EAAMhtM,SACxBg5N,EAAM5B,WAAWrrB,MAAM15N,OAASA,EAElC,KACF,CACF,IAAK,QAOL,IAAK,KAED26N,EAAM56N,MAAQzV,KAAKC,IAAI06Q,EAAellQ,MAAOzV,KAAK2D,IAAI0sO,EAAM56N,MAAOk0K,IACnE0mD,EAAM36N,QAAUyzB,EAChBknM,EAAMhtM,SAASlsC,KAAKw8Q,GAI5B,CACA,SAAS2N,GAAkB99O,GACzB,MAAMm3O,EAAiBn3O,EAAKiqO,IAAQkN,eAC9B0D,EAAU76O,EAAK2xO,OAAS3xO,EAAK2xO,OAAOqJ,SAAWh7O,EAAK2xO,OAAOsJ,YAAc,EACzEL,EAAU56O,EAAK2xO,OAAS3xO,EAAK2xO,OAAOmJ,UAAY96O,EAAK2xO,OAAOoJ,WAAa,EAC/E,OAAQ/6O,EAAK4tB,QACX,IAAK,QACL,IAAK,QACH,OAA6B,IAAzB5tB,EAAKiqO,IAAQ2T,QACR,CACL3rQ,MAAOklQ,EAAellQ,MAAQ2oQ,EAAU56O,EAAKiqO,IAAQ1uO,aACrDrpB,OAAQilQ,EAAejlQ,OAAS2oQ,EAAU76O,EAAKiqO,IAAQj6B,YAGpD,CACL/9N,MAAOklQ,EAAellQ,MAAQ2oQ,EAC9B1oQ,OAAQilQ,EAAejlQ,OAAS2oQ,EAAU76O,EAAKiqO,IAAQ/3P,QAE3D,IAAK,SACL,IAAK,MAEH,MAAO,CACLD,MAFY+tB,EAAKiqO,IAAQyP,aAAa15Q,MAAMggC,EAAKiqO,IAAQ0P,eAAezgE,QAAO,CAAC34M,EAAG4B,IAAM5B,EAAI4B,IAG7F+P,OAAQilQ,EAAejlQ,OAAS0oQ,GAEpC,IAAK,QACL,IAAK,KACH,MAAO,CACL3oQ,MAAOklQ,EAAellQ,MAAQ2oQ,EAC9B1oQ,OAAQilQ,EAAejlQ,OAAS2oQ,EAAU76O,EAAKiqO,IAAQ/3P,QAG3D,QACE,OAAOilQ,EAEb,CAmDA,SAAS4G,GAAgB/9O,EAAMgqI,GAC7B,GAA2D,OAAvDhqI,EAAKkrO,MAAoBjB,IAAQ+T,kBACnC,OAAO,EAET,GAAe,IAAXh+O,EAAKmmJ,GAAsB,IAAXnmJ,EAAK2F,EACvB,OAAO,EAET,MACMn9B,EAASw3B,EAAKgrO,MACd4S,EAAUp1Q,EAAOyhQ,KAAS2T,SAAW,GACpC,CAAEx7Q,EAAG+jL,EAAGxgJ,GA5DjB,SAA4B3F,GAC1B,IA6BI79B,EAAGC,EA7BH+jL,EAAe,KAAXnmJ,EAAKmmJ,EAAWjyI,IAAMlU,EAAKmmJ,EAC/BxgJ,EAAe,KAAX3F,EAAK2F,EAAWuO,IAAMlU,EAAK2F,GAC9Bs4O,EAASC,GAAW,CAAC,EAAG,GAC7B,OAAQl+O,EAAKu5O,YAAc,IACzB,IAAK,gBACF0E,EAASC,GAAW,CAAC/3F,EAAI,EAAGxgJ,GAC7B,MACF,IAAK,cACFs4O,EAASC,GAAW,CAAC,EAAGv4O,GACzB,MACF,IAAK,eACFs4O,EAASC,GAAW,CAAC/3F,EAAGxgJ,GACzB,MACF,IAAK,gBACFs4O,EAASC,GAAW,CAAC/3F,EAAI,EAAGxgJ,EAAI,GACjC,MACF,IAAK,cACFs4O,EAASC,GAAW,CAAC,EAAGv4O,EAAI,GAC7B,MACF,IAAK,eACFs4O,EAASC,GAAW,CAAC/3F,EAAGxgJ,EAAI,GAC7B,MACF,IAAK,aACFs4O,EAASC,GAAW,CAAC/3F,EAAI,EAAG,GAC7B,MACF,IAAK,YACF83F,EAASC,GAAW,CAAC/3F,EAAG,GAI7B,OAAQnmJ,EAAK2oN,QAAU,GACrB,KAAK,GACFxmP,EAAGC,GAAK,EAAE67Q,GAAUC,GACrB,MACF,KAAK,IACF/7Q,EAAGC,GAAK,EAAE87Q,EAASD,IACnB93F,EAAGxgJ,GAAK,CAACA,GAAIwgJ,GACd,MACF,KAAK,KACFhkL,EAAGC,GAAK,CAAC67Q,EAASC,IAClB/3F,EAAGxgJ,GAAK,EAAEwgJ,GAAIxgJ,GACf,MACF,KAAK,KACFxjC,EAAGC,GAAK,CAAC87Q,GAAUD,IACnB93F,EAAGxgJ,GAAK,EAAEA,EAAGwgJ,GAGlB,MAAO,CAACnmJ,EAAK79B,EAAIA,EAAI3F,KAAKC,IAAI,EAAG0pL,GAAInmJ,EAAK59B,EAAIA,EAAI5F,KAAKC,IAAI,EAAGkpC,GAAInpC,KAAK6F,IAAI8jL,GAAI3pL,KAAK6F,IAAIsjC,GAC1F,CAWsBw4O,CAAmBn+O,GACvC,OAAQx3B,EAAOolD,QACb,IAAK,QACL,IAAK,QACH,OAAgB,IAAZgwN,EACG59O,EAAKkrO,MAAoBjB,IAAQmU,gBAevB,KAAXp+O,EAAKmmJ,EACA3pL,KAAK0U,MAAMi1K,EAAInc,EAAM/3J,QAxBtB,EA0BD+3J,EAAM/3J,MA1BL,IASS,KAAX+tB,EAAK2F,GAAYnpC,KAAK0U,MAAMy0B,EAAIqkI,EAAM93J,QATpC,KAYS,KAAX8tB,EAAKmmJ,EACH3pL,KAAK0U,MAAMi1K,EAAInc,EAAM/3J,QAbrB,GAgBgC,IAAhCzJ,EAAOyhQ,IAAQ4T,cACV7zG,EAAM93J,OAjBX,EAqBC83J,EAAM/3J,MArBP,KA4BN+tB,EAAKkrO,MAAoBjB,IAAQmU,mBAGtB,KAAXp+O,EAAK2F,GAAYnpC,KAAK0U,MAAMy0B,EAAIqkI,EAAM93J,QA/BhC,KAkCK,KAAX8tB,EAAKmmJ,GAAY3pL,KAAK0U,MAAMi1K,EAAInc,EAAM/3J,QAlChC,IAqCNzJ,EAAOsjQ,QAFF9hG,EAAM93J,OAnCL,EAyCZ,IAAK,QACL,IAAK,KACH,QAAI8tB,EAAKkrO,MAAoBjB,IAAQmU,kBAGtB,KAAXp+O,EAAK2F,GAAa3F,EAAK6rO,OAGZ,KAAX7rO,EAAKmmJ,GAAY3pL,KAAK0U,MAAMi1K,EAAInc,EAAM/3J,QAjDhC,IAoDNzJ,EAAOsjQ,QAFF9hG,EAAM93J,OAlDL,EA+CD1V,KAAK0U,MAAMy0B,EAAIqkI,EAAM93J,SA/CpB,GAwDZ,IAAK,WACH,QAAI8tB,EAAKkrO,MAAoBjB,IAAQmU,kBAGtB,KAAXp+O,EAAK2F,GAAYnpC,KAAK0U,MAAMy0B,EAAIvjC,EAAI4nK,EAAM93J,SA5DpC,GAgEHyzB,EAAIvjC,EADE49B,EAAKkrO,MAAoBjB,IAAQoU,mBAC1B14O,GACtB,IAAK,SACL,IAAK,MACH,QAAI3F,EAAKkrO,MAAoBjB,IAAQmU,iBAGtB,KAAXp+O,EAAK2F,GACAnpC,KAAK0U,MAAMy0B,EAAIqkI,EAAM93J,SAvEpB,EA0EZ,QACE,OAAO,EAEb,CAaA,MAAMosQ,GAAiB5Q,GAAav9O,SAASlC,GACvCswP,GAAS,6BAITC,GAAkB,WAClBC,GAAQ,IAAI/1Q,IAAI,CAAC,YAAa,aAAc,YAAa,cAAe,YAAa,aAAc,cAAe,YAAa,iBAAkB,aAAc,YAAa,6BAC5Kg2Q,GAAiB,CAAC,CAAC,CAAC,GAAM,IAAO,aAAc,CAAC,CAAC,IAAM,IAAM,KAAO,cAAe,CAAC,CAAC,GAAM,GAAM,GAAM,GAAO,cAAe,CAAC,CAAC,GAAM,GAAM,EAAM,IAAO,cAAe,CAAC,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,IAAO,aAAc,CAAC,CAAC,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAO,cACrR,SAASC,GAAc3+O,GACrB,IAAKA,IAASA,EAAKg8O,OACjB,MAAO,CACL71F,EAAG,EACHxgJ,EAAG,GAGP,MAAMi5O,EAAc5+O,EAAKg8O,OAAOrR,MAChC,OAAKiU,EAME,CACLz4F,EAAGy4F,EAAYj2N,OAAO,GAAKi2N,EAAYj2N,OAAO,GAAKi2N,EAAY3C,OAAO,GAAK2C,EAAY3C,OAAO,GAC9Ft2O,EAAGi5O,EAAYj2N,OAAO,GAAKi2N,EAAYj2N,OAAO,GAAKi2N,EAAY3C,OAAO,GAAK2C,EAAY3C,OAAO,IAPvF,CACL91F,EAAG,EACHxgJ,EAAG,EAOT,CACA,SAASk5O,GAAU7+O,GACjB,OAAOA,EAAK2xO,SAAW3xO,EAAK2xO,OAAOqJ,UAAYh7O,EAAK2xO,OAAOoJ,YAAc/6O,EAAK2xO,OAAOsJ,aAAej7O,EAAK2xO,OAAOmJ,UAClH,CACA,SAASgE,GAAUC,EAAchkR,GAC/B,IAAKgkR,EAAahkR,MAAO,CACvB,MAAMy9P,EAAY,IAAIwmB,GAAM,CAAC,GAC7BD,EAAaxV,IAAc/Q,GAC3BumB,EAAahkR,MAAQy9P,CACvB,CACAumB,EAAahkR,MAAMkyQ,IAAWlyQ,EAChC,CACA,SAAUkkR,GAAqBj/O,GAC7B,IAAK,MAAM64N,KAAS74N,EAAK6qO,MACnBhS,aAAiBqmB,SACZrmB,EAAMiS,YAGTjS,CAEV,CACA,SAASsmB,GAAWn/O,GAClB,MAAmC,UAA5BA,EAAKivO,UAAUmQ,QACxB,CACA,SAASC,GAAYr/O,GACnB,KAAOA,GAAM,CACX,IAAKA,EAAKs/O,UAER,YADAt/O,EAAKktO,IAAaltO,EAAKirO,MAAciC,KAGvC,GAAIltO,EAAKktO,IACP,OAEF,IAAI/lP,EAAO,KACX,IAAK,MAAM0xO,KAAS74N,EAAKs/O,UAAUzU,MACjC,GAAwB,SAApBhS,EAAMrvB,UAAsB,CAC9BriN,EAAO0xO,EACP,KACF,CAEF,IAAK1xO,IAASA,EAAK/e,IAEjB,YADA43B,EAAKktO,IAAaltO,EAAKirO,MAAciC,KAGvC,MAAM3X,EAAOv1N,EAAKkrO,MAClBlrO,EAAKktO,MAAe3X,EAAK2X,IACzB,MAAM9kQ,EAAMmtP,EAAKuX,IAAa3lP,EAAK/e,IAAK43B,GACxC,IAAK53B,EACH,OAEF43B,EAAO53B,EAAI,EACb,CACF,CACA,SAASm3Q,GAAYrpR,EAAK+gQ,GACxB,MAAMuoB,EAAStpR,EAAIspR,OACnB,GAAIA,EAAQ,CACV,MAAMC,EAAcD,EAAOnS,MACvBoS,IACFxoB,EAAWnjQ,MAAQ2rR,GAErB,MACMllR,EADOilR,EAAOvgB,KACD1kQ,MAAMikR,IACzB,GAAIjkR,EAAO,CACT,MAAMmlR,EAAW,UACXC,EAAYplR,EAAM,GACxB08P,EAAWgI,KAAOygB,EAClBzoB,EAAW,cAAgB0oB,CAC7B,CACF,CACA,GAAmB,UAAfzpR,EAAI03D,OACNqpM,EAAWgI,KAAO,aACb,GAAmB,QAAf/oQ,EAAI03D,OACbqpM,EAAWgI,KAAO,UACb,CACL,MAAMz2P,EAAStS,EAAI+0Q,MACG,QAAlBziQ,EAAOolD,SACTqpM,EAAWgI,KAA+B,OAAxBz2P,EAAOg3Q,QAAQvgB,KAAgB,eAAiB,OAEtE,CACF,CACA,SAAS2gB,GAAU1pR,GACjB,IAAKA,EAAIspR,OACP,OAAO,KAET,MAAMA,EAAStpR,EAAIspR,OACnB,OAAIA,EAAOK,OAAoC,KAA3BL,EAAOK,MAAM/V,IACxB0V,EAAOK,MAAM/V,IAElB0V,EAAOM,QACFN,EAAOM,QAAQhW,IAEjB,IACT,CACA,SAASiW,GAAYhlR,GACnB,OAAOg1Q,GAAWG,QAAQ,CACxBp7Q,KAAM,MACNmiQ,WAAY,CACV8kB,MAAO,CAAC,WACRnwC,MAAO91O,OAAOwP,OAAO,OAEvBu6B,SAAU,CAAC,CACT/qC,KAAM,OACNmiQ,WAAY,CACVrrB,MAAO91O,OAAOwP,OAAO,OAEvBvK,WAGN,CACA,SAASilR,GAAqBhgP,GAC5B,MAAMu1N,EAAOv1N,EAAKkrO,MACqB,OAAnC3V,EAAK0U,IAAQ+T,oBACfzoB,EAAK0U,IAAQ+T,kBAAoBh+O,EACjCu1N,EAAK0U,IAAQmU,iBAAkB,EAEnC,CACA,SAAS6B,GAAuBjgP,GAC9B,MAAMu1N,EAAOv1N,EAAKkrO,MACd3V,EAAK0U,IAAQ+T,oBAAsBh+O,IACrCu1N,EAAK0U,IAAQmU,iBAAkB,EAEnC,CACA,SAAS8B,GAAYlgP,GACnB,GAAIA,EAAKiqO,IACP,OAAO,EAGT,GADAjqO,EAAKiqO,IAAUn0Q,OAAOwP,OAAO,MACL,SAApB06B,EAAKmgP,WACP,OAAO,EAET,MAAM5qB,EAAOv1N,EAAKkrO,MAClB,IAAI9C,EAAS,KACb,GAAIpoO,EAAKooO,OAAQ,CAEf,GADAA,EAAS7S,EAAKuX,IAAa9sO,EAAKooO,OAAQpoO,EAAKirO,QACxC7C,EACH,OAAO,EAETA,EAASA,EAAO,EAClB,CACA,MAAM,gBACJgY,EAAe,mBACf/B,GACE9oB,EAAK0U,IACT,GAAwB,aAApBjqO,EAAKmgP,WAIP,OAHM/X,aAAkBiY,KACtBjY,EAAS,MAEPpoO,EAAKsgP,UACPtgP,EAAKiqO,IAAQ7B,OAASA,GAAUgY,GACzB,MACEhY,GAAUA,IAAWgY,IAC9BpgP,EAAKiqO,IAAQ7B,OAASA,EACf,IAILA,aAAkBmY,KACtBnY,EAAS,MAEX,MAAMoY,EAAWpY,GAAUA,EAAO6C,MAClC,IAAIjqO,EACAy/O,EAAeD,EACnB,GAAIxgP,EAAKsgP,SACP,GAAIlY,EAAQ,CACV,MAAMsY,EAAeF,EAASG,YAAY9gP,SACpC+gP,EAAkBF,EAAah+N,QAAQ27N,GACvCwC,EAAiBH,EAAah+N,QAAQ0lN,IACnB,IAArBwY,GAA0BA,EAAkBC,IAC9CJ,EAAe,MAEjBz/O,EAAQ6/O,EAAiB,CAC3B,MACE7/O,EAAQo/O,EAAgBO,YAAY9gP,SAAS6iB,QAAQ27N,OAElD,KAAIjW,GAAUA,IAAWiW,EAK9B,OAAO,EAHPr9O,EADqBw/O,EAASG,YAAY9gP,SACrB6iB,QAAQ0lN,GAAU,EACvCqY,EAAeD,IAAaJ,EAAkB,KAAOI,CAGvD,CAGA,OAFAxgP,EAAKiqO,IAAQ7B,OAASqY,EACtBzgP,EAAKiqO,IAAQjpO,MAAQA,GACd,CACT,CACA,SAAS8/O,GAAe9gP,EAAM+gP,EAAW/2G,GACvC,MAAMurF,EAAOv1N,EAAKkrO,MACZ8V,EAAQzrB,EAAK0U,IAAQmU,gBACrB6C,EAAcF,EAAU/V,IAC9B+V,EAAU/V,IAAqB,IAAMhrO,EACrCu1N,EAAK0U,IAAQmU,iBAAkB,EAC/B,MAAMxnD,EAAMmqD,EAAU1T,IAASrjG,GAC/BhqI,EAAKspO,IAAU1yC,EAAIu5C,KAAMv5C,EAAI9U,MAC7ByzC,EAAK0U,IAAQmU,gBAAkB4C,EAC/BD,EAAU/V,IAAqBiW,CACjC,CACA,MAAMC,WAAyBlI,GAC7B,WAAA39Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,oBACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMwJ,WAAY3K,GAChB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,OAAO,GAC7BlsR,KAAKgvR,SAAWrS,GAAW,CACzB5iQ,KAAM8qP,EAAWmqB,SACjBpS,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKgqR,KAAOhN,GAAgBnY,EAAWmlB,KAAM,CAAC,OAAQ,OAAQ,UAC9DhqR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKivR,WAAanS,GAAS,CACzB/iQ,KAAM8qP,EAAWoqB,WACjBrS,aAAc,EACdC,SAAU9sQ,IAAK,IAEjB/P,KAAKkvR,WAAapS,GAAS,CACzB/iQ,KAAM8qP,EAAWqqB,WACjBtS,aAAc,IACdC,SAAU9sQ,IAAK,IAEjB/P,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKmvR,KAAO,KACZnvR,KAAKunC,KAAO,IACd,CACA,CAAC0zO,MACC,MAAMkU,EAAOnvR,KAAKmvR,MAAQ,IAAIC,GAAK,CAAC,GAC9BC,EAAYF,EAAKhU,MACjB3hC,EAAQ91O,OAAOwP,OAAO,MAQ5B,IAAIuwF,EAPwB,YAAxBzjG,KAAKunC,MAAMkgP,SACb/jR,OAAO+5C,OAAO+7L,EAAOx5O,KAAKunC,KAAK4zO,OAE/B3hC,EAAMjyM,KAAO,cAEfiyM,EAAM81C,YAAcrI,GAAkC,YAAlBkI,EAAK1H,SAAyB0H,EAAKI,UAAY,GACnF/1C,EAAMg2C,OAASH,EAAUlhQ,MAEzB,MAAM02O,EAAa,CACjB4qB,MAAOtD,GACP3yC,MAAO,CACL35N,MAAO,OACPC,OAAQ,OACR4vQ,SAAU,YAGd,GAAwB,MAApB1vR,KAAKkvR,WACPzrL,EAAM,CACJ/gG,KAAM,UACNmiQ,WAAY,CACV4qB,MAAOtD,GACPwD,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJt2C,cAGC,CACL,MAAMy1C,EAAajvR,KAAKivR,WAAa7kR,KAAKhE,GAAK,IACzC8oR,EAAalvR,KAAKkvR,WAAa9kR,KAAKhE,GAAK,IACzC2pR,EAAW/vR,KAAKkvR,WAAa,IAAM,EAAI,GACtC9/Q,EAAII,EAAIH,EAAII,GAAM,CAAC,IAAM,EAAIrF,KAAK0rO,IAAIm5C,IAAc,IAAM,EAAI7kR,KAAK4rO,IAAIi5C,IAAc,IAAM,EAAI7kR,KAAK0rO,IAAIm5C,EAAaC,IAAc,IAAM,EAAI9kR,KAAK4rO,IAAIi5C,EAAaC,KAC1KzrL,EAAM,CACJ/gG,KAAM,OACNmiQ,WAAY,CACV4qB,MAAOtD,GACP7oR,EAAG,KAAK8L,KAAMI,eAAgBugR,OAAc1gR,KAAMI,IAClDugR,aAAc,qBACdx2C,UAGJ91O,OAAO+5C,OAAOonN,EAAY,CACxB5R,QAAS,cACTg9B,oBAAqB,QAEzB,CACA,MAAMC,EAAM,CACVxtR,KAAM,MACN+qC,SAAU,CAACg2D,GACXohK,cAGF,OAAI4nB,GADWzsR,KAAK64Q,MAAcA,OAEzB8E,GAAWG,QAAQ,CACxBp7Q,KAAM,MACNmiQ,WAAY,CACVrrB,MAAO,CACLmuC,QAAS,SACT9nQ,MAAO,OACPC,OAAQ,SAGZ2tB,SAAU,CAACyiP,MAGfA,EAAIrrB,WAAWrrB,MAAMn4N,SAAW,WACzBs8P,GAAWG,QAAQoS,GAC5B,EAEF,MAAMC,WAAa/L,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QAAQ,GAC9BlsR,KAAKqnR,QAAU1K,GAAW,CACxB5iQ,KAAM8qP,EAAWwiB,QACjBzK,aAAc,EACdC,SAAUtwQ,GAAKA,GAAK,IAAY,IAAPA,IAE3BvM,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKyqR,SAAWjN,GAAY3Y,EAAW4lB,UACvCzqR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK+P,EAAIktQ,GAAepY,EAAW90P,EAAG,OACtC/P,KAAKgQ,EAAIitQ,GAAepY,EAAW70P,EAAG,OACtChQ,KAAKskQ,KAAO,KACZtkQ,KAAKowR,OAAS,KACdpwR,KAAKg8O,KAAO,IAAIwoC,GAChBxkR,KAAKqwR,KAAO,IAAI7L,GAChBxkR,KAAKswR,SAAW,IAAI9L,GACpBxkR,KAAKuwR,UAAY,IAAI/L,GACrBxkR,KAAK6vN,MAAQ,IAAI20D,GACjBxkR,KAAKwwR,QAAU,IAAIhM,GACnBxkR,KAAKywR,WAAa,IAAIjM,EACxB,CACA,EAAE9L,YACOmU,GAAqB7sR,KAC9B,CACA,CAAC25Q,MACC,OAAO,CACT,CACA,CAACN,MACC,OAAO,CACT,CACA,CAACnC,IAAU6G,EAAMruD,GACf,MAAO3/M,EAAGC,EAAG+jL,EAAGxgJ,GAAKm8K,EACrB1vN,KAAK63Q,IAAQh4P,MAAQzV,KAAK2D,IAAI/N,KAAK63Q,IAAQh4P,MAAO9P,EAAIgkL,GACtD/zL,KAAK63Q,IAAQ/3P,OAAS1V,KAAK2D,IAAI/N,KAAK63Q,IAAQ/3P,OAAQ9P,EAAIujC,GACxDvzC,KAAK63Q,IAAQpqO,SAASlsC,KAAKw8Q,EAC7B,CACA,CAAC7F,MACC,OAAOl4Q,KAAK63Q,IAAQkN,cACtB,CACA,CAAC9J,IAAS8J,GACR,MAAMvrC,EAAQ+vC,GAAQvpR,KAAM,YACtB6kQ,EAAa,CACjBrrB,QACA39M,GAAI77B,KAAKo7Q,IACTuO,MAAO,CAAC,YAENO,GAAYlqR,OACd6kQ,EAAW8kB,MAAMpoR,KAAK,gBAEpBvB,KAAK0C,OACPmiQ,EAAW6rB,QAAU1wR,KAAK0C,MAE5B,MAAM+qC,EAAW,GACjBztC,KAAK63Q,IAAU,CACbpqO,WACA5tB,MAAO,EACPC,OAAQ,EACRilQ,kBAEF,MAAM/2P,EAAShuB,KAAKo3Q,IAAiB,CACnC5jP,OAAQ,IAAIld,IAAI,CAAC,OAAQ,OAAQ,QAAS,YAAa,UAAW,eAClEs/P,SAAS,IAEX,IAAK5nP,EAAO8vP,QACV,OAAI9vP,EAAOiwP,UACFjwP,UAEFhuB,KAAK63Q,IACL8F,GAAWC,SAEpBpkC,EAAM35N,MAAQonQ,GAAgBjnR,KAAK63Q,IAAQh4P,OAC3C25N,EAAM15N,OAASmnQ,GAAgBjnR,KAAK63Q,IAAQ/3P,QAC5C,MAAMi+P,EAAO,CACXr7Q,KAAM,MACNmiQ,aACAp3N,YAEIiiL,EAAO,CAAC1vN,KAAK+P,EAAG/P,KAAKgQ,EAAGhQ,KAAK63Q,IAAQh4P,MAAO7f,KAAK63Q,IAAQ/3P,QAE/D,cADO9f,KAAK63Q,IACL8F,GAAWG,QAAQC,EAAMruD,EAClC,EAEF,MAAMihE,WAAevM,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UAAU,GAChClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK6sQ,KAAOhI,EAAWgI,MAAQ,GAC/B7sQ,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKytR,MAAQ,KACbztR,KAAK0tR,QAAU,IACjB,CACA,CAACzS,MACC,OAAOj7Q,KAAK0tR,UAAUhW,KAAa,IACrC,EAEF,MAAMkZ,WAAgBxM,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAW,GACjClsR,KAAK6wR,aAAe9T,GAAW,CAC7BhjQ,KAAM8qP,EAAWgsB,aAAehsB,EAAWgsB,aAAaj2Q,cAAgB,GACxEgiQ,aAAc,GACdC,SAAUrwP,GAAK,CAAC,QAAS,WAAY,eAAgB,MAAO,WAAY,UAAW,WAAY,OAAQ,YAAa,QAAS,UAAU1gB,SAAS0gB,IAAMA,EAAErkB,MAAM,oBAEhKnI,KAAKqqN,SAAW2yD,GAAgBnY,EAAWx6C,SAAU,CAAC,OAAQ,SAAU,gBAAiB,SAAU,SACnGrqN,KAAK8wR,gBAAkBnU,GAAW,CAChC5iQ,KAAM8qP,EAAWisB,gBACjBlU,cAAe,EACfC,SAAU9sQ,GAAKA,GAAK,IAEtB/P,KAAK6Z,WAAa8iQ,GAAW,CAC3B5iQ,KAAM8qP,EAAWhrP,WACjB+iQ,cAAe,EACfC,SAAU9sQ,GAAKA,GAAK,IAEtB/P,KAAK+wR,SAAW/T,GAAgBnY,EAAWksB,SAAU,CAAC,OAAQ,kBAC9D/wR,KAAKgxR,aAAerU,GAAW,CAC7B5iQ,KAAM8qP,EAAWmsB,aACjBpU,cAAe,EACfC,SAAU9sQ,GAAKA,GAAK,IAEtB/P,KAAKixR,QAAUpsB,EAAWosB,SAAW,GACrCjxR,KAAKkxR,qBAAuBvU,GAAW,CACrC5iQ,KAAM8qP,EAAWqsB,qBACjBtU,cAAe,EACfC,SAAU9sQ,GAAKA,GAAK,GAAKA,GAAK,IAEhC/P,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKmxR,aAAelU,GAAepY,EAAWssB,aAAc,OAC5DnxR,KAAKoxR,YAAcnU,GAAepY,EAAWusB,YAAa,UAC1DpxR,KAAKqxR,gBAAkB1U,GAAW,CAChC5iQ,KAAM8qP,EAAWwsB,gBACjBzU,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKsxR,eAAiBhU,GAASzY,EAAWysB,gBAC1CtxR,KAAKuxR,UAAY1sB,EAAW0sB,WAAa,GACzCvxR,KAAKwxR,aAAexU,GAAgBnY,EAAW2sB,aAAc,CAAC,QAAS,QAAS,gBAAiB,gBAAiB,SAClHxxR,KAAKyxR,SAAW9U,GAAW,CACzB5iQ,KAAM8qP,EAAW4sB,SACjB7U,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAOsgQ,EAAWtgQ,KAAKqW,cAAgB,GAAI,CAAC,QAAS,UAAW,qBAAsB,sBAAuB,iBAAkB,mBAAoB,WAAY,mBAAoB,SAAU,SAAU,SAAU,UAAW,WAAY,WAAY,WAAY,cAAe,aAAc,OAAQ,WAAY,WAAY,QAAS,YAAa,YAAa,YAAa,MAAO,UAAW,WAAY,MAAO,SAAU,cAAe,UAAW,eAAgB,eAAgB,mBAAoB,kBAAmB,eAAgB,aAAc,YAAa,iBAAkB,aAAc,SAAU,OAAQ,QAAS,gBAAiB,eAAgB,eAAgB,mBAAoB,iBAAkB,UAAW,SAAU,eAAgB,aAAc,OAAQ,WAAY,WAAY,WAAY,OAAQ,WAAY,WAAY,UAAW,UAAW,gBACt3B5a,KAAK0xR,QAAU1U,GAAgBnY,EAAW6sB,QAAS,CAAC,YAAa,uBAAwB,eAAgB,mBACzG1xR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK2xR,gBAAkBrU,GAASzY,EAAW8sB,iBAC3C3xR,KAAK+uQ,QAAU,KACf/uQ,KAAKowR,OAAS,IAChB,EAEF,MAAMwB,WAAaxN,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QAAQ,GAC9BlsR,KAAKmI,MAAQ60Q,GAAgBnY,EAAW18P,MAAO,CAAC,OAAQ,UAAW,SAAU,SAC7EnI,KAAKgW,IAAM6uP,EAAW7uP,KAAO,GAC7BhW,KAAK6xR,QAAU,IACjB,EAEF,MAAMC,WAAkB1N,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,aACtBlsR,KAAK+xR,WAAaltB,EAAWktB,YAAc,GAC3C/xR,KAAKgyR,SAAWntB,EAAWmtB,UAAY,GACvChyR,KAAKgW,IAAM6uP,EAAW7uP,KAAO,GAC7BhW,KAAKiyR,SAAWptB,EAAWotB,UAAY,EACzC,EAEF,MAAMC,WAAgB9N,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKmyR,OAASttB,EAAWstB,QAAU,GACnCnyR,KAAK0wQ,QAAU7L,EAAW6L,SAAW,GACrC1wQ,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAM6M,WAAuBrL,GAC3B,WAAA99Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAACtK,IAAS8J,GACR,OAAO4I,GAA+B,IAAnB3tR,KAAK03Q,IAAkB,IAAM,IAClD,EAEF,MAAM2a,WAAejO,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UAAU,GAChClsR,KAAKsyR,MAAQtV,GAAgBnY,EAAWytB,MAAO,CAAC,QAAS,SACzDtyR,KAAKgqR,KAAOhN,GAAgBnY,EAAWmlB,KAAM,CAAC,OAAQ,OAAQ,UAC9DhqR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKynR,SAAWzK,GAAgBnY,EAAW4iB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFznR,KAAKyqR,SAAWjN,GAAY3Y,EAAW4lB,UACvCzqR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKuyR,OAAS,IAAI/N,GAAe,GACjCxkR,KAAKmvR,KAAO,IAAI3K,GAAe,GAC/BxkR,KAAKowR,OAAS,KACdpwR,KAAKunC,KAAO,KACZvnC,KAAKu/Q,OAAS,IAChB,CACA,CAAChH,MACC,IAAKv4Q,KAAK63Q,IAAS,CACjB,MAAM2a,EAAQxyR,KAAKmvR,KAAK1hP,SAAS7/B,QACjC,GAAI4kR,EAAMjyR,OAAS,EAAG,CACpB,MAAMkyR,EAAcD,EAAMp1P,IAAI,IAAM,IAAIgyP,GAAK,CAAC,GAC9C,IAAK,IAAI9tR,EAAIkxR,EAAMjyR,OAAQe,EAAI,EAAGA,IAChCkxR,EAAMjxR,KAAKkxR,EAEf,CACA,MAAMl8N,EAASi8N,EAAMv2Q,KAAIkzQ,GAAQA,EAAKI,YAChC1F,EAAS,CAAC,EAAG,EAAG,EAAG,GACrB7pR,KAAKu/Q,SACPsK,EAAO,GAAK7pR,KAAKu/Q,OAAOqJ,SACxBiB,EAAO,GAAK7pR,KAAKu/Q,OAAOoJ,WACxBkB,EAAO,GAAK7pR,KAAKu/Q,OAAOsJ,YACxBgB,EAAO,GAAK7pR,KAAKu/Q,OAAOmJ,WAE1B1oR,KAAK63Q,IAAU,CACbthN,SACAszN,SACA2I,QAEJ,CACA,OAAOxyR,KAAK63Q,GACd,CACA,CAACsD,MACC,MAAM,MACJqX,GACExyR,KAAKu4Q,MACHma,EAAaF,EAAMv2Q,KAAI2xB,IAC3B,MAAM4rM,EAAQ5rM,EAAKutO,MAEnB,OADA3hC,EAAMrrN,QAAU,UACTqrN,CAAK,IAERA,EAAQ91O,OAAOwP,OAAO,MAO5B,GANIlT,KAAKu/Q,QACP77Q,OAAO+5C,OAAO+7L,EAAOx5O,KAAKu/Q,OAAOpE,OAEP,YAAxBn7Q,KAAKunC,MAAMkgP,UACb/jR,OAAO+5C,OAAO+7L,EAAOx5O,KAAKunC,KAAK4zO,OAE7Bn7Q,KAAKuyR,OAAO9kP,SAASs1O,MAAKn1O,GAAwB,IAAhBA,EAAK+kP,SAAe,CACxD,MAAMC,EAAe5yR,KAAKuyR,OAAO9kP,SAASxxB,KAAI2xB,GAAQA,EAAKutO,QAC3D,GAA4B,IAAxByX,EAAaryR,QAAwC,IAAxBqyR,EAAaryR,OAAc,CAC1D,MAAMywB,EAAO4hQ,EAAax1P,IAAI,GAC9B,IAAK,IAAI97B,EAAIsxR,EAAaryR,OAAQe,EAAI,EAAGA,IACvCsxR,EAAarxR,KAAKyvB,EAEtB,CACAwoN,EAAMq5C,aAAeD,EAAa32Q,KAAIwX,GAAKA,EAAEk/P,SAAQnoR,KAAK,IAC5D,CACA,OAAQxK,KAAKynR,UACX,IAAK,YACL,IAAK,SACHjuC,EAAMs5C,YAAc,GACpB,MACF,IAAK,WACHt5C,EAAMs5C,YAAc,OACpB,MACF,QACEt5C,EAAMs5C,YAAcJ,EAAWz2Q,KAAIwX,GAAKA,EAAE+lN,QAAOhvO,KAAK,KAK1D,OAFAgvO,EAAMu5C,YAAcL,EAAWz2Q,KAAIwX,GAAKA,EAAE5T,QAAOrV,KAAK,KACtDgvO,EAAMw5C,YAAcN,EAAWz2Q,KAAIwX,GAAKA,EAAEtF,QAAO3jB,KAAK,KAC/CgvO,CACT,EAEF,MAAMy5C,WAAc7O,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,SAAS,GAC/BlsR,KAAKm5O,MAAQ6jC,GAAgBnY,EAAW1rB,MAAO,CAAC,OAAQ,cAAe,WAAY,WAAY,YAC/Fn5O,KAAKkzR,YAAcruB,EAAWquB,aAAe,GAC7ClzR,KAAKk5O,OAAS8jC,GAAgBnY,EAAW3rB,OAAQ,CAAC,OAAQ,cAAe,WAAY,WAAY,YACjGl5O,KAAKmzR,aAAetuB,EAAWsuB,cAAgB,GAC/CnzR,KAAKozR,cAAgBvuB,EAAWuuB,eAAiB,GACjDpzR,KAAKqzR,eAAiBxuB,EAAWwuB,gBAAkB,GACnDrzR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKszR,eAAiBzuB,EAAWyuB,gBAAkB,GACnDtzR,KAAKuzR,eAAiB1uB,EAAW0uB,gBAAkB,GACnDvzR,KAAKwzR,gBAAkB3uB,EAAW2uB,iBAAmB,GACrDxzR,KAAKkuR,SAAWvR,GAAW,CACzB5iQ,KAAM8qP,EAAWqpB,SACjBtR,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,IAChB,EAEF,MAAMqD,WAAmBrP,GACvB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,cAAc,GACpClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKmyR,OAASttB,EAAWstB,QAAU,GACnCnyR,KAAKkuR,SAAWvR,GAAW,CACzB5iQ,KAAM8qP,EAAWqpB,SACjBtR,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKg2Q,OAASnR,EAAWmR,QAAU,GACnCh2Q,KAAK+tR,WAAa/Q,GAAgBnY,EAAWkpB,WAAY,CAAC,OAAQ,cAAe,aACjF/tR,KAAK0wQ,QAAU7L,EAAW6L,SAAW,GACrC1wQ,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK0zR,OAAS,IAChB,EAEF,MAAMC,WAAoBvP,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,eAAe,GACrClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKmyR,OAASttB,EAAWstB,QAAU,GACnCnyR,KAAKkuR,SAAWvR,GAAW,CACzB5iQ,KAAM8qP,EAAWqpB,SACjBtR,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKg2Q,OAASnR,EAAWmR,QAAU,GACnCh2Q,KAAK+tR,WAAa/Q,GAAgBnY,EAAWkpB,WAAY,CAAC,OAAQ,cAAe,aACjF/tR,KAAK0wQ,QAAU7L,EAAW6L,SAAW,GACrC1wQ,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK0zR,OAAS,IAChB,CACA,CAACzY,IAAS8J,GAER,OADA/kR,KAAK63Q,IAAU,CAAC,EACT8F,GAAWC,OACpB,EAEF,MAAMgW,WAAexP,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UAAU,GAChClsR,KAAK6zR,UAAY7W,GAAgBnY,EAAWgvB,UAAW,CAAC,WAAY,OAAQ,UAAW,SACvF7zR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,IAChB,CACA,CAACnV,IAAS8J,GACR,MACM+O,EADS9zR,KAAK64Q,MACGA,MACjBkb,EAAa,CACjBrxR,KAAM,SACNmiQ,WAAY,CACVhpO,GAAI77B,KAAKo7Q,IACTuO,MAAO,CAAC,aACRnwC,MAAO,CAAC,GAEV/rM,SAAU,IAEZ,IAAK,MAAMs0O,KAAS+R,EAAQ/R,MAAMt0O,SAAU,CAC1C,GAAuB,UAAnBs0O,EAAMiS,WAAyBjS,EAAM2R,OACvC,SAEF,MAAMnd,EAAQ93P,GAAasjQ,EAAM2R,OAAOhc,KACxC,IAAKnB,EACH,SAEF,MAAMd,EAAO0V,GAAO5U,EAAM1uQ,KACrB4tQ,GAGLse,EAAWtmP,SAASlsC,KAAK,CACvBmB,KAAM,IACNmiQ,WAAY,CACVhpO,GAAI,OAAS77B,KAAKo7Q,IAClB3F,OACA92P,UAAW43P,EAAM53P,UACjBgrQ,MAAO,CAAC,WACRnwC,MAAO,CAAC,GAEV/rM,SAAU,IAEd,CACA,OAAOkwO,GAAWG,QAAQiW,EAC5B,EAEF,MAAME,WAAkB7P,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,aAAa,GACnClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK8zN,SAAWkpD,GAAgBnY,EAAW/wC,SAAU,CAAC,WAAY,QAAS,SAAU,YACrF9zN,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,KACdpwR,KAAKgJ,QAAU,KACfhJ,KAAK0zR,OAAS,IAChB,EAEF,MAAMQ,WAAgB9P,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAW,GACjClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKm0R,UAAYnX,GAAgBnY,EAAWsvB,UAAW,CAAC,OAAQ,SAAU,SAAU,QAAS,QAC7Fn0R,KAAKynR,SAAWzK,GAAgBnY,EAAW4iB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFznR,KAAKo0R,QAAUhqR,KAAK0Q,KAAKmiQ,GAAepY,EAAWuvB,UACnDp0R,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,KACdpwR,KAAKsiN,KAAO,KACZtiN,KAAKu/Q,OAAS,KACdv/Q,KAAKykR,KAAO,KACZzkR,KAAK2I,MAAQ,IACf,CACA,CAACkyQ,IAAWlyQ,GACV+jR,GAAU1sR,KAAM2I,EAClB,CACA,CAAC4vQ,IAAWwM,GACV,IAAK/kR,KAAK63Q,IAAS,CACjB,IAAI,MACFh4P,EAAK,OACLC,GACEilQ,EACJ,OAAQ/kR,KAAKm0R,WACX,IAAK,OACL,IAAK,QACL,IAAK,SACHt0Q,EAAQ7f,KAAKo0R,SAAW,EAAIv0Q,EAAQ7f,KAAKo0R,QACzC,MACF,IAAK,MACL,IAAK,SACHt0Q,EAAS9f,KAAKo0R,SAAW,EAAIt0Q,EAAS9f,KAAKo0R,QAG/Cp0R,KAAK63Q,IAAU0Q,GAAWvoR,KAAM,CAC9B6f,QACAC,UAEJ,CACA,OAAO9f,KAAK63Q,GACd,CACA,CAACoD,IAAS8J,GACR,IAAK/kR,KAAK2I,MACR,OAAOg1Q,GAAWE,MAEpB79Q,KAAKs6Q,MACL,MAAM3xQ,EAAQ3I,KAAK2I,MAAMsyQ,IAAS8J,GAAgBhH,KAClD,IAAKp1Q,EAEH,OADA3I,KAAKq6Q,MACEsD,GAAWE,MAEpB,MAAMwW,EAAer0R,KAAKo0R,QAC1B,GAAIp0R,KAAKo0R,SAAW,EAAG,CACrB,MAAM,EACJrgG,EAAC,EACDxgJ,GACEvzC,KAAKu4Q,IAAWwM,GACpB,OAAQ/kR,KAAKm0R,WACX,IAAK,OACL,IAAK,QACL,IAAK,SACHn0R,KAAKo0R,QAAUrgG,EACf,MACF,IAAK,MACL,IAAK,SACH/zL,KAAKo0R,QAAU7gP,EAGrB,CACA,MAAM9F,EAAW,GACI,iBAAV9kC,EACT8kC,EAASlsC,KAAK,CACZmB,KAAM,QACNiG,UAGF8kC,EAASlsC,KAAKoH,GAEhB,MAAM6wO,EAAQ+vC,GAAQvpR,KAAM,OAAQ,SAAU,cAC9C,OAAQA,KAAKm0R,WACX,IAAK,OACL,IAAK,QACCn0R,KAAKo0R,QAAU,IACjB56C,EAAM35N,MAAQonQ,GAAgBjnR,KAAKo0R,UAErC,MACF,IAAK,MACL,IAAK,SACCp0R,KAAKo0R,QAAU,IACjB56C,EAAM15N,OAASmnQ,GAAgBjnR,KAAKo0R,UAO1C,OAHAzJ,GAAQ3qR,KAAM,KAAM2I,GACpB3I,KAAKq6Q,MACLr6Q,KAAKo0R,QAAUC,EACR1W,GAAWG,QAAQ,CACxBp7Q,KAAM,MACNmiQ,WAAY,CACVrrB,QACAmwC,MAAO,CAAC,eAEVl8O,YAEJ,EAEF,MAAM6mP,WAAoB1N,GACxB,WAAA39Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,eACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMgP,WAAqBnQ,GACzB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,gBAAgB,GACtClsR,KAAKw0R,uBAAyBxX,GAAgBnY,EAAW2vB,uBAAwB,CAAC,WAAY,aAC9Fx0R,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK6H,IAAMg9P,EAAWh9P,KAAO,GAC7B7H,KAAKy0R,UAAY5vB,EAAW4vB,WAAa,GACzCz0R,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK00R,WAAa,KAClB10R,KAAK20R,QAAU,KACf30R,KAAK40R,SAAW,KAChB50R,KAAK60R,KAAO,KACZ70R,KAAK80R,QAAU,KACf90R,KAAK+0R,WAAa,IACpB,EAEF,MAAMC,WAAoB5Q,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,eAAe,GACrClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKi1R,KAAOjY,GAAgBnY,EAAWowB,KAAM,CAAC,UAAW,QAAS,SAAU,QAAS,UAAW,SAAU,SAC1Gj1R,KAAKk1R,MAAQlY,GAAgBnY,EAAWqwB,MAAO,CAAC,SAAU,UAC1Dl1R,KAAKiU,KAAOgpQ,GAAepY,EAAW5wP,KAAM,QAC5CjU,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK4pR,OAAS,KACd5pR,KAAKowR,OAAS,KACdpwR,KAAKu/Q,OAAS,IAChB,CACA,CAACtE,IAAS8J,GACR,MAAMvrC,EAAQ+vC,GAAQ,UAChBt1Q,EAAOgzQ,GAAgBjnR,KAAKiU,MAElC,IAAI1P,EACA4wR,EACAC,EAHJ57C,EAAM35N,MAAQ25N,EAAM15N,OAAS7L,EAI7B,MAAM47M,EAAQ7vN,KAAK64Q,MAAcA,MAC3B/hQ,EAAQ+4M,EAAM/4M,MAAM22B,SAASltC,QAAUsvN,EAAM/4M,MAAM22B,SAAS,GAAGwtO,MAAW8C,MAAQ,GAClFsX,EAAgB,CACpBrzR,SAAkBoB,IAAb0T,EAAM,GAAmBA,EAAM,GAAK,MAAMtK,WAC/CrK,UAAmBiB,IAAb0T,EAAM,GAAmBA,EAAM,GAAK,OAAOtK,YAG7Co8O,GADQ/4B,EAAMlnN,QAAQoyQ,OAAY,SACdsa,EAAcrzR,SAAMoB,EACxCm/Q,EAAY1yD,EAAM+oD,MAClB0c,EAAUzlE,EAAMurD,IACtB,IAAIma,EACAhT,aAAqBiT,IACvBJ,EAAU7S,EAAUnH,IACpB72Q,EAAO,QACP4wR,EAAY,WACZI,EAAShT,EAAU5K,MAASyD,KAASmH,EAAUnH,MAE/C72Q,EAAO,WACP4wR,EAAY,cACZI,EAAS1lE,EAAM8nD,MAASyD,KAASvrD,EAAMurD,KAEzC,MAAMnnP,EAAQ,CACZvxB,KAAM,QACNmiQ,WAAY,CACV8kB,MAAO,CAACwL,GACR37C,QACA87C,UACAC,SACAhxR,OACAqkP,UACA6sC,MAAOJ,EAAcrzR,GACrB0zR,OAAQL,EAAclzR,IACtB,aAAcqrR,GAAU39D,GACxB,iBAAiB,IAUrB,OAPIulE,IACFnhQ,EAAM4wO,WAAWniQ,KAAO0yR,GAEtBrI,GAAWl9D,KACb57L,EAAM4wO,WAAW,kBAAmB,EACpC5wO,EAAM4wO,WAAW8wB,UAAW,GAEvBhY,GAAWG,QAAQ,CACxBp7Q,KAAM,QACNmiQ,WAAY,CACV8kB,MAAO,CAAC,aAEVl8O,SAAU,CAACxZ,IAEf,EAEF,MAAM2hQ,WAAmBxR,GACvB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,cAAc,GACpClsR,KAAK61R,SAAW7Y,GAAgBnY,EAAWgxB,SAAU,CAAC,SAAU,SAChE71R,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK81R,KAAO9Y,GAAgBnY,EAAWixB,KAAM,CAAC,cAAe,SAAU,cAAe,YACtF91R,KAAK+1R,UAAYpZ,GAAW,CAC1B5iQ,KAAM8qP,EAAWkxB,UACjBnZ,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK4pR,OAAS,KACd5pR,KAAKowR,OAAS,KACdpwR,KAAKu/Q,OAAS,IAChB,CACA,CAACtE,IAAS8J,GACR,MAAMvrC,EAAQ+vC,GAAQvpR,KAAM,SAAU,UAEhC6vN,EADK7vN,KAAK64Q,MACCA,MAEXmd,EAAc,CAClB/jC,SAAU,QAFKpiC,EAAMvN,MAAMruM,MAAQ,+BAI/Bw5B,EAAW,GACjB,GAAIoiL,EAAM/4M,MAAM22B,SAASltC,OAAS,EAAG,CACnC,MAAMuW,EAAQ+4M,EAAM/4M,MACpB,IAAIm/Q,EAAiB,EACjBC,EAAY,EACc,IAA1Bp/Q,EAAM22B,SAASltC,SACjB01R,EAAiBn/Q,EAAM22B,SAAS,GAAGy1K,KACnCgzE,EAAY,EAAID,GAElB,MAAME,EAAYr/Q,EAAM22B,SAASwoP,GAAgBhb,MAAW8C,KACtDjpQ,EAASgC,EAAM22B,SAASyoP,GAAWjb,MAAW8C,KACpD,IAAIqY,GAAW,EACf,MAAMztR,EAAQknN,EAAMlnN,QAAQoyQ,OAAY,GACxC,IAAK,IAAIz5Q,EAAI,EAAG0P,EAAKmlR,EAAU51R,OAAQe,EAAI0P,EAAI1P,IAAK,CAClD,MAAM4wJ,EAAS,CACbxvJ,KAAM,SACNmiQ,WAAY,CACVl8P,MAAOmM,EAAOxT,IAAM60R,EAAU70R,GAC9Bk4O,MAAOw8C,GAETrtR,MAAOwtR,EAAU70R,IAEfwT,EAAOxT,KAAOqH,IAChBupJ,EAAO2yG,WAAWuxB,SAAWA,GAAW,GAE1C3oP,EAASlsC,KAAK2wJ,EAChB,CACKkkI,GACH3oP,EAASy9K,OAAO,EAAG,EAAG,CACpBxoN,KAAM,SACNmiQ,WAAY,CACVwxB,QAAQ,EACRD,UAAU,GAEZztR,MAAO,KAGb,CACA,MAAM2tR,EAAmB,CACvB3M,MAAO,CAAC,aACR2L,QAASzlE,EAAMurD,IACfma,OAAQ1lE,EAAM8nD,MAASyD,KAASvrD,EAAMurD,IACtC5hC,QACA,aAAcg0C,GAAU39D,GACxB,iBAAiB,GASnB,OAPIk9D,GAAWl9D,KACbymE,EAAiB,kBAAmB,EACpCA,EAAiBX,UAAW,GAEZ,gBAAd31R,KAAK81R,OACPQ,EAAiBC,UAAW,GAEvB5Y,GAAWG,QAAQ,CACxBp7Q,KAAM,QACNmiQ,WAAY,CACV8kB,MAAO,CAAC,aAEVl8O,SAAU,CAAC,CACT/qC,KAAM,SACN+qC,WACAo3N,WAAYyxB,KAGlB,EAEF,MAAME,WAAcpS,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,SAAS,GAC/BlsR,KAAKy2R,OAASzZ,GAAgBnY,EAAW4xB,OAAQ,CAAC,SAClDz2R,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK2I,MAAQk8P,EAAWl8P,MAhuG5B,SAAkBoR,EAAMmjQ,EAAM,CAAC,EAAG,EAAG,IACnC,IAAKtwQ,EAAGC,EAAGC,GAAKowQ,EAChB,IAAKnjQ,EACH,MAAO,CACLnN,IACAC,IACAC,KAGJ,MAAMqhB,EAAQpU,EAAKyuP,OAAOxsP,MAAM,WAAWC,KAAI7N,GAAKhE,KAAKC,IAAID,KAAK2D,IAAI,EAAGmI,SAAS9H,EAAEo6P,OAAQ,KAAM,OAAMvsP,KAAI7N,GAAKoQ,MAAMpQ,GAAK,EAAIA,IAChI,OAAI+f,EAAM5tB,OAAS,KAOlBqM,EAAGC,EAAGC,GAAKqhB,GANH,CACLvhB,IACAC,IACAC,IASN,CAysGoC4pR,CAAS7xB,EAAWl8P,OAAS,GAC7D3I,KAAKowR,OAAS,IAChB,CACA,CAACpX,MACC,OAAO,CACT,CACA,CAACmC,MACC,OAAOn7Q,KAAK2I,MAAQ+D,EAAKC,aAAa3M,KAAK2I,MAAMiE,EAAG5M,KAAK2I,MAAMkE,EAAG7M,KAAK2I,MAAMmE,GAAK,IACpF,EAEF,MAAM6pR,WAAavS,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK42R,cAAgBja,GAAW,CAC9B5iQ,KAAM8qP,EAAW+xB,cACjBha,aAAc,EACdC,SAAU9sQ,GAAKA,GAAK,IAEtB/P,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMsR,WAAgBzS,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAW,GACjClsR,KAAK+xR,WAAaltB,EAAWktB,YAAc,GAC3C/xR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKgW,IAAM6uP,EAAW7uP,KAAO,GAC7BhW,KAAKixQ,MAAQ+L,GAAgBnY,EAAWoM,MAAO,CAAC,kBAAmB,aAAc,eACjFjxQ,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK6xR,QAAU,IACjB,EAEF,MAAM1D,WAAoB/J,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,eAAe,GACrClsR,KAAKuzC,EAAI0pO,GAAepY,EAAWtxN,GACnCvzC,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKyqR,SAAWjN,GAAY3Y,EAAW4lB,UACvCzqR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK+zL,EAAIkpF,GAAepY,EAAW9wE,GACnC/zL,KAAK+P,EAAIktQ,GAAepY,EAAW90P,EAAG,OACtC/P,KAAKgQ,EAAIitQ,GAAepY,EAAW70P,EAAG,OACtChQ,KAAKskQ,KAAO,KACZtkQ,KAAKowR,OAAS,IAChB,CACA,CAACnV,IAAS8J,GACR,MAEMvrC,EAAQ,CACZzwL,KAHWk+N,GAAgBjnR,KAAK+P,GAIhC2vQ,IAHUuH,GAAgBjnR,KAAKgQ,GAI/B6P,MAAOonQ,GAAgBjnR,KAAK+zL,GAC5Bj0K,OAAQmnQ,GAAgBjnR,KAAKuzC,IAEzB02O,EAAa,CAAC,kBAIpB,OAHIC,GAAYlqR,OACdiqR,EAAW1oR,KAAK,gBAEXo8Q,GAAWG,QAAQ,CACxBp7Q,KAAM,MACN+qC,SAAU,GACVo3N,WAAY,CACVrrB,QACAmwC,MAAOM,EACPpuP,GAAI77B,KAAKo7Q,MAGf,EAEF,MAAM0b,WAAe1S,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UAAU,GAChClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK+2R,SAAWpa,GAAW,CACzB5iQ,KAAM8qP,EAAWkyB,SACjBna,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKwK,KAAOwyQ,GAAgBnY,EAAWr6P,KAAM,CAAC,SAAU,UACxDxK,KAAKynR,SAAWzK,GAAgBnY,EAAW4iB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFznR,KAAK2yR,OAAS1V,GAAepY,EAAW8tB,QACxC3yR,KAAKwvR,OAASxS,GAAgBnY,EAAW2qB,OAAQ,CAAC,QAAS,UAAW,aAAc,SAAU,SAAU,WAAY,SAAU,UAAW,WACzIxvR,KAAKuvR,UAAYtS,GAAepY,EAAW0qB,UAAW,SACtDvvR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKmuB,MAAQ,KACbnuB,KAAKowR,OAAS,IAChB,CACA,CAACjV,MACC,MAAM3hC,EAAQ+vC,GAAQvpR,KAAM,cAE5B,OADAw5O,EAAMm5C,OAAS1L,GAA8B,WAAdjnR,KAAKwK,KAAoB,EAAIxK,KAAK2yR,QAC1Dn5C,CACT,EAEF,MAAMw9C,WAAoBtQ,GACxB,WAAAz9Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAACzN,MACC,MAAMlmQ,EAAO5R,KAAK03Q,IAAUlP,OAC5BxoQ,KAAK03Q,IAAY9lQ,EAAO,IAAIC,KAAKD,GAAQ,IAC3C,CACA,CAACqpQ,IAAS8J,GACR,OAAO4I,GAAY3tR,KAAK03Q,IAAY13Q,KAAK03Q,IAAUlrQ,WAAa,GAClE,EAEF,MAAMyqR,WAAiBvQ,GACrB,WAAAz9Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,YACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAACzN,MACC,MAAMlmQ,EAAO5R,KAAK03Q,IAAUlP,OAC5BxoQ,KAAK03Q,IAAY9lQ,EAAO,IAAIC,KAAKD,GAAQ,IAC3C,CACA,CAACqpQ,IAAS8J,GACR,OAAO4I,GAAY3tR,KAAK03Q,IAAY13Q,KAAK03Q,IAAUlrQ,WAAa,GAClE,EAEF,MAAM0qR,WAAqB9S,GACzB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,gBAAgB,GACtClsR,KAAKm3R,cAAgBna,GAAgBnY,EAAWsyB,cAAe,CAAC,OAAQ,MAAO,OAC/En3R,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKo3R,OAASpa,GAAgBnY,EAAWuyB,OAAQ,CAAC,OAAQ,SAC1Dp3R,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK4pR,OAAS,KACd5pR,KAAKq3R,KAAO,KACZr3R,KAAKowR,OAAS,KACdpwR,KAAKu/Q,OAAS,IAChB,CACA,CAACtE,IAAS8J,GACR,MAAMvrC,EAAQ+vC,GAAQvpR,KAAM,SAAU,OAAQ,UACxC6vN,EAAQ7vN,KAAK64Q,MAAcA,MAC3BkF,EAAO,CACXr7Q,KAAM,QACNmiQ,WAAY,CACVtgQ,KAAM,OACN+wR,QAASzlE,EAAMurD,IACfma,OAAQ1lE,EAAM8nD,MAASyD,KAASvrD,EAAMurD,IACtCuO,MAAO,CAAC,gBACRnwC,QACA,aAAcg0C,GAAU39D,GACxB,iBAAiB,IAOrB,OAJIk9D,GAAWl9D,KACbkuD,EAAKlZ,WAAW,kBAAmB,EACnCkZ,EAAKlZ,WAAW8wB,UAAW,GAEtBhY,GAAWG,QAAQ,CACxBp7Q,KAAM,QACNmiQ,WAAY,CACV8kB,MAAO,CAAC,aAEVl8O,SAAU,CAACswO,IAEf,EAEF,MAAMuZ,WAAgB5Q,GACpB,WAAAz9Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WACtBlsR,KAAKu3R,WAAa5a,GAAW,CAC3B5iQ,KAAM8qP,EAAW0yB,WACjB3a,aAAc,EACdC,SAAU9sQ,IAAK,IAEjB/P,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKw3R,WAAa7a,GAAW,CAC3B5iQ,KAAM8qP,EAAW2yB,WACjB5a,cAAe,EACfC,SAAU9sQ,IAAK,IAEjB/P,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAACzN,MACC,MAAMx9P,EAASiE,WAAWve,KAAK03Q,IAAUlP,QACzCxoQ,KAAK03Q,IAAYl5P,MAAMlE,GAAU,KAAOA,CAC1C,CACA,CAAC2gQ,IAAS8J,GACR,OAAO4I,GAA+B,OAAnB3tR,KAAK03Q,IAAqB13Q,KAAK03Q,IAAUlrQ,WAAa,GAC3E,EAEF,MAAMirR,WAAkBrT,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,aAAa,GACnClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,IAChB,EAEF,MAAMsH,WAAatT,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QAAQ,GAC9BlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK23R,QAAU,IAAInT,GACnBxkR,KAAK4R,KAAO,IAAI4yQ,GAChBxkR,KAAK43R,SAAW,IAAIpT,GACpBxkR,KAAK63R,QAAU,IAAIrT,GACnBxkR,KAAKkpR,OAAS,IAAI1E,GAClBxkR,KAAK83R,MAAQ,IAAItT,GACjBxkR,KAAKq8C,MAAQ,IAAImoO,GACjBxkR,KAAK+3R,QAAU,IAAIvT,GACnBxkR,KAAKq3P,KAAO,IAAImtB,GAChBxkR,KAAKg4R,KAAO,IAAIxT,EAClB,EAEF,MAAMyT,WAAqBtR,GACzB,WAAA19Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,eAAgB,CAAC,GAAI,OAAQ,SAAU,SAAU,cACvElsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAM2S,WAAsB9T,GAC1B,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,iBAAiB,GACvClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKm4R,aAAe,IAAI3T,EAC1B,EAEF,MAAM4T,WAAahU,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QAAQ,GAC9BlsR,KAAKmnR,WAAanK,GAAgBnY,EAAWsiB,WAAY,CAAC,UAAW,eAAgB,aAAc,cAAe,eAAgB,aAAc,cAAe,YAAa,aAC5KnnR,KAAKqnR,QAAU1K,GAAW,CACxB5iQ,KAAM8qP,EAAWwiB,QACjBzK,aAAc,EACdC,SAAUtwQ,GAAKA,GAAK,IAAY,IAAPA,IAE3BvM,KAAKuzC,EAAIsxN,EAAWtxN,EAAI0pO,GAAepY,EAAWtxN,GAAK,GACvDvzC,KAAK4nR,OAAS5K,GAAgBnY,EAAW+iB,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,UACtG5nR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKq4R,OAASxzB,EAAWwzB,QAAU,GACnCr4R,KAAKo2C,KAAO6mO,GAAepY,EAAWzuN,KAAM,OAC5Cp2C,KAAKkoR,KAAOjL,GAAepY,EAAWqjB,KAAM,OAC5CloR,KAAKmoR,KAAOlL,GAAepY,EAAWsjB,KAAM,OAC5CnoR,KAAKgoR,KAAO/K,GAAepY,EAAWmjB,KAAM,OAC5ChoR,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKynR,SAAWzK,GAAgBnY,EAAW4iB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFznR,KAAKyqR,SAAWjN,GAAY3Y,EAAW4lB,UACvCzqR,KAAKu2P,OAASomB,GAAW,CACvB5iQ,KAAM8qP,EAAWtO,OACjBqmB,aAAc,EACdC,SAAU9sQ,GAAKA,EAAI,IAAO,IAE5B/P,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK+zL,EAAI8wE,EAAW9wE,EAAIkpF,GAAepY,EAAW9wE,GAAK,GACvD/zL,KAAK+P,EAAIktQ,GAAepY,EAAW90P,EAAG,OACtC/P,KAAKgQ,EAAIitQ,GAAepY,EAAW70P,EAAG,OACtChQ,KAAKotR,OAAS,KACdptR,KAAK4pR,OAAS,KACd5pR,KAAKs4R,QAAU,KACft4R,KAAKskQ,KAAO,KACZtkQ,KAAKowR,OAAS,KACdpwR,KAAKsiN,KAAO,KACZtiN,KAAKu4R,KAAO,KACZv4R,KAAKu/Q,OAAS,KACdv/Q,KAAKykR,KAAO,KACZzkR,KAAKktR,UAAY,KACjBltR,KAAKw4R,GAAK,KACVx4R,KAAK2I,MAAQ,KACb3I,KAAKy4R,YAAc,IAAIjU,EACzB,CACA,CAAC3J,IAAWlyQ,GACV+jR,GAAU1sR,KAAM2I,EAClB,CACA,CAACsyQ,IAAS8J,GAER,GADAkI,GAAYjtR,MACU,WAAlBA,KAAKynR,UAA2C,aAAlBznR,KAAKynR,SACrC,OAAO9J,GAAWE,MAEpBwL,GAAcrpR,MACdA,KAAKs6Q,MACL,MAAMoe,EAAS14R,KAAK+zL,EACd4kG,EAAS34R,KAAKuzC,GACd,EACJwgJ,EAAC,EACDxgJ,EAAC,SACD+tO,GACEiH,GAAWvoR,KAAM+kR,GACrB,GAAIhxF,GAAgB,KAAX/zL,KAAK+zL,EAAU,CACtB,GAAIutF,GAAYthR,KAAK44Q,MAAqBc,MAExC,OADA15Q,KAAKq6Q,MACEsD,GAAWC,QAEpB59Q,KAAK+zL,EAAIA,CACX,CAKA,GAJIxgJ,GAAgB,KAAXvzC,KAAKuzC,IACZvzC,KAAKuzC,EAAIA,GAEXq6O,GAAqB5tR,OAChB2rR,GAAgB3rR,KAAM+kR,GAIzB,OAHA/kR,KAAK+zL,EAAI2kG,EACT14R,KAAKuzC,EAAIolP,EACT34R,KAAKq6Q,MACEsD,GAAWC,QAEpBiQ,GAAuB7tR,MACvB,MAAMw5O,EAAQ+vC,GAAQvpR,KAAM,OAAQ,SAAU,aAAc,WAAY,WAAY,SAAU,aAAc,SAAU,UACtH+nR,GAAoB/nR,KAAMw5O,GACtBA,EAAM+lC,SACR/lC,EAAM8wC,QAAU9wC,EAAM+lC,cACf/lC,EAAM+lC,QAEf,MAAM0K,EAAa,CAAC,WAChBjqR,KAAKsiN,MACP2nE,EAAW1oR,KAAK,WAEd2oR,GAAYlqR,OACdiqR,EAAW1oR,KAAK,gBAElB,MAAMsjQ,EAAa,CACjBrrB,QACA39M,GAAI77B,KAAKo7Q,IACTuO,MAAOM,GAELjqR,KAAK0C,OACPmiQ,EAAW6rB,QAAU1wR,KAAK0C,MAE5B,MAAMq7Q,EAAO,CACXr7Q,KAAM,MACNmiQ,aACAp3N,SAAU,IAEZ0/O,GAAYntR,KAAM6kQ,GAClB,MAAMn1C,EAAO05D,GAAYppR,KAAM+9Q,EAAMgH,GAC/Bp8Q,EAAQ3I,KAAK2I,MAAQ3I,KAAK2I,MAAMsyQ,IAAS8J,GAAgBhH,KAAO,KACtE,OAAc,OAAVp1Q,GACF3I,KAAK+zL,EAAI2kG,EACT14R,KAAKuzC,EAAIolP,EACT34R,KAAKq6Q,MACEsD,GAAWG,QAAQ2L,GAAczpR,KAAM+9Q,GAAOruD,KAEvDquD,EAAKtwO,SAASlsC,KAAKoH,GACnBgiR,GAAQ3qR,KAAMw5O,EAAO7wO,GACrB3I,KAAK+zL,EAAI2kG,EACT14R,KAAKuzC,EAAIolP,EACT34R,KAAKq6Q,MACEsD,GAAWG,QAAQ2L,GAAczpR,KAAM+9Q,GAAOruD,GACvD,EAEF,MAAM0/D,WAAahL,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QAAQ,GAC9BlsR,KAAK44R,IAAM5b,GAAgBnY,EAAW+zB,IAAK,CAAC,SAAU,OAAQ,UAC9D54R,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKynR,SAAWzK,GAAgBnY,EAAW4iB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFznR,KAAKwvR,OAASxS,GAAgBnY,EAAW2qB,OAAQ,CAAC,QAAS,UAAW,aAAc,SAAU,SAAU,WAAY,SAAU,UAAW,WACzIxvR,KAAKuvR,UAAYtS,GAAepY,EAAW0qB,UAAW,SACtDvvR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKmuB,MAAQ,KACbnuB,KAAKowR,OAAS,IAChB,CACA,CAACjV,MACC,MAAM3hC,EAAQ+vC,GAAQvpR,KAAM,cAO5B,GANA0D,OAAO+5C,OAAO+7L,EAAO,CACnBq/C,QAAS74R,KAAK44R,IACd/4Q,MAAOonQ,GAAgBjnR,KAAKuvR,WAC5BphQ,MAAOnuB,KAAKmuB,MAAQnuB,KAAKmuB,MAAMgtP,MAAc,UAC7C3hC,MAAO,KAEa,YAAlBx5O,KAAKynR,SACPjuC,EAAMA,MAAQ,YAEd,OAAQx5O,KAAKwvR,QACX,IAAK,QACHh2C,EAAMA,MAAQ,QACd,MACF,IAAK,UAGL,IAAK,aAGL,IAAK,SACHA,EAAMA,MAAQ,SACd,MACF,IAAK,SACHA,EAAMA,MAAQ,SACd,MACF,IAAK,WACHA,EAAMA,MAAQ,QACd,MACF,IAAK,SACHA,EAAMA,MAAQ,SACd,MACF,IAAK,UACHA,EAAMA,MAAQ,QACd,MACF,IAAK,SACHA,EAAMA,MAAQ,SAIpB,OAAOA,CACT,EAEF,MAAMs/C,WAAiBnS,GACrB,WAAA19Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAY,CAAC,qBAAsB,sBAAuB,oBAChFlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMwT,WAAkB3U,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,aAAa,GACnClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKwQ,SAAW,IAAIg0Q,EACtB,EAEF,MAAMwU,WAAgB5U,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAW,GACjClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKi5R,YAAc,IACrB,EAEF,MAAMC,WAAoB9U,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,eAAe,GACrClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKo3O,UAAY4lC,GAAgBnY,EAAWztB,UAAW,CAAC,UAAW,YACnEp3O,KAAKg2Q,OAASnR,EAAWmR,QAAU,GACnCh2Q,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKwzB,OAAS,KACdxzB,KAAKm5R,SAAW,IAClB,EAEF,MAAMC,WAAmBhV,GACvB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,cAAc,GACpClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKi5R,YAAc,IAAIzU,EACzB,EAEF,MAAM6U,WAAyB1S,GAC7B,WAAA19Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,mBAAoB,CAAC,GAAI,aAAc,gBAAiB,aAAc,eAC5FlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAM+T,WAA0BlV,GAC9B,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,qBAAqB,GAC3ClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKu5R,iBAAmB,IAAI/U,EAC9B,EAEF,MAAMgV,WAAcpV,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,SAAS,GAC/BlsR,KAAKg0R,SAAWhX,GAAgBnY,EAAWmvB,SAAU,CAAC,QAAS,SAAU,WAAY,WAAY,QAAS,OAAQ,OAAQ,cAAe,aAAc,YAAa,aAAc,YAAa,UAAW,cAAe,WAAY,YAAa,WAAY,WAAY,aAAc,aAAc,UAAW,WAAY,UAAW,UAAW,YAAa,QAAS,oBACzWh0R,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKy5R,OAASzc,GAAgBnY,EAAW40B,OAAQ,CAAC,UAAW,sBAC7Dz5R,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKgW,IAAM6uP,EAAW7uP,KAAO,GAC7BhW,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,KACdpwR,KAAK05R,YAAc,KACnB15R,KAAKi1O,QAAU,KACfj1O,KAAK0zR,OAAS,KACd1zR,KAAK25R,SAAW,KAChB35R,KAAK45R,OAAS,IAChB,EAEF,MAAMC,WAAenT,GACnB,WAAAz9Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UACtBlsR,KAAKmpR,YAActkB,EAAWskB,aAAe,GAC7CnpR,KAAKy1Q,KAAO5Q,EAAW4Q,MAAQ,GAC/Bz1Q,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK85R,UAAYnd,GAAW,CAC1B5iQ,KAAM8qP,EAAWi1B,UACjBld,cAAe,EACfC,SAAU9sQ,GAAKA,IAAM,IAEvB/P,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAK+5R,IAAMl1B,EAAWk1B,KAAO,GAC7B/5R,KAAKg6R,iBAAmBhd,GAAgBnY,EAAWm1B,iBAAkB,CAAC,OAAQ,SAAU,YACxFh6R,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAACnM,MACC,MAA4B,cAArBp5Q,KAAKmpR,WACd,CACA,CAAClP,IAAUxT,GACT,OAAyB,cAArBzmQ,KAAKmpR,aAA+B1iB,EAAMqT,MAAkBwB,GAAaY,MAAMrgP,IAI1D,aAArB77B,KAAKmpR,eAHPnpR,KAAK03Q,IAAYjR,GACV,EAOX,CACA,CAACwU,IAAS8J,GACR,MAAyB,cAArB/kR,KAAKmpR,aAAgCnpR,KAAK03Q,IAGvC13Q,KAAK03Q,IAAUuD,IAAS8J,GAFtBpH,GAAWE,KAGtB,EAEF,MAAMoc,WAAiB7V,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,YAAY,GAClClsR,KAAKk6R,QAAUr1B,EAAWq1B,SAAW,GACrCl6R,KAAKm6R,QAAUt1B,EAAWs1B,SAAW,GACrCn6R,KAAKo6R,SAAWv1B,EAAWu1B,UAAY,GACvCp6R,KAAKq6R,SAAWx1B,EAAWw1B,UAAY,GACvCr6R,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,KACdpwR,KAAK23R,QAAU,IAAInT,GACnBxkR,KAAK4R,KAAO,IAAI4yQ,GAChBxkR,KAAK43R,SAAW,IAAIpT,GACpBxkR,KAAK63R,QAAU,IAAIrT,GACnBxkR,KAAKkpR,OAAS,IAAI1E,GAClBxkR,KAAKswR,SAAW,IAAI9L,GACpBxkR,KAAK83R,MAAQ,IAAItT,GACjBxkR,KAAKq8C,MAAQ,IAAImoO,GACjBxkR,KAAK+3R,QAAU,IAAIvT,GACnBxkR,KAAKq3P,KAAO,IAAImtB,GAChBxkR,KAAKg4R,KAAO,IAAIxT,EAClB,EAEF,MAAMgR,WAAkBpR,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,aAAa,GACnClsR,KAAKwqR,OAASxN,GAAgBnY,EAAW2lB,OAAQ,CAAC,OAAQ,iBAAkB,YAAa,aACzFxqR,KAAKs6R,UAAYz1B,EAAWy1B,WAAa,GACzCt6R,KAAKmnR,WAAanK,GAAgBnY,EAAWsiB,WAAY,CAAC,UAAW,eAAgB,aAAc,cAAe,eAAgB,aAAc,cAAe,YAAa,aAC5KnnR,KAAKqnR,QAAU1K,GAAW,CACxB5iQ,KAAM8qP,EAAWwiB,QACjBzK,aAAc,EACdC,SAAUtwQ,GAAKA,GAAK,IAAY,IAAPA,IAE3BvM,KAAKuzC,EAAIsxN,EAAWtxN,EAAI0pO,GAAepY,EAAWtxN,GAAK,GACvDvzC,KAAK4nR,OAAS5K,GAAgBnY,EAAW+iB,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,UACtG5nR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKw7D,OAASwhN,GAAgBnY,EAAWrpM,OAAQ,CAAC,WAAY,QAAS,SAAU,QAAS,MAAO,QAAS,OAC1Gx7D,KAAKo2C,KAAO6mO,GAAepY,EAAWzuN,KAAM,OAC5Cp2C,KAAKkoR,KAAOjL,GAAepY,EAAWqjB,KAAM,OAC5CloR,KAAKmoR,KAAOlL,GAAepY,EAAWsjB,KAAM,OAC5CnoR,KAAKgoR,KAAO/K,GAAepY,EAAWmjB,KAAM,OAC5ChoR,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKynR,SAAWzK,GAAgBnY,EAAW4iB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFznR,KAAKyqR,SAAWjN,GAAY3Y,EAAW4lB,UACvCzqR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK+zL,EAAI8wE,EAAW9wE,EAAIkpF,GAAepY,EAAW9wE,GAAK,GACvD/zL,KAAK+P,EAAIktQ,GAAepY,EAAW90P,EAAG,OACtC/P,KAAKgQ,EAAIitQ,GAAepY,EAAW70P,EAAG,OACtChQ,KAAKotR,OAAS,KACdptR,KAAK+iB,KAAO,KACZ/iB,KAAK4pR,OAAS,KACd5pR,KAAKu6R,UAAY,KACjBv6R,KAAKs4R,QAAU,KACft4R,KAAKskQ,KAAO,KACZtkQ,KAAKowR,OAAS,KACdpwR,KAAKu/Q,OAAS,KACdv/Q,KAAKykR,KAAO,KACZzkR,KAAKktR,UAAY,KACjBltR,KAAK68Q,SAAW,KAChB78Q,KAAKw6R,QAAU,IAAIhW,GACnBxkR,KAAK+hR,MAAQ,IAAIyC,GACjBxkR,KAAK6vN,MAAQ,IAAI20D,GACjBxkR,KAAKy4R,YAAc,IAAIjU,EACzB,CACA,CAACnL,MACC,OAAO,CACT,CACA,CAACL,MACC,OAAO,CACT,CACA,CAAC6B,IAAWlyQ,GACV,IAAK,MAAMknN,KAAS7vN,KAAK6vN,MAAMpiL,SAAU,CACvC,IAAKoiL,EAAMlnN,MAAO,CAChB,MAAMy9P,EAAY,IAAIwmB,GAAM,CAAC,GAC7B/8D,EAAMsnD,IAAc/Q,GACpBv2C,EAAMlnN,MAAQy9P,CAChB,CACAv2C,EAAMlnN,MAAMkyQ,IAAWlyQ,EACzB,CACF,CACA,CAAC+wQ,MACC,OAAO15Q,KAAKw7D,OAAOqjN,SAAS,QAAmC,IAAzB7+Q,KAAK63Q,IAAQ2T,SAAiBxrR,KAAK63Q,IAAQ4T,aAAe,GAAKzrR,KAAK64Q,MAAca,KAC1H,CACA,CAACD,MACC,MAAMrjQ,EAASpW,KAAK44Q,MACpB,QAAKxiQ,EAAOqjQ,aAGuBr2Q,IAA/BpD,KAAK63Q,IAAQ4iB,cACRz6R,KAAK63Q,IAAQ4iB,cAEF,aAAhBz6R,KAAKw7D,QAAyBx7D,KAAKw7D,OAAO1vD,SAAS,QACrD9L,KAAK63Q,IAAQ4iB,eAAgB,GACtB,KAELrkR,EAAOolD,QAAQqjN,SAAS,QAA0C,IAAhCzoQ,EAAOyhQ,IAAQ4T,eAGrDzrR,KAAK63Q,IAAQ4iB,eAAgB,EACtB,IACT,CACA,CAAC1iB,MACC,OAAOsT,GAAUrrR,KACnB,CACA,CAACk3Q,IAAU6G,EAAMruD,GACf67D,GAAQvrR,KAAM+9Q,EAAMruD,EACtB,CACA,CAACwoD,MACC,OAAOwT,GAAkB1rR,KAC3B,CACA,CAACi7Q,IAAS8J,GAER,GADAkI,GAAYjtR,MACU,WAAlBA,KAAKynR,UAA2C,aAAlBznR,KAAKynR,UAAsC,IAAXznR,KAAKuzC,GAAsB,IAAXvzC,KAAK+zL,EACrF,OAAO4pF,GAAWE,MAEpBwL,GAAcrpR,MACd,MAAMytC,EAAW,GACXo3N,EAAa,CACjBhpO,GAAI77B,KAAKo7Q,IACTuO,MAAO,IAETY,GAAUvqR,KAAM6kQ,EAAW8kB,OACtB3pR,KAAK63Q,MACR73Q,KAAK63Q,IAAUn0Q,OAAOwP,OAAO,OAE/BxP,OAAO+5C,OAAOz9C,KAAK63Q,IAAS,CAC1BpqO,WACAo3N,aACA2mB,QAAS,EACTh+O,KAAM,KACNi+O,aAAc,EACd1G,eAAgB,CACdllQ,MAAOzV,KAAKC,IAAIrK,KAAK+zL,GAAK07D,IAAUs1B,EAAellQ,OACnDC,OAAQ1V,KAAKC,IAAIrK,KAAKuzC,GAAKk8M,IAAUs1B,EAAejlQ,SAEtDD,MAAO,EACPC,OAAQ,EACR89N,WAAY,EACZz0M,aAAc,IAEhB,MAAMuxP,EAAe16R,KAAKy5Q,MAI1B,GAHKihB,GACH9M,GAAqB5tR,OAElB2rR,GAAgB3rR,KAAM+kR,GACzB,OAAOpH,GAAWC,QAEpB,MAAMpqP,EAAS,IAAIld,IAAI,CAAC,UACxB,GAAItW,KAAKw7D,OAAO1vD,SAAS,OAAQ,CAC/B,MAAMw7Q,EAAetnR,KAAK44Q,MAAqB0O,aAC3ClmR,MAAMsT,QAAQ4yQ,IAAiBA,EAAa/mR,OAAS,IACvDP,KAAK63Q,IAAQyP,aAAeA,EAC5BtnR,KAAK63Q,IAAQ0P,cAAgB,EAEjC,CACA,MAAM/tC,EAAQ+vC,GAAQvpR,KAAM,aAAc,aAAc,WAAY,WAAY,SAAU,SAAU,UAC9FiqR,EAAa,CAAC,gBACd5/C,EAAKi/C,GAAYtpR,MACnBqqO,GACF4/C,EAAW1oR,KAAK8oO,GAEd6/C,GAAYlqR,OACdiqR,EAAW1oR,KAAK,gBAElBsjQ,EAAWrrB,MAAQA,EACnBqrB,EAAW8kB,MAAQM,EACfjqR,KAAK0C,OACPmiQ,EAAW6rB,QAAU1wR,KAAK0C,MAE5B1C,KAAKs6Q,MACL,MAAMqgB,EAAyB,UAAhB36R,KAAKw7D,QAAsC,UAAhBx7D,KAAKw7D,OACzCo/N,EAASD,EAztDkB,EAytDsB,EACvD,KAAO36R,KAAK63Q,IAAQ2T,QAAUoP,EAAQ56R,KAAK63Q,IAAQ2T,UAAW,CACxDmP,GAAmCE,IAAzB76R,KAAK63Q,IAAQ2T,UACzBxrR,KAAK63Q,IAAQ4T,aAAe,GAE9B,MAAMz9P,EAAShuB,KAAKo3Q,IAAiB,CACnC5jP,SACAoiP,SAAS,IAEX,GAAI5nP,EAAO8vP,QACT,MAEF,GAAI9vP,EAAOiwP,UAET,OADAj+Q,KAAKq6Q,MACErsP,EAET,GAAI2sQ,GAAmC,IAAzB36R,KAAK63Q,IAAQ2T,SAA+C,IAA9BxrR,KAAK63Q,IAAQ4T,eAAuBzrR,KAAK84Q,MAAoBjB,IAAQmU,gBAAiB,CAChIhsR,KAAK63Q,IAAQ2T,QAAUoP,EACvB,KACF,CACF,CAKA,GAJA56R,KAAKq6Q,MACAqgB,GACH7M,GAAuB7tR,MAErBA,KAAK63Q,IAAQ2T,UAAYoP,EAI3B,OAHKF,UACI16R,KAAK63Q,IAEP8F,GAAWC,QAEpB,IAAI4K,EAAU,EACVC,EAAU,EACVzoR,KAAKu/Q,SACPiJ,EAAUxoR,KAAKu/Q,OAAOmJ,UAAY1oR,KAAKu/Q,OAAOoJ,WAC9CF,EAAUzoR,KAAKu/Q,OAAOqJ,SAAW5oR,KAAKu/Q,OAAOsJ,aAE/C,MAAMhpQ,EAAQzV,KAAK2D,IAAI/N,KAAK63Q,IAAQh4P,MAAQ2oQ,EAASxoR,KAAK+zL,GAAK,GACzDj0K,EAAS1V,KAAK2D,IAAI/N,KAAK63Q,IAAQ/3P,OAAS2oQ,EAASzoR,KAAKuzC,GAAK,GAC3Dm8K,EAAO,CAAC1vN,KAAK+P,EAAG/P,KAAKgQ,EAAG6P,EAAOC,GACtB,KAAX9f,KAAK+zL,IACPylD,EAAM35N,MAAQonQ,GAAgBpnQ,IAEjB,KAAX7f,KAAKuzC,IACPimM,EAAM15N,OAASmnQ,GAAgBnnQ,IAEjC,MAAMi+P,EAAO,CACXr7Q,KAAM,MACNmiQ,aACAp3N,YAIF,OAFA0/O,GAAYntR,KAAM6kQ,UACX7kQ,KAAK63Q,IACL8F,GAAWG,QAAQ2L,GAAczpR,KAAM+9Q,GAAOruD,EACvD,EAEF,MAAMorE,WAAgB1W,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WACtBlsR,KAAK+xR,WAAaltB,EAAWktB,YAAc,GAC3C/xR,KAAK+6R,YAAc/d,GAAgBnY,EAAWk2B,YAAa,CAAC,SAAU,YACtE/6R,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKg7R,MAAQhe,GAAgBnY,EAAWm2B,MAAO,CAAC,SAAU,OAAQ,WAClEh7R,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAM0V,WAAe7W,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UAAU,GAChClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK23R,QAAU,IAAInT,GACnBxkR,KAAK4R,KAAO,IAAI4yQ,GAChBxkR,KAAK43R,SAAW,IAAIpT,GACpBxkR,KAAK63R,QAAU,IAAIrT,GACnBxkR,KAAKkpR,OAAS,IAAI1E,GAClBxkR,KAAKowR,OAAS,IAAI5L,GAClBxkR,KAAK83R,MAAQ,IAAItT,GACjBxkR,KAAKq8C,MAAQ,IAAImoO,GACjBxkR,KAAK+3R,QAAU,IAAIvT,GACnBxkR,KAAKq3P,KAAO,IAAImtB,GAChBxkR,KAAKg4R,KAAO,IAAIxT,EAClB,EAEF,MAAM0W,WAAc9W,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,SAAS,GAC/BlsR,KAAKwqR,OAASxN,GAAgBnY,EAAW2lB,OAAQ,CAAC,OAAQ,iBAAkB,YAAa,aACzFxqR,KAAKs6R,UAAYz1B,EAAWy1B,WAAa,GACzCt6R,KAAKmnR,WAAanK,GAAgBnY,EAAWsiB,WAAY,CAAC,UAAW,eAAgB,aAAc,cAAe,eAAgB,aAAc,cAAe,YAAa,aAC5KnnR,KAAKqnR,QAAU1K,GAAW,CACxB5iQ,KAAM8qP,EAAWwiB,QACjBzK,aAAc,EACdC,SAAUtwQ,GAAKA,GAAK,IAAY,IAAPA,IAE3BvM,KAAKuzC,EAAIsxN,EAAWtxN,EAAI0pO,GAAepY,EAAWtxN,GAAK,GACvDvzC,KAAK4nR,OAAS5K,GAAgBnY,EAAW+iB,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,UACtG5nR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKq4R,OAASxzB,EAAWwzB,QAAU,GACnCr4R,KAAKo2C,KAAO6mO,GAAepY,EAAWzuN,KAAM,OAC5Cp2C,KAAKkoR,KAAOjL,GAAepY,EAAWqjB,KAAM,OAC5CloR,KAAKmoR,KAAOlL,GAAepY,EAAWsjB,KAAM,OAC5CnoR,KAAKgoR,KAAO/K,GAAepY,EAAWmjB,KAAM,OAC5ChoR,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKynR,SAAWzK,GAAgBnY,EAAW4iB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFznR,KAAKyqR,SAAWjN,GAAY3Y,EAAW4lB,UACvCzqR,KAAKu2P,OAASomB,GAAW,CACvB5iQ,KAAM8qP,EAAWtO,OACjBqmB,aAAc,EACdC,SAAU9sQ,GAAKA,EAAI,IAAO,IAE5B/P,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK+zL,EAAI8wE,EAAW9wE,EAAIkpF,GAAepY,EAAW9wE,GAAK,GACvD/zL,KAAK+P,EAAIktQ,GAAepY,EAAW90P,EAAG,OACtC/P,KAAKgQ,EAAIitQ,GAAepY,EAAW70P,EAAG,OACtChQ,KAAKotR,OAAS,KACdptR,KAAK+iB,KAAO,KACZ/iB,KAAK4pR,OAAS,KACd5pR,KAAKu6R,UAAY,KACjBv6R,KAAKs4R,QAAU,KACft4R,KAAKskQ,KAAO,KACZtkQ,KAAKowR,OAAS,KACdpwR,KAAKsiN,KAAO,KACZtiN,KAAK45D,OAAS,KACd55D,KAAK8W,MAAQ,IAAI0tQ,GAAe,GAChCxkR,KAAKu4R,KAAO,KACZv4R,KAAKu/Q,OAAS,KACdv/Q,KAAKykR,KAAO,KACZzkR,KAAKktR,UAAY,KACjBltR,KAAKw4R,GAAK,KACVx4R,KAAK68Q,SAAW,KAChB78Q,KAAK2I,MAAQ,KACb3I,KAAKm7R,UAAY,IAAI3W,GACrBxkR,KAAKw6R,QAAU,IAAIhW,GACnBxkR,KAAK+hR,MAAQ,IAAIyC,GACjBxkR,KAAKy4R,YAAc,IAAIjU,EACzB,CACA,CAACnL,MACC,OAAO,CACT,CACA,CAACwB,IAAWlyQ,GACV+jR,GAAU1sR,KAAM2I,EAClB,CACA,CAACsyQ,IAAS8J,GAER,GADAkI,GAAYjtR,OACPA,KAAKw4R,GAAI,CAIZ,IAAI5qP,EACJ,OAJA5tC,KAAKw4R,GAAK,IAAI4C,GAAG,CAAC,GAClBp7R,KAAKw4R,GAAGzf,IAAe/4Q,KAAK+4Q,IAC5B/4Q,KAAKm3Q,IAAcn3Q,KAAKw4R,IAEhBx4R,KAAK8W,MAAM22B,SAASltC,QAC1B,KAAK,EACHqtC,EAAO,IAAIytP,GAAS,CAAC,GACrBr7R,KAAKw4R,GAAG8C,SAAW1tP,EACnB,MACF,KAAK,EACHA,EAAO,IAAIonP,GAAY,CAAC,GACxBh1R,KAAKw4R,GAAG+C,YAAc3tP,EACtB,MACF,KAAK,EACHA,EAAO,IAAIgoP,GAAW,CAAC,GACvB51R,KAAKw4R,GAAGgD,WAAa5tP,EAGzB5tC,KAAKw4R,GAAGrhB,IAAcvpO,EACxB,CACA,IAAK5tC,KAAKw4R,IAAwB,WAAlBx4R,KAAKynR,UAA2C,aAAlBznR,KAAKynR,UAAsC,IAAXznR,KAAKuzC,GAAsB,IAAXvzC,KAAK+zL,EACjG,OAAO4pF,GAAWE,MAEhB79Q,KAAKs4R,gBACAt4R,KAAKs4R,QAAQzgB,IAEtB73Q,KAAKs6Q,MACL,MAAMge,EAAUt4R,KAAKs4R,QAAUt4R,KAAKs4R,QAAQrd,IAAS8J,GAAgBhH,KAAO,KACtE2a,EAAS14R,KAAK+zL,EACd4kG,EAAS34R,KAAKuzC,EACpB,IAAIi1O,EAAU,EACVC,EAAU,EACVzoR,KAAKu/Q,SACPiJ,EAAUxoR,KAAKu/Q,OAAOmJ,UAAY1oR,KAAKu/Q,OAAOoJ,WAC9CF,EAAUzoR,KAAKu/Q,OAAOqJ,SAAW5oR,KAAKu/Q,OAAOsJ,aAE/C,IAAI4S,EAAa,KACjB,GAAe,KAAXz7R,KAAK+zL,GAAuB,KAAX/zL,KAAKuzC,EAAU,CAClC,IAAI1zB,EAAQ,KACRC,EAAS,KACT47Q,EAAM,EACNC,EAAM,EACV,GAAI37R,KAAKw4R,GAAG+C,YACVG,EAAMC,EAAM37R,KAAKw4R,GAAG+C,YAAYtnR,SAC3B,CACL,MAAM,EACJ8/K,EAAC,EACDxgJ,GACEg1O,GAAWvoR,KAAM+kR,GACX,OAANhxF,GACF2nG,EAAM3nG,EACN4nG,EAAMpoP,GAENooP,EA/6HV,SAA0Bxc,EAASyc,GAAO,GACxC,IAAIrd,EAAU,KACd,GAAIY,EAAS,CACX,MAAMz8Q,EAAOg6Q,GAAYyC,EAAQC,UAC3BA,EAAWD,EAAQpG,IAAayG,WAAWT,KAAKr8Q,GACtD67Q,EAAUW,GAAWC,EAASC,EAChC,CACA,IAAKb,EACH,MAAO,CACL7nD,WAAY,GACZ0I,QAAS,EACTy8D,UAAW,IAGf,MAAM5nR,EAAOkrQ,EAAQlrQ,MAAQ,GACvByiN,EAAa6nD,EAAQ7nD,WAAatsN,KAAK2D,IAAI6tR,EAAO,EAAI,IAAKrd,EAAQ7nD,YAAc,IACjF0I,OAA8Bh8N,IAApBm7Q,EAAQn/C,QAAwB,GAAMm/C,EAAQn/C,QAC9D,MAAO,CACL1I,WAAYA,EAAaziN,EACzBmrN,QAASA,EAAUnrN,EACnB4nR,UAAWzxR,KAAK2D,IAAI,EAAG2oN,EAAa0I,GAAWnrN,EAEnD,CAy5HgB6nR,CAAiB97R,KAAKsiN,MAAM,GAAMu5E,SAE5C,CAIA,GAHAJ,EAAalP,GAAcvsR,KAAKw4R,GAAGjgB,OACnCmjB,GAAOD,EAAW1nG,EAClB4nG,GAAOF,EAAWloP,EACdvzC,KAAKs4R,QAAS,CAChB,MAAM,EACJvkG,EAAC,EACDxgJ,EAAC,SACD+tO,GACEthR,KAAKs4R,QAAQ/f,IAAWwM,GAC5B,GAAIzD,GAAYthR,KAAK44Q,MAAqBc,MAExC,OADA15Q,KAAKq6Q,MACEsD,GAAWC,QAIpB,OAFA/9P,EAAQk0K,EACRj0K,EAASyzB,EACDvzC,KAAKs4R,QAAQnE,WACnB,IAAK,OACL,IAAK,QACL,IAAK,SACHt0Q,GAAS67Q,EACT,MACF,IAAK,MACL,IAAK,SACH57Q,GAAU67Q,EAGhB,MACE97Q,EAAQ67Q,EACR57Q,EAAS67Q,EAEP97Q,GAAoB,KAAX7f,KAAK+zL,IAChBl0K,GAAS2oQ,EACTxoR,KAAK+zL,EAAI3pL,KAAKC,IAAIrK,KAAKkoR,MAAQ,EAAIz4B,IAAWzvP,KAAKkoR,KAAMloR,KAAKgoR,KAAO,EAAInoQ,EAAQA,EAAQ7f,KAAKgoR,OAE5FloQ,GAAqB,KAAX9f,KAAKuzC,IACjBzzB,GAAU2oQ,EACVzoR,KAAKuzC,EAAInpC,KAAKC,IAAIrK,KAAKo2C,MAAQ,EAAIq5M,IAAWzvP,KAAKo2C,KAAMp2C,KAAKmoR,KAAO,EAAIroQ,EAASA,EAAS9f,KAAKmoR,MAEpG,CAIA,GAHAnoR,KAAKq6Q,MACLgP,GAAcrpR,MACd4tR,GAAqB5tR,OAChB2rR,GAAgB3rR,KAAM+kR,GAIzB,OAHA/kR,KAAK+zL,EAAI2kG,EACT14R,KAAKuzC,EAAIolP,EACT34R,KAAKq6Q,MACEsD,GAAWC,QAEpBiQ,GAAuB7tR,MACvB,MAAMw5O,EAAQ+vC,GAAQvpR,KAAM,OAAQ,aAAc,WAAY,SAAU,aAAc,WAAY,SAAU,UAC5G+nR,GAAoB/nR,KAAMw5O,GAC1B,MAAMywC,EAAa,CAAC,YAChBjqR,KAAKsiN,MACP2nE,EAAW1oR,KAAK,WAEd2oR,GAAYlqR,OACdiqR,EAAW1oR,KAAK,gBAElB,MAAMsjQ,EAAa,CACjBrrB,QACA39M,GAAI77B,KAAKo7Q,IACTuO,MAAOM,GAELzwC,EAAM+lC,SACR/lC,EAAM8wC,QAAU9wC,EAAM+lC,cACf/lC,EAAM+lC,QAEfgL,GAAUvqR,KAAMiqR,GACZjqR,KAAK0C,OACPmiQ,EAAW6rB,QAAU1wR,KAAK0C,MAE5B,MAAM+qC,EAAW,GACXswO,EAAO,CACXr7Q,KAAM,MACNmiQ,aACAp3N,YAEF0/O,GAAYntR,KAAM6kQ,GAClB,MAAMiuB,EAAc9yR,KAAK4pR,OAAS5pR,KAAK4pR,OAAOzO,MAAc,KACtDzrD,EAAO05D,GAAYppR,KAAM+9Q,EAAMgH,GAC/ByT,EAAKx4R,KAAKw4R,GAAGvd,MAAW8C,KAC9B,IAAKya,EAEH,OADA90R,OAAO+5C,OAAO+7L,EAAOs5C,GACdnV,GAAWG,QAAQ2L,GAAczpR,KAAM+9Q,GAAOruD,GAEnD1vN,KAAK86Q,MACH0d,EAAG/qP,WAAW,GAChB+qP,EAAG/qP,SAAS,GAAGo3N,WAAWk3B,SAAW/7R,KAAK86Q,IAE1C0d,EAAG3zB,WAAWk3B,SAAW/7R,KAAK86Q,KAG7B0d,EAAG3zB,WAAWrrB,QACjBg/C,EAAG3zB,WAAWrrB,MAAQ91O,OAAOwP,OAAO,OAEtC,IAAI8oR,EAAW,KAUf,GATIh8R,KAAKw4R,GAAGyD,QACiB,IAAvBzD,EAAG/qP,SAASltC,UACby7R,GAAYxD,EAAG/qP,SAASy9K,OAAO,EAAG,IAErCxnN,OAAO+5C,OAAO+6O,EAAG3zB,WAAWrrB,MAAOs5C,IAEnCpvR,OAAO+5C,OAAO+7L,EAAOs5C,GAEvBrlP,EAASlsC,KAAKi3R,GACVx4R,KAAK2I,MACP,GAAI3I,KAAKw4R,GAAG0D,UACV1D,EAAG/qP,SAASlsC,KAAKvB,KAAK2I,MAAMsyQ,MAAW8C,WAClC,IAAK/9Q,KAAKw4R,GAAGyD,OAAQ,CAC1B,IAAItzR,EAAQ,GACZ,GAAI3I,KAAK2I,MAAMugR,OACbvgR,EAAQ3I,KAAK2I,MAAMugR,OAAOnO,WACrB,GAAI/6Q,KAAK2I,MAAM0uP,KACpB1uP,EAAQ3I,KAAK2I,MAAM0uP,KAAKkhB,UACnB,CACL,MAAM4jB,EAAYn8R,KAAK2I,MAAMsyQ,MAAW8C,KACtB,OAAdoe,IACFxzR,EAAQwzR,EAAU1uP,SAAS,GAAG9kC,MAElC,CACI3I,KAAKw4R,GAAG8C,UAAYt7R,KAAK2I,MAAM0uP,MAAM+kC,WACvC5D,EAAG/qP,SAAS,GAAGo3N,WAAWi1B,UAAY95R,KAAK2I,MAAM0uP,KAAK+kC,UAEpDzzR,IACE3I,KAAKw4R,GAAG6D,cACV1zR,EAAQ4V,WAAW5V,GACnBA,EAAQ6V,MAAM7V,GAAS,GAAKA,EAAM6D,YAER,aAAxBgsR,EAAG/qP,SAAS,GAAG/qC,KACjB81R,EAAG/qP,SAAS,GAAGo3N,WAAWtR,YAAc5qP,EAExC6vR,EAAG/qP,SAAS,GAAGo3N,WAAWl8P,MAAQA,EAGxC,CAEF,IAAK3I,KAAKw4R,GAAG0D,WAAa1D,EAAG/qP,WAAW,IAAMztC,KAAKuzC,EAAG,CACpDkoP,EAAaA,GAAclP,GAAcvsR,KAAKw4R,GAAGjgB,OACjD,IAAI+jB,EAAgB,EACpB,GAAIt8R,KAAKs4R,SAAW,CAAC,MAAO,UAAUxsR,SAAS9L,KAAKs4R,QAAQnE,WAAY,CACtEmI,EAAgBt8R,KAAKs4R,QAAQlE,QACzBkI,GAAiB,IACnBA,EAAgBt8R,KAAKs4R,QAAQ/f,IAAWwM,GAAgBxxO,GAE1D,MAAMgpP,EAAcv8R,KAAKuzC,EAAI+oP,EAAgB7T,EAAUgT,EAAWloP,EAClEilP,EAAG/qP,SAAS,GAAGo3N,WAAWrrB,MAAM15N,OAASmnQ,GAAgBsV,EAC3D,MACE/D,EAAG/qP,SAAS,GAAGo3N,WAAWrrB,MAAM15N,OAAS,MAE7C,CAIA,GAHIk8Q,GACFxD,EAAG/qP,SAASlsC,KAAKy6R,IAEd1D,EAMH,OALIE,EAAG3zB,WAAW8kB,OAChB6O,EAAG3zB,WAAW8kB,MAAMpoR,KAAK,WAE3BvB,KAAK+zL,EAAI2kG,EACT14R,KAAKuzC,EAAIolP,EACFhb,GAAWG,QAAQ2L,GAAczpR,KAAM+9Q,GAAOruD,GAEvD,GAAI1vN,KAAKw4R,GAAGyD,OAQV,OAPIziD,EAAM8wC,gBACD9wC,EAAM8wC,QAEM,QAAjBgO,EAAQ51R,OACV41R,EAAQ51R,KAAO,QAEjB81R,EAAG/qP,SAASlsC,KAAK+2R,GACV3a,GAAWG,QAAQC,EAAMruD,GAQlC,OAPW1vN,KAAKw4R,GAAG+C,cACjBjD,EAAQzzB,WAAW8kB,MAAM,GAAK,4BAE3B6O,EAAG3zB,WAAW8kB,QACjB6O,EAAG3zB,WAAW8kB,MAAQ,IAExB6O,EAAG/qP,SAASy9K,OAAO,EAAG,EAAGotE,GACjBt4R,KAAKs4R,QAAQnE,WACnB,IAAK,OAYL,IAAK,SACHqE,EAAG3zB,WAAW8kB,MAAMpoR,KAAK,WACzB,MAXF,IAAK,QACHi3R,EAAG3zB,WAAW8kB,MAAMpoR,KAAK,YACzB,MACF,IAAK,MACHi3R,EAAG3zB,WAAW8kB,MAAMpoR,KAAK,UACzB,MACF,IAAK,SACHi3R,EAAG3zB,WAAW8kB,MAAMpoR,KAAK,aAQ7B,OAFAvB,KAAK+zL,EAAI2kG,EACT14R,KAAKuzC,EAAIolP,EACFhb,GAAWG,QAAQ2L,GAAczpR,KAAM+9Q,GAAOruD,EACvD,EAEF,MAAM8sE,WAAapY,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QAAQ,GAC9BlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKynR,SAAWzK,GAAgBnY,EAAW4iB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFznR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKmuB,MAAQ,KACbnuB,KAAKowR,OAAS,KACdpwR,KAAKy8R,OAAS,KACdz8R,KAAKmgP,QAAU,KACfngP,KAAK08R,OAAS,KACd18R,KAAK28R,MAAQ,KACb38R,KAAK48R,QAAU,IACjB,CACA,CAACzhB,MACC,MAAM/kQ,EAASpW,KAAK64Q,MAEdgkB,EADUzmR,EAAOyiQ,MACEA,MACnBr/B,EAAQ91O,OAAOwP,OAAO,MAC5B,IAAI4pR,EAAW,QACXC,EAAcD,EACd1mR,aAAkBi8Q,KACpByK,EAAW,mBACXC,EAAc,aACVF,aAAoBzB,KACtB5hD,EAAMwjD,gBAAkB,WAGxB5mR,aAAkB6mR,IAAa7mR,aAAkB24Q,MACnD+N,EAAWC,EAAc,OACzBvjD,EAAMjyM,KAAO,SAEf,IAAK,MAAM7kC,KAAQgB,OAAOmhR,oBAAoB7kR,MAAO,CACnD,GAAa,WAAT0C,GAA8B,UAATA,EACvB,SAEF,MAAMoB,EAAM9D,KAAK0C,GACjB,KAAMoB,aAAesgR,IACnB,SAEF,MAAMj2P,EAAQrqB,EAAIq3Q,IAAUn7Q,KAAKmuB,OAIjC,OAHIA,IACFqrN,EAAMrrN,EAAMlmB,WAAW,KAAO60R,EAAWC,GAAe5uQ,GAEnDqrN,CACT,CACA,GAAIx5O,KAAKmuB,OAAOxlB,MAAO,CACrB,MAAMwlB,EAAQnuB,KAAKmuB,MAAMgtP,MACzB3hC,EAAMrrN,EAAMlmB,WAAW,KAAO60R,EAAWC,GAAe5uQ,CAC1D,CACA,OAAOqrN,CACT,EAEF,MAAM7tL,WAAey4N,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UAAU,GAChClsR,KAAKk9R,kBAAoBlgB,GAAgBnY,EAAWq4B,kBAAmB,CAAC,GAAI,WAAY,WAAY,SACpGl9R,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK8B,QAAU66Q,GAAW,CACxB5iQ,KAAM/Z,KAAK8B,QACX86Q,aAAc,EACdC,SAAU9sQ,GAAKA,GAAK,GAAKA,GAAK,IAEhC/P,KAAKm9R,iBAAmB,KACxBn9R,KAAKo9R,aAAe,KACpBp9R,KAAKq9R,cAAgB,KACrBr9R,KAAKkhN,UAAY,KACjBlhN,KAAKs9R,kBAAoB,KACzBt9R,KAAKipP,QAAU,KACfjpP,KAAKu9R,aAAe,KACpBv9R,KAAKw9R,IAAM,KACXx9R,KAAKy9R,QAAU,KACfz9R,KAAK09R,UAAY,IACnB,EAEF,MAAMC,WAAcjX,GAClB,WAAAz9Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,SACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAACzN,MACC,MAAMx9P,EAASiE,WAAWve,KAAK03Q,IAAUlP,QACzCxoQ,KAAK03Q,IAAYl5P,MAAMlE,GAAU,KAAOA,CAC1C,CACA,CAAC2gQ,IAAS8J,GACR,OAAO4I,GAA+B,OAAnB3tR,KAAK03Q,IAAqB13Q,KAAK03Q,IAAUlrQ,WAAa,GAC3E,EAEF,MAAMoxR,WAAsBxZ,GAC1B,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QAAQ,GAC9BlsR,KAAK69R,cAAgB5gB,GAAepY,EAAWg5B,eAC/C79R,KAAK89R,oBAAsBhhB,GAAS,CAClC/iQ,KAAM8qP,EAAWi5B,oBACjBlhB,aAAc,IACdC,SAAU9sQ,GAAKA,GAAK,IAEtB/P,KAAK+9R,kBAAoBjhB,GAAS,CAChC/iQ,KAAM8qP,EAAWk5B,kBACjBnhB,aAAc,IACdC,SAAU9sQ,GAAKA,GAAK,IAEtB/P,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKg+R,YAAchhB,GAAgBnY,EAAWm5B,YAAa,CAAC,OAAQ,SACpEh+R,KAAK6/Q,cAAgB5C,GAAepY,EAAWgb,cAAe,KAC9D7/Q,KAAKi+R,YAActhB,GAAW,CAC5B5iQ,KAAM8qP,EAAWo5B,YACjBrhB,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,GAAiB,IAANA,IAE5B/P,KAAKk+R,kBAAoBlhB,GAAgBnY,EAAWq5B,kBAAmB,CAAC,MAAO,SAC/El+R,KAAKozJ,SAAWupH,GAAW,CACzB5iQ,KAAM8qP,EAAWzxG,SACjBwpH,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,GAAiB,IAANA,IAE5B/P,KAAKm+R,eAAiBnhB,GAAgBnY,EAAWs5B,eAAgB,CAAC,MAAO,SACzEn+R,KAAKq/Q,QAAUrC,GAAgBnY,EAAWwa,QAAS,CAAC,SAAU,WAC9Dr/Q,KAAKiU,KAAOgpQ,GAAepY,EAAW5wP,KAAM,QAC5CjU,KAAKo/Q,SAAWva,EAAWua,UAAY,UACvCp/Q,KAAKo+R,UAAYzhB,GAAW,CAC1B5iQ,KAAM8qP,EAAWu5B,UACjBxhB,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,GAAiB,IAANA,IAE5B/P,KAAKq+R,gBAAkBrhB,GAAgBnY,EAAWw5B,gBAAiB,CAAC,MAAO,SAC3Er+R,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKqe,OAAS2+P,GAAgBnY,EAAWxmP,OAAQ,CAAC,SAAU,SAC5Dre,KAAKowR,OAAS,KACdpwR,KAAKunC,KAAO,IACd,CACA,CAAC8vO,IAAQj1C,GACPh5N,MAAMiuQ,IAAQj1C,GACdpiO,KAAK+4Q,IAAaulB,cAAc9nR,IAAIxW,KAAKo/Q,SAC3C,CACA,CAACjE,MACC,MAAM3hC,EAAQ+vC,GAAQvpR,KAAM,QACtBmuB,EAAQqrN,EAAMrrN,MAqCpB,OApCIA,IACY,YAAVA,SACKqrN,EAAMrrN,MACHA,EAAMlmB,WAAW,OAC3BuxO,EAAM5S,WAAaz4M,EACnBqrN,EAAM+kD,eAAiB,OACvB/kD,EAAMrrN,MAAQ,gBAGdnuB,KAAK69R,gBACPrkD,EAAMglD,cAAgBvX,GAAgBjnR,KAAK69R,gBAE7CrkD,EAAMilD,YAAmC,SAArBz+R,KAAKg+R,YAAyB,OAAS,SAC3DxkD,EAAMqmC,cAAgBoH,GAAgBjnR,KAAK6/Q,eAClB,IAArB7/Q,KAAKi+R,cACPzkD,EAAMklD,eAAiB,eACE,IAArB1+R,KAAKi+R,cACPzkD,EAAMmlD,oBAAsB,WAGV,IAAlB3+R,KAAKozJ,WACPomF,EAAMklD,eAAiB,WACD,IAAlB1+R,KAAKozJ,WACPomF,EAAMmlD,oBAAsB,WAGhCnlD,EAAMolD,UAAY5+R,KAAKq/Q,QACvB7lC,EAAMyY,SAAWg1B,GAAgB,IAAOjnR,KAAKiU,MAC7Ci3Q,GAAclrR,KAAMA,KAAMA,KAAK+4Q,IAAayG,WAAYhmC,GACjC,IAAnBx5O,KAAKo+R,YACP5kD,EAAMklD,eAAiB,YACA,IAAnB1+R,KAAKo+R,YACP5kD,EAAMmlD,oBAAsB,WAGhCnlD,EAAMr7N,WAAane,KAAKqe,OACjBm7N,CACT,EAEF,MAAMqlD,WAAeza,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UAAU,GAChClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,KACdpwR,KAAK6xR,QAAU,IACjB,EAEF,MAAMiN,WAAgBlY,GACpB,WAAA39Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMwZ,WAAoB3a,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,eACtBlsR,KAAKg/R,eAAiBriB,GAAW,CAC/B5iQ,KAAM8qP,EAAWm6B,eACjBpiB,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKi/R,kBAAoBtiB,GAAW,CAClC5iQ,KAAM8qP,EAAWo6B,kBACjBriB,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKk/R,UAAYviB,GAAW,CAC1B5iQ,KAAM8qP,EAAWq6B,UACjBtiB,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKm/R,mBAAqBxiB,GAAW,CACnC5iQ,KAAM8qP,EAAWs6B,mBACjBviB,aAAc,EACdC,SAAU9sQ,GAAKA,GAAK,IAEtB/P,KAAKo/R,qBAAuBziB,GAAW,CACrC5iQ,KAAM8qP,EAAWu6B,qBACjBxiB,aAAc,EACdC,SAAU9sQ,GAAKA,GAAK,IAEtB/P,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKq/R,mBAAqB1iB,GAAW,CACnC5iQ,KAAM8qP,EAAWw6B,mBACjBziB,aAAc,EACdC,SAAU9sQ,GAAKA,GAAK,GAExB,EAEF,MAAMuvR,WAAc1Y,GAClB,WAAA39Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,SACtBlsR,KAAKu/R,OAASviB,GAAgBnY,EAAW06B,OAAQ,CAAC,MAAO,SAAU,SAAU,OAAQ,UACrFv/R,KAAKmpR,YAActkB,EAAWskB,aAAe,GAC7CnpR,KAAKy1Q,KAAO5Q,EAAW4Q,MAAQ,GAC/Bz1Q,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKg6R,iBAAmBhd,GAAgBnY,EAAWm1B,iBAAkB,CAAC,SAAU,OAAQ,YACxFh6R,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAACtK,MACC,GAAIj7Q,KAAKmpR,cAAgBkD,GAAMr3Q,IAAIhV,KAAKmpR,YAAYvuQ,eAClD,OAAO+iQ,GAAWE,MAEpB,IAAIzyQ,EAASpL,KAAK+4Q,IAAaj3B,QAAU9hP,KAAK+4Q,IAAaj3B,OAAOj+O,IAAI7D,KAAKy1Q,MAC3E,IAAKrqQ,IAAWpL,KAAKy1Q,OAASz1Q,KAAK03Q,KACjC,OAAOiG,GAAWE,MAj4xCxB,IAAwBnzQ,EAs4xCpB,GAHKU,GAAoC,WAA1BpL,KAAKg6R,mBAn4xCAtvR,EAo4xCM1K,KAAK03Q,IAA7BtsQ,EAn4xCAT,WAAW60R,WACN70R,WAAW60R,WAAW90R,GAExBD,EAAc80C,KAAK70C,MAk4xCnBU,EACH,OAAOuyQ,GAAWE,MAEpB,IAAK79Q,KAAKmpR,YAAa,CACrB,IAAK,MAAOt3P,EAAQttB,KAAS+nR,GAC3B,GAAIlhR,EAAO7K,OAASsxB,EAAOtxB,QAAUsxB,EAAOvW,OAAM,CAACvL,EAAGzO,IAAMyO,IAAM3E,EAAO9J,KAAK,CAC5EtB,KAAKmpR,YAAc5kR,EACnB,KACF,CAEF,IAAKvE,KAAKmpR,YACR,OAAOxL,GAAWE,KAEtB,CACA,MAAM4hB,EAAO,IAAIriD,KAAK,CAAChyO,GAAS,CAC9B7G,KAAMvE,KAAKmpR,cAEb,IAAI3vC,EACJ,OAAQx5O,KAAKu/R,QACX,IAAK,MACL,IAAK,SACH,MACF,IAAK,SACH/lD,EAAQ,CACN15N,OAAQ,OACR4/Q,UAAW,QAEb,MACF,IAAK,OACHlmD,EAAQ,CACN35N,MAAO,OACPC,OAAQ,OACR4/Q,UAAW,QAEb,MACF,IAAK,QACHlmD,EAAQ,CACN35N,MAAO,OACP6/Q,UAAW,QAIjB,MAAMtpR,EAASpW,KAAK64Q,MACpB,OAAO8E,GAAWG,QAAQ,CACxBp7Q,KAAM,MACNmiQ,WAAY,CACV8kB,MAAO,CAAC,YACRnwC,QACA7zN,IAAKpd,IAAIo3R,gBAAgBF,GACzBh1Q,IAAKrU,EAASo3Q,GAAUp3Q,EAAOyiQ,OAAiB,OAGtD,EAEF,MAAM+mB,WAAkBxb,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,aAAa,GACnClsR,KAAK+Z,KAAOijQ,GAAgBnY,EAAW9qP,KAAM,CAAC,OAAQ,UACtD/Z,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK4pR,OAAS,KACd5pR,KAAKowR,OAAS,KACdpwR,KAAKu/Q,OAAS,IAChB,CACA,CAACtE,IAAS8J,GACR,MAAkB,UAAd/kR,KAAK+Z,KACA4jQ,GAAWG,QAAQ,CACxBp7Q,KAAM,MACN+qC,SAAU,GACVo3N,WAAY,CAAC,IAGV8Y,GAAWE,KACpB,EAEF,MAAMgiB,WAAgBnZ,GACpB,WAAAz9Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAACzN,MACC,MAAMx9P,EAASpE,SAASlW,KAAK03Q,IAAUlP,OAAQ,IAC/CxoQ,KAAK03Q,IAAYl5P,MAAMlE,GAAU,KAAOA,CAC1C,CACA,CAAC2gQ,IAAS8J,GACR,OAAO4I,GAA+B,OAAnB3tR,KAAK03Q,IAAqB13Q,KAAK03Q,IAAUlrQ,WAAa,GAC3E,EAEF,MAAMszR,WAAgB1b,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAW,GACjClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKi5R,YAAc,IAAIzU,EACzB,EAEF,MAAMub,WAAc3b,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,SAAS,GAC/BlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKynR,SAAWzK,GAAgBnY,EAAW4iB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFznR,KAAKgW,IAAM6uP,EAAW7uP,KAAO,GAC7BhW,KAAKkjN,KAAOy5D,GAAW,CACrB5iQ,KAAM8qP,EAAW3hD,KACjB05D,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK23R,QAAU,IAAInT,GACnBxkR,KAAK4R,KAAO,IAAI4yQ,GAChBxkR,KAAK43R,SAAW,IAAIpT,GACpBxkR,KAAK63R,QAAU,IAAIrT,GACnBxkR,KAAKkpR,OAAS,IAAI1E,GAClBxkR,KAAK83R,MAAQ,IAAItT,GACjBxkR,KAAKq8C,MAAQ,IAAImoO,GACjBxkR,KAAK+3R,QAAU,IAAIvT,GACnBxkR,KAAKq3P,KAAO,IAAImtB,GAChBxkR,KAAKg4R,KAAO,IAAIxT,EAClB,CACA,CAACvJ,MACC,MAAMrhO,EAAS,GACf,IAAK,MAAM6sN,KAASzmQ,KAAKy4Q,MACvB7+N,EAAOr4C,KAAKklQ,EAAMsU,OAEpB,OAAO4C,GAAWG,QAAQlkO,EAC5B,EAEF,MAAMomP,WAAa5b,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QAAQ,GAC9BlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B,MAAM9zB,EAAU,CAAC,OAAQ,cAAe,YACxC/H,KAAKigS,OAASjjB,GAAgBnY,EAAWo7B,OAAQl4R,GACjD/H,KAAK+0B,KAAOioP,GAAgBnY,EAAW9vO,KAAMhtB,GAC7C/H,KAAK2xD,SAAWqrN,GAAgBnY,EAAWlzM,SAAU5pD,GACrD/H,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,IAChB,EAEF,MAAM8P,WAAiB9b,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,YACtB,MAAMnkR,EAAU,CAAC,GAAI,MAAO,MAC5B/H,KAAKmgS,QAAUnjB,GAAgBnY,EAAWs7B,QAASp4R,GACnD/H,KAAKogS,iBAAmBpjB,GAAgBnY,EAAWu7B,iBAAkBr4R,GACrE/H,KAAKqgS,aAAerjB,GAAgBnY,EAAWw7B,aAAct4R,GAC7D/H,KAAKsgS,iBAAmBtjB,GAAgBnY,EAAWy7B,iBAAkBv4R,GACrE/H,KAAKugS,aAAevjB,GAAgBnY,EAAW07B,aAAcx4R,GAC7D/H,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKwgS,aAAexjB,GAAgBnY,EAAW27B,aAAcz4R,GAC7D/H,KAAKygS,YAAczjB,GAAgBnY,EAAW47B,YAAa14R,GAC3D/H,KAAK0gS,gBAAkB1jB,GAAgBnY,EAAW67B,gBAAiB34R,GACnE/H,KAAK2gS,eAAiB3jB,GAAgBnY,EAAW87B,eAAgB54R,GACjE/H,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMqb,WAAaxc,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QAAQ,GAC9BlsR,KAAKgqR,KAAOhN,GAAgBnY,EAAWmlB,KAAM,CAAC,OAAQ,OAAQ,UAC9DhqR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK6gS,MAAQ7jB,GAAgBnY,EAAWg8B,MAAO,CAAC,KAAM,MACtD7gS,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKmvR,KAAO,IACd,CACA,CAAClU,MACC,MAAM7kQ,EAASpW,KAAK64Q,MAAcA,MAC5BsW,EAAOnvR,KAAKmvR,MAAQ,IAAIC,GAAK,CAAC,GAC9BC,EAAYF,EAAKhU,MACjB3hC,EAAQ91O,OAAOwP,OAAO,MACtBq8Q,EAA8B,YAAlBJ,EAAK1H,SAAyB0H,EAAKI,UAAY,EAGjE,IAAIngR,EAAII,EAAIH,EAAII,EAFhB+pO,EAAM81C,YAAcrI,GAAgBsI,GACpC/1C,EAAMg2C,OAASH,EAAUlhQ,MAEzB,IAAItO,EAAQ,OACRC,EAAS,OACT1J,EAAO29K,GAAKw7F,IACbngR,EAAII,EAAIH,EAAII,GAAM,CAAC,MAAO,EAAG,MAAO,QACrCoQ,EAAQ25N,EAAM81C,aACLl5Q,EAAOm9B,GAAKg8O,IACpBngR,EAAII,EAAIH,EAAII,GAAM,CAAC,EAAG,MAAO,OAAQ,OACtCqQ,EAAS05N,EAAM81C,aACS,OAAftvR,KAAK6gS,OACbzxR,EAAII,EAAIH,EAAII,GAAM,CAAC,EAAG,EAAG,OAAQ,SAEjCL,EAAII,EAAIH,EAAII,GAAM,CAAC,EAAG,OAAQ,OAAQ,GAEzC,MAWMygR,EAAM,CACVxtR,KAAM,MACN+qC,SAAU,CAbC,CACX/qC,KAAM,OACNmiQ,WAAY,CACV4qB,MAAOtD,GACP/8Q,KACAI,KACAH,KACAI,KACA+pO,WAMFqrB,WAAY,CACV4qB,MAAOtD,GACPtsQ,QACAC,SACA05N,MAAO,CACLk2C,SAAU,aAIhB,OAAIjD,GAAUr2Q,GACLunQ,GAAWG,QAAQ,CACxBp7Q,KAAM,MACNmiQ,WAAY,CACVrrB,MAAO,CACLmuC,QAAS,SACT9nQ,MAAO,OACPC,OAAQ,SAGZ2tB,SAAU,CAACyiP,MAGfA,EAAIrrB,WAAWrrB,MAAMn4N,SAAW,WACzBs8P,GAAWG,QAAQoS,GAC5B,EAEF,MAAM4Q,WAAe1c,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UAAU,GAChClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,UAAW,WAAY,SAAU,UAC/EvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKmuB,MAAQ,KACbnuB,KAAKowR,OAAS,IAChB,CACA,CAACjV,IAAU4lB,GAIT,OAHAA,EAAaA,EAAaA,EAAW5lB,MAAc,UAG5C,mBAFQn7Q,KAAKuE,KAAKw5C,QAAQ,WAAY,OAAOnjC,kBAEfmmR,MADpB/gS,KAAKmuB,MAAQnuB,KAAKmuB,MAAMgtP,MAAc,YAEzD,EAEF,MAAM6lB,WAAqBta,GACzB,WAAAz9Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,gBACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAACzN,MACC93Q,KAAK03Q,IAAYsF,GAAgBh9Q,KAAK03Q,IAAW,CAAC,OAAQ,IAAK,KACjE,EAEF,MAAMupB,WAAiB7c,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,YAAY,GAClClsR,KAAKkd,OAAS8/P,GAAgBnY,EAAW3nP,OAAQ,CAAC,UAAW,MAAO,YACpEld,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,KACdpwR,KAAKgW,IAAM,IAAIwuQ,EACjB,EAEF,MAAM0c,WAAe9c,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UAAU,GAChClsR,KAAK6oR,YAAc5L,GAAepY,EAAWgkB,YAAa,KAC1D7oR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0oR,UAAYzL,GAAepY,EAAW6jB,UAAW,KACtD1oR,KAAK2oR,WAAa1L,GAAepY,EAAW8jB,WAAY,KACxD3oR,KAAK4oR,SAAW3L,GAAepY,EAAW+jB,SAAU,KACpD5oR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,IAChB,CACA,CAACjV,MACC,MAAO,CACLoE,OAAQ0H,GAAgBjnR,KAAK4oR,UAAY,IAAM3B,GAAgBjnR,KAAK2oR,YAAc,IAAM1B,GAAgBjnR,KAAK6oR,aAAe,IAAM5B,GAAgBjnR,KAAK0oR,WAE3J,EAEF,MAAMyY,WAAY/c,GAChB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,OACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKwwQ,YAAcmM,GAAW,CAC5B5iQ,KAAM8qP,EAAW2L,YACjBoM,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,GAAiB,IAANA,IAE5B/P,KAAKohS,cAAgBpkB,GAAgBnY,EAAWu8B,cAAe,CAAC,SAAU,WAC1EphS,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAM8b,WAAejd,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKshS,YAl3JT,SAAiBvnR,GACf,MAAMmjQ,GAAO,EACb,IAAKnjQ,EACH,MAAO,CACLhK,EAAGmtQ,EACHltQ,EAAGktQ,EACHr9P,MAAOq9P,EACPp9P,OAAQo9P,GAGZ,MAAMxtD,EAAO31M,EAAKyuP,OAAOxsP,MAAM,WAAWC,KAAI1O,GAAK0vQ,GAAe1vQ,EAAG,QACrE,GAAImiN,EAAKnvN,OAAS,GAAKmvN,EAAK,GAAK,GAAKA,EAAK,GAAK,EAC9C,MAAO,CACL3/M,EAAGmtQ,EACHltQ,EAAGktQ,EACHr9P,MAAOq9P,EACPp9P,OAAQo9P,GAGZ,MAAOntQ,EAAGC,EAAG6P,EAAOC,GAAU4vM,EAC9B,MAAO,CACL3/M,IACAC,IACA6P,QACAC,SAEJ,CAw1JuByhR,CAAQ18B,EAAWy8B,aACtCthS,KAAKwhS,KAAOvkB,GAAepY,EAAW28B,MACtCxhS,KAAKyhS,YAAczkB,GAAgBnY,EAAW48B,YAAa,CAAC,WAAY,cACxEzhS,KAAK0hS,MAAQzkB,GAAepY,EAAW68B,OACvC1hS,KAAK2hS,MAAQ98B,EAAW88B,OAAS,GACjC3hS,KAAK4hS,OAAS5kB,GAAgBnY,EAAW+8B,OAAQ,CAAC,OAAQ,WAAY,cACtE5hS,KAAK6hS,QAAU7kB,GAAgBnY,EAAWg9B,QAAS,CAAC,OAAQ,aAC5D7hS,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMuc,WAAgB1d,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAW,GACjClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKq3P,KAAO,IAAImtB,EAClB,EAEF,MAAMud,WAAoB3d,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,eAAe,GACrClsR,KAAKm3R,cAAgBna,GAAgBnY,EAAWsyB,cAAe,CAAC,OAAQ,MAAO,OAC/En3R,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK4pR,OAAS,KACd5pR,KAAKq3R,KAAO,KACZr3R,KAAKowR,OAAS,KACdpwR,KAAKu/Q,OAAS,IAChB,CACA,CAACtE,IAAS8J,GACR,MAAMvrC,EAAQ+vC,GAAQvpR,KAAM,SAAU,OAAQ,UACxC6vN,EAAQ7vN,KAAK64Q,MAAcA,MAC3BkF,EAAO,CACXr7Q,KAAM,QACNmiQ,WAAY,CACVtgQ,KAAM,OACN+wR,QAASzlE,EAAMurD,IACfma,OAAQ1lE,EAAM8nD,MAASyD,KAASvrD,EAAMurD,IACtCuO,MAAO,CAAC,gBACRnwC,QACA,aAAcg0C,GAAU39D,GACxB,iBAAiB,IAOrB,OAJIk9D,GAAWl9D,KACbkuD,EAAKlZ,WAAW,kBAAmB,EACnCkZ,EAAKlZ,WAAW8wB,UAAW,GAEtBhY,GAAWG,QAAQ,CACxBp7Q,KAAM,QACNmiQ,WAAY,CACV8kB,MAAO,CAAC,aAEVl8O,SAAU,CAACswO,IAEf,EAEF,MAAMikB,WAAc5d,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,SAAS,GAC/BlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKiiS,QAAiC,KAAvBp9B,EAAWo9B,QAAiBtlB,GAAW,CACpD5iQ,KAAM8qP,EAAWo9B,QACjBrlB,aAAc,GACdC,SAAU9sQ,IAAK,IACZ,GACL/P,KAAK+N,IAAyB,KAAnB82P,EAAW92P,IAAa4uQ,GAAW,CAC5C5iQ,KAAM8qP,EAAW92P,IACjB6uQ,aAAc,EACdC,SAAU9sQ,IAAK,IACZ,GACL/P,KAAKqK,IAAyB,KAAnBw6P,EAAWx6P,IAAasyQ,GAAW,CAC5C5iQ,KAAM8qP,EAAWx6P,IACjBuyQ,aAAc,EACdC,SAAU9sQ,IAAK,IACZ,GACL/P,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,IAChB,CACA,CAAC/Y,MACC,MAAMjhQ,EAASpW,KAAK64Q,MACdqpB,EAAcliS,KAAKqK,IACR,KAAbrK,KAAKqK,MACPrK,KAAKqK,IAAM+L,aAAkB63Q,IAAY73Q,aAAkB+rR,GAAU,EAAI,GAE1D,KAAbniS,KAAK+N,MAEL/N,KAAK+N,IADa,KAAhBm0R,EACS9rR,aAAkB63Q,IAAY73Q,aAAkB+rR,IAAW,EAAI,EAE/DniS,KAAKqK,MAGF,IAAdrK,KAAK+N,KAAc/N,KAAK+N,IAAM/N,KAAKqK,MACrCrK,KAAK+N,IAAM/N,KAAKqK,KAEG,KAAjBrK,KAAKiiS,UACPjiS,KAAKiiS,QAAU7rR,aAAkBgsR,GAAW,EAAIpiS,KAAKqK,IAEzD,EAEF,MAAMg4R,WAAYzb,GAChB,WAAA39Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,OACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAM+c,WAAale,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QAAQ,GAC9BlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKuiS,IAAM,IAAI/d,EACjB,EAEF,MAAMge,WAAiBpe,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,YACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKmyR,OAASttB,EAAWstB,QAAU,GACnCnyR,KAAKg2Q,OAASnR,EAAWmR,QAAU,GACnCh2Q,KAAK0wQ,QAAU7L,EAAW6L,SAAW,GACrC1wQ,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAAChN,MACC,IAAKv4Q,KAAK63Q,IAAS,CACjB,MAAMzhQ,EAASpW,KAAK64Q,MACd1V,EAAOnjQ,KAAK84Q,MACZ9C,EAAS7S,EAAKuX,IAAa16Q,KAAKg2Q,OAAQ5/P,GACxC+7Q,EAAShvB,EAAKuX,IAAa16Q,KAAKmyR,OAAQ/7Q,GACxCs6P,EAAUvN,EAAKuX,IAAa16Q,KAAK0wQ,QAASt6P,GAChDpW,KAAK63Q,IAAU,CACb7B,OAAQA,IAAS,IAAM,KACvBmc,OAAQA,IAAS,IAAM,KACvBzhB,QAASA,IAAU,IAAM,KACzB+xB,WAAW,EACXC,YAAY,EAEhB,CACA,OAAO1iS,KAAK63Q,GACd,EAEF,MAAMoW,WAAiB7J,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,YAAY,GAClClsR,KAAK2iS,gBAAkB3lB,GAAgBnY,EAAW89B,gBAAiB,CAAC,MAAO,QAAS,aACpF3iS,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK4iS,cAAgBjmB,GAAW,CAC9B5iQ,KAAM8qP,EAAW+9B,cACjBhmB,aAAc,EACdC,SAAU9sQ,IAAK,IAEjB/P,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAK6iS,SAAWlmB,GAAW,CACzB5iQ,KAAM8qP,EAAWg+B,SACjBjmB,aAAc,EACdC,SAAU9sQ,IAAK,IAEjB/P,KAAK8iS,UAAY9lB,GAAgBnY,EAAWi+B,UAAW,CAAC,MAAO,OAAQ,QACvE9iS,KAAK+iS,aAAe/lB,GAAgBnY,EAAWk+B,aAAc,CAAC,MAAO,QAAS,OAAQ,OAAQ,SAC9F/iS,KAAKyqR,SAAWjN,GAAY3Y,EAAW4lB,UACvCzqR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKskQ,KAAO,KACZtkQ,KAAKowR,OAAS,KACdpwR,KAAKgjS,OAAS,KACdhjS,KAAKijS,MAAQ,KACbjjS,KAAKg8O,KAAO,IAAIwoC,GAChBxkR,KAAKuuR,YAAc,IAAI/J,GACvBxkR,KAAKqwR,KAAO,IAAI7L,GAChBxkR,KAAKuwR,UAAY,IAAI/L,GACrBxkR,KAAK6vN,MAAQ,IAAI20D,GACjBxkR,KAAKwwR,QAAU,IAAIhM,EACrB,CACA,CAAC5K,MACC,OAAK55Q,KAAK63Q,KAMF73Q,KAAKijS,QAA6B,IAApBjjS,KAAKijS,MAAMl1R,KAAc/N,KAAK63Q,IAAQqrB,YAAcljS,KAAKijS,MAAMl1R,KALnF/N,KAAK63Q,IAAU,CACbqrB,YAAa,IAER,EAGX,CACA,CAAC5rB,aACQt3Q,KAAK63Q,GACd,CACA,CAACc,MACM34Q,KAAK63Q,MACR73Q,KAAK63Q,IAAU,CACbqrB,YAAa,IAGjB,MAAM9sR,EAASpW,KAAK64Q,MACpB,MAAwB,sBAApBziQ,EAAO+sR,UACLnjS,KAAK45Q,OACP55Q,KAAK63Q,IAAQqrB,aAAe,EACrBljS,MAGJoW,EAAOuiQ,KAChB,CACA,CAACT,MACC,OAAOl4Q,KAAK63Q,IAAQjgG,OAAS,CAC3B/3J,MAAO,EACPC,OAAQ,EAEZ,CACA,CAACm7P,MACMj7Q,KAAK63Q,MACR73Q,KAAK63Q,IAAU,CACbqrB,YAAa,IAGjB,MAAMz1P,EAAW,GACjBztC,KAAK63Q,IAAQpqO,SAAWA,EACxB,MAAM+rM,EAAQ91O,OAAOwP,OAAO,MAC5B,GAAIlT,KAAKgjS,QAAUhjS,KAAKgjS,OAAOtB,OAAS1hS,KAAKgjS,OAAOxB,MAOlD,GANAhoD,EAAM35N,MAAQonQ,GAAgBjnR,KAAKgjS,OAAOtB,OAC1CloD,EAAM15N,OAASmnQ,GAAgBjnR,KAAKgjS,OAAOxB,MAC3CxhS,KAAK63Q,IAAQjgG,MAAQ,CACnB/3J,MAAO7f,KAAKgjS,OAAOtB,MACnB5hR,OAAQ9f,KAAKgjS,OAAOxB,MAEU,cAA5BxhS,KAAKgjS,OAAOvB,YAA6B,CAC3C,MAAM1xR,EAAIypO,EAAM35N,MAChB25N,EAAM35N,MAAQ25N,EAAM15N,OACpB05N,EAAM15N,OAAS/P,EACf/P,KAAK63Q,IAAQjgG,MAAQ,CACnB/3J,MAAO7f,KAAKgjS,OAAOxB,KACnB1hR,OAAQ9f,KAAKgjS,OAAOtB,MAExB,OAEAl6R,EAAK,6DAUP,OARAxH,KAAKo3Q,IAAiB,CACpB5jP,OAAQ,IAAIld,IAAI,CAAC,OAAQ,OAAQ,QAAS,YAC1Cs/P,SAAS,IAEX51Q,KAAKo3Q,IAAiB,CACpB5jP,OAAQ,IAAIld,IAAI,CAAC,gBACjBs/P,SAAS,IAEJ+H,GAAWG,QAAQ,CACxBp7Q,KAAM,MACN+qC,WACAo3N,WAAY,CACV8kB,MAAO,CAAC,WACR9tP,GAAI77B,KAAKo7Q,IACT5hC,QACAk3C,QAAS1wR,KAAK0C,OAGpB,EAEF,MAAMy/R,WAAgB/d,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAW,GACjClsR,KAAKojS,iBAAmBpmB,GAAgBnY,EAAWu+B,iBAAkB,CAAC,WAAY,cAClFpjS,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKmjS,SAAWnmB,GAAgBnY,EAAWs+B,SAAU,CAAC,oBAAqB,kBAAmB,qBAC9FnjS,KAAKyqR,SAAWjN,GAAY3Y,EAAW4lB,UACvCzqR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,KACdpwR,KAAKijS,MAAQ,KACbjjS,KAAKouR,SAAW,IAAI5J,GACpBxkR,KAAKqjS,QAAU,IAAI7e,EACrB,CACA,CAAClN,MACC,IAAK,MAAMpM,KAAQlrQ,KAAKouR,SAAS3gP,SAC/By9N,EAAKoM,MAEP,IAAK,MAAMpM,KAAQlrQ,KAAKqjS,QAAQ51P,SAC9By9N,EAAKoM,KAET,CACA,CAACsC,MACC,OAAQ55Q,KAAKijS,QAA6B,IAApBjjS,KAAKijS,MAAMl1R,KAAc/N,KAAK63Q,IAAQqrB,YAAcljS,KAAKijS,MAAMl1R,GACvF,CACA,CAAC4qQ,MAQC,GAPK34Q,KAAK63Q,MACR73Q,KAAK63Q,IAAU,CACbqrB,YAAa,EACb9jR,WAAY,EACZkkR,cAAe,IAGG,sBAAlBtjS,KAAKmjS,SAAkC,CACzC,GAAInjS,KAAK63Q,IAAQz4P,UAAY,EAAIpf,KAAKouR,SAAS3gP,SAASltC,OAGtD,OAFAP,KAAK63Q,IAAQz4P,WAAa,EACTpf,KAAKouR,SAAS3gP,SAASztC,KAAK63Q,IAAQz4P,WACrCu5P,MAElB,GAAI34Q,KAAK63Q,IAAQyrB,aAAe,EAAItjS,KAAKqjS,QAAQ51P,SAASltC,OAExD,OADAP,KAAK63Q,IAAQyrB,cAAgB,EACtBtjS,KAAKqjS,QAAQ51P,SAASztC,KAAK63Q,IAAQyrB,cAAc3qB,MAE1D,GAAI34Q,KAAK45Q,MAIP,OAHA55Q,KAAK63Q,IAAQqrB,aAAe,EAC5BljS,KAAK63Q,IAAQz4P,WAAa,EAC1Bpf,KAAK63Q,IAAQyrB,cAAgB,EACtBtjS,KAAK24Q,MAEd,MAAMviQ,EAASpW,KAAK64Q,MACpB,OAAIziQ,aAAkB+rR,GACb/rR,EAAOuiQ,OAEhB34Q,KAAKs3Q,MACEt3Q,KAAK24Q,MACd,CACA,MAAM4qB,EAAavjS,KAAK84Q,MAAoBjB,IAAQ0rB,WAC9CC,EAASD,EAAa,GAAM,EAAI,OAAS,MACzCliR,EAA0B,IAAfkiR,EAAmB,QAAU,OAC9C,IAAIr4B,EAAOlrQ,KAAKouR,SAAS3gP,SAASsxO,MAAKzxQ,GAAKA,EAAEw1R,YAAcU,GAAUl2R,EAAEy1R,eAAiB1hR,IACzF,OAAI6pP,IAGJA,EAAOlrQ,KAAKouR,SAAS3gP,SAASsxO,MAAKzxQ,GAAqB,QAAhBA,EAAEw1R,WAAuBx1R,EAAEy1R,eAAiB1hR,IAChF6pP,IAGJA,EAAOlrQ,KAAKouR,SAAS3gP,SAASsxO,MAAKzxQ,GAAqB,QAAhBA,EAAEw1R,WAA0C,QAAnBx1R,EAAEy1R,eAC/D73B,GAGGlrQ,KAAKouR,SAAS3gP,SAAS,IAChC,EAEF,MAAMg2P,WAAarf,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QAAQ,GAC9BlsR,KAAK4nR,OAAS5K,GAAgBnY,EAAW+iB,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,UACtG5nR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK02N,WAAamuC,EAAWnuC,WAAaumD,GAAepY,EAAWnuC,WAAY,OAAS,GACzF12N,KAAKgpR,WAAankB,EAAWmkB,WAAa/L,GAAepY,EAAWmkB,WAAY,OAAS,GACzFhpR,KAAKipR,YAAcpkB,EAAWokB,YAAchM,GAAepY,EAAWokB,YAAa,OAAS,GAC5FjpR,KAAK0jS,QAAU/mB,GAAW,CACxB5iQ,KAAM8qP,EAAW6+B,QACjB9mB,aAAc,EACdC,SAAU9sQ,GAAKA,GAAK,IAEtB/P,KAAK2jS,SAAW9+B,EAAW8+B,UAAY,GACvC3jS,KAAK4jS,YAAc/+B,EAAW++B,YAAc3mB,GAAepY,EAAW++B,YAAa,OAAS,GAC5F5jS,KAAK8oR,WAAajkB,EAAWikB,WAAa7L,GAAepY,EAAWikB,WAAY,OAAS,GACzF9oR,KAAK+oR,WAAalkB,EAAWkkB,WAAa9L,GAAepY,EAAWkkB,WAAY,OAAS,GACzF/oR,KAAK6jS,WAAah/B,EAAWg/B,WAAa5mB,GAAej9Q,KAAK6jS,YAAc,GAC5E7jS,KAAK8jS,UAAYj/B,EAAWi/B,UAAY,IAAIt7B,OAAOxsP,MAAM,OAAOC,KAAI,CAAClM,EAAGzO,IAAMA,EAAI,GAAM,EAAI27Q,GAAeltQ,GAAKA,IAChH/P,KAAKqqR,WAAaxlB,EAAWwlB,WAAapN,GAAepY,EAAWwlB,WAAY,OAAS,GACzFrqR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK+qR,OAAS/N,GAAgBnY,EAAWkmB,OAAQ,CAAC,MAAO,SAAU,WACnE/qR,KAAK+jS,OAASpnB,GAAW,CACvB5iQ,KAAM8qP,EAAWk/B,OACjBnnB,aAAc,EACdC,SAAU9sQ,GAAKA,GAAK,IAEtB/P,KAAKgkS,YAAc,IACrB,CACA,CAAC7oB,MACC,MAAM3hC,EAAQ+vC,GAAQvpR,KAAM,UA2B5B,MA1BwB,KAApBA,KAAKgpR,aACPxvC,EAAMyqD,YAAchd,GAAgBjnR,KAAKgpR,aAElB,KAArBhpR,KAAKipR,cACPzvC,EAAM0qD,aAAejd,GAAgBjnR,KAAKipR,cAEpB,KAApBjpR,KAAK8oR,aACPtvC,EAAM2qD,WAAald,GAAgBjnR,KAAK8oR,aAElB,KAApB9oR,KAAK+oR,aACPvvC,EAAM4qD,cAAgBnd,GAAgBjnR,KAAK+oR,aAErB,KAApB/oR,KAAKqqR,aACP7wC,EAAM6wC,WAAapD,GAAgBjnR,KAAKqqR,YACxCF,GAAc3wC,IAEZx5O,KAAK02N,WAAa,IACpB8iB,EAAM9iB,WAAauwD,GAAgBjnR,KAAK02N,aAElB,KAApB12N,KAAK6jS,aACPrqD,EAAM6qD,QAAUpd,GAAgBjnR,KAAK6jS,aAEnC7jS,KAAK8jS,SAASvjS,OACdP,KAAKskS,eACP5gS,OAAO+5C,OAAO+7L,EAAOx5O,KAAKskS,cAAcnpB,OAEnC3hC,CACT,EAEF,MAAM+qD,WAAqBngB,GACzB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,gBAAgB,GACtClsR,KAAKm3R,cAAgBna,GAAgBnY,EAAWsyB,cAAe,CAAC,OAAQ,MAAO,OAC/En3R,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKwkS,aAAe3/B,EAAW2/B,cAAgB,IAC/CxkS,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK4pR,OAAS,KACd5pR,KAAKowR,OAAS,KACdpwR,KAAKu/Q,OAAS,IAChB,EAEF,MAAMklB,WAAyBrgB,GAC7B,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAW,GACjClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,aAAc,gBAAiB,eAAgB,gBAAiB,aAAc,aAC5HvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKmuB,MAAQ,KACbnuB,KAAKowR,OAAS,IAChB,CACA,CAACjV,IAAU4lB,GACTA,EAAaA,EAAaA,EAAW5lB,MAAc,UACnD,MAAMupB,EAAW1kS,KAAKmuB,MAAQnuB,KAAKmuB,MAAMgtP,MAAc,UAEjD5nQ,EAAM,4BACNw0C,EAAS,GAAGg5O,KAAcA,SAAyB2D,SAAuBA,SAChF,OAAQ1kS,KAAKuE,MACX,IAAK,aACH,MAAO,GAAGgP,YAAcw0C,MAAWx0C,cAAgBw0C,KACrD,IAAK,gBACH,MAAO,GAAGx0C,WAAaw0C,MAAWx0C,YAAcw0C,KAClD,IAAK,eACH,MAAO,GAAGx0C,WAAaw0C,KACzB,IAAK,gBACH,MAAO,GAAGx0C,YAAcw0C,KAC1B,IAAK,aACH,MAAO,GAAGx0C,YAAcw0C,KAC1B,IAAK,WACH,MAAO,GAAGx0C,cAAgBw0C,KAE9B,MAAO,EACT,EAEF,MAAM48O,WAAgB/d,GACpB,WAAA39Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMqf,WAAcxgB,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,SAAS,GAC/BlsR,KAAKm9R,iBAAmB,IAAI3Y,GAC5BxkR,KAAKyjG,IAAM,IAAI+gL,GACfxkR,KAAKg8O,KAAO,IAAIwoC,GAChBxkR,KAAKotR,OAAS,IAAI5I,GAClBxkR,KAAK6kS,QAAU,IAAIrgB,GACnBxkR,KAAKm7R,UAAY,IAAI3W,GACrBxkR,KAAK8kS,QAAU,IAAItgB,GACnBxkR,KAAK23R,QAAU,IAAInT,GACnBxkR,KAAK4pR,OAAS,IAAIpF,GAClBxkR,KAAKsyR,MAAQ,IAAI9N,GACjBxkR,KAAK+kS,WAAa,IAAIvgB,GACtBxkR,KAAKglS,YAAc,IAAIxgB,GACvBxkR,KAAKi8R,OAAS,IAAIzX,GAClBxkR,KAAKu6R,UAAY,IAAI/V,GACrBxkR,KAAKs4R,QAAU,IAAI9T,GACnBxkR,KAAKi5R,YAAc,IAAIzU,GACvBxkR,KAAKo9R,aAAe,IAAI5Y,GACxBxkR,KAAKu7R,YAAc,IAAI/W,GACvBxkR,KAAKw7R,WAAa,IAAIhX,GACtBxkR,KAAKmuB,MAAQ,IAAIq2P,GACjBxkR,KAAKq3R,KAAO,IAAI7S,GAChBxkR,KAAKw6R,QAAU,IAAIhW,GACnBxkR,KAAKuuR,YAAc,IAAI/J,GACvBxkR,KAAKuyR,OAAS,IAAI/N,GAClBxkR,KAAK4R,KAAO,IAAI4yQ,GAChBxkR,KAAK43R,SAAW,IAAIpT,GACpBxkR,KAAKilS,aAAe,IAAIzgB,GACxBxkR,KAAK63R,QAAU,IAAIrT,GACnBxkR,KAAKklS,UAAY,IAAI1gB,GACrBxkR,KAAKskQ,KAAO,IAAIkgB,GAChBxkR,KAAKm4R,aAAe,IAAI3T,GACxBxkR,KAAKq9R,cAAgB,IAAI7Y,GACzBxkR,KAAKqwR,KAAO,IAAI7L,GAChBxkR,KAAKmvR,KAAO,IAAI3K,GAChBxkR,KAAKwQ,SAAW,IAAIg0Q,GACpBxkR,KAAKkhN,UAAY,IAAIsjE,GACrBxkR,KAAK+uQ,QAAU,IAAIyV,GACnBxkR,KAAK05R,YAAc,IAAIlV,GACvBxkR,KAAK00R,WAAa,IAAIlQ,GACtBxkR,KAAKu5R,iBAAmB,IAAI/U,GAC5BxkR,KAAKs9R,kBAAoB,IAAI9Y,GAC7BxkR,KAAK+hR,MAAQ,IAAIyC,GACjBxkR,KAAKkpR,OAAS,IAAI1E,GAClBxkR,KAAKswR,SAAW,IAAI9L,GACpBxkR,KAAKuwR,UAAY,IAAI/L,GACrBxkR,KAAKi1O,QAAU,IAAIuvC,GACnBxkR,KAAKowR,OAAS,IAAI5L,GAClBxkR,KAAK6vN,MAAQ,IAAI20D,GACjBxkR,KAAKunC,KAAO,IAAIi9O,GAChBxkR,KAAKwzB,OAAS,IAAIgxP,GAClBxkR,KAAK83R,MAAQ,IAAItT,GACjBxkR,KAAKsiN,KAAO,IAAIkiE,GAChBxkR,KAAK45D,OAAS,IAAI4qN,GAClBxkR,KAAKipP,QAAU,IAAIu7B,GACnBxkR,KAAKgkS,YAAc,IAAIxf,GACvBxkR,KAAKq8C,MAAQ,IAAImoO,GACjBxkR,KAAKk8R,UAAY,IAAI1X,GACrBxkR,KAAK+3R,QAAU,IAAIvT,GACnBxkR,KAAK20R,QAAU,IAAInQ,GACnBxkR,KAAK8W,MAAQ,IAAI0tQ,GACjBxkR,KAAKu4R,KAAO,IAAI/T,GAChBxkR,KAAK40R,SAAW,IAAIpQ,GACpBxkR,KAAKwtC,KAAO,IAAIg3O,GAChBxkR,KAAKy8R,OAAS,IAAIjY,GAClBxkR,KAAKu9R,aAAe,IAAI/Y,GACxBxkR,KAAKm5R,SAAW,IAAI3U,GACpBxkR,KAAKu/Q,OAAS,IAAIiF,GAClBxkR,KAAKw9R,IAAM,IAAIhZ,GACfxkR,KAAKgjS,OAAS,IAAIxe,GAClBxkR,KAAKgJ,QAAU,IAAIw7Q,GACnBxkR,KAAKq8R,YAAc,IAAI7X,GACvBxkR,KAAKijS,MAAQ,IAAIze,GACjBxkR,KAAKuiS,IAAM,IAAI/d,GACfxkR,KAAK60R,KAAO,IAAIrQ,GAChBxkR,KAAK0vR,SAAW,IAAIlL,GACpBxkR,KAAKouR,SAAW,IAAI5J,GACpBxkR,KAAKqjS,QAAU,IAAI7e,GACnBxkR,KAAKykR,KAAO,IAAID,GAChBxkR,KAAKmlS,aAAe,IAAI3gB,GACxBxkR,KAAKmgP,QAAU,IAAIqkC,GACnBxkR,KAAK6xR,QAAU,IAAIrN,GACnBxkR,KAAK08R,OAAS,IAAIlY,GAClBxkR,KAAKokB,OAAS,IAAIogQ,GAClBxkR,KAAKy9R,QAAU,IAAIjZ,GACnBxkR,KAAKolS,UAAY,IAAI5gB,GACrBxkR,KAAKgW,IAAM,IAAIwuQ,GACfxkR,KAAK0zR,OAAS,IAAIlP,GAClBxkR,KAAKy4R,YAAc,IAAIjU,GACvBxkR,KAAK25R,SAAW,IAAInV,GACpBxkR,KAAKytN,UAAY,IAAI+2D,GACrBxkR,KAAK80R,QAAU,IAAItQ,GACnBxkR,KAAK28R,MAAQ,IAAInY,GACjBxkR,KAAKytR,MAAQ,IAAIjJ,GACjBxkR,KAAK48R,QAAU,IAAIpY,GACnBxkR,KAAKwwR,QAAU,IAAIhM,GACnBxkR,KAAKywR,WAAa,IAAIjM,GACtBxkR,KAAKqlS,UAAY,IAAI7gB,GACrBxkR,KAAK+0R,WAAa,IAAIvQ,GACtBxkR,KAAK45R,OAAS,IAAIpV,GAClBxkR,KAAKq3P,KAAO,IAAImtB,GAChBxkR,KAAKs7R,SAAW,IAAI9W,GACpBxkR,KAAKg4R,KAAO,IAAIxT,GAChBxkR,KAAK09R,UAAY,IAAIlZ,GACrBxkR,KAAK0tR,QAAU,IAAIlJ,GACnBxkR,KAAKktR,UAAY,IAAI1I,GACrBxkR,KAAKslS,SAAW,IAAI9gB,GACpBxkR,KAAKw4R,GAAK,IAAIhU,GACdxkR,KAAK68Q,SAAW,IAAI2H,GACpBxkR,KAAK2I,MAAQ,IAAI67Q,GACjBxkR,KAAKulS,UAAY,IAAI/gB,EACvB,EAEF,MAAMghB,WAAephB,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UAAU,GAChClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,SAAU,aACxDvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKmuB,MAAQ,KACbnuB,KAAKowR,OAAS,IAChB,CACA,CAACjV,IAAU4lB,GACTA,EAAaA,EAAaA,EAAW5lB,MAAc,UACnD,MAAMupB,EAAW1kS,KAAKmuB,MAAQnuB,KAAKmuB,MAAMgtP,MAAc,UAEvD,MAAO,qCADsB,WAAdn7Q,KAAKuE,KAAoB,GAAGw8R,KAAc2D,IAAa,GAAGA,KAAY3D,MAEvF,EAEF,MAAM0E,WAAe7e,GACnB,WAAA39Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMmgB,WAAgBthB,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAW,GACjClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKokB,OAAS,IAAIogQ,EACpB,EAEF,MAAMyY,WAAkB7Y,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,aAAa,GACnClsR,KAAKgqR,KAAOhN,GAAgBnY,EAAWmlB,KAAM,CAAC,OAAQ,OAAQ,UAC9DhqR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKuyR,OAAS,IAAI/N,GAAe,GACjCxkR,KAAKmvR,KAAO,IAAI3K,GAAe,GAC/BxkR,KAAKunC,KAAO,IACd,CACA,CAAC0zO,MACC,MAAMkU,EAAOnvR,KAAKmvR,KAAK1hP,SAASltC,OAASP,KAAKmvR,KAAK1hP,SAAS,GAAK,IAAI2hP,GAAK,CAAC,GACrEC,EAAYF,EAAKhU,MACjB3hC,EAAQ91O,OAAOwP,OAAO,MACA,YAAxBlT,KAAKunC,MAAMkgP,SACb/jR,OAAO+5C,OAAO+7L,EAAOx5O,KAAKunC,KAAK4zO,OAE/B3hC,EAAMjyM,KAAO,cAEfiyM,EAAM81C,YAAcrI,GAAkC,YAAlBkI,EAAK1H,SAAyB0H,EAAKI,UAAY,GACnF/1C,EAAMg2C,OAASH,EAAUlhQ,MACzB,MACMw3Q,GADS3lS,KAAKuyR,OAAO9kP,SAASltC,OAASP,KAAKuyR,OAAO9kP,SAAS,GAAK,IAAIqpP,GAAO,CAAC,IACxD3b,MAcrB+U,EAAM,CACVxtR,KAAM,MACN+qC,SAAU,CAfC,CACX/qC,KAAM,OACNmiQ,WAAY,CACV4qB,MAAOtD,GACPtsQ,MAAO,OACPC,OAAQ,OACR/P,EAAG,EACHC,EAAG,EACH6/Q,GAAI8V,EAAYhT,OAChB7C,GAAI6V,EAAYhT,OAChBn5C,WAMFqrB,WAAY,CACV4qB,MAAOtD,GACP3yC,MAAO,CACLk2C,SAAU,WAEZ7vQ,MAAO,OACPC,OAAQ,SAIZ,OAAI2sQ,GADWzsR,KAAK64Q,MAAcA,OAEzB8E,GAAWG,QAAQ,CACxBp7Q,KAAM,MACNmiQ,WAAY,CACVrrB,MAAO,CACLmuC,QAAS,SACT9nQ,MAAO,OACPC,OAAQ,SAGZ2tB,SAAU,CAACyiP,MAGfA,EAAIrrB,WAAWrrB,MAAMn4N,SAAW,WACzBs8P,GAAWG,QAAQoS,GAC5B,EAEF,MAAM0V,WAAmBhf,GACvB,WAAA39Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,OACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMsgB,WAAejf,GACnB,WAAA39Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UACtBlsR,KAAK2C,QAAUkiQ,EAAWliQ,SAAW,GACrC3C,KAAKmpR,YAActkB,EAAWskB,aAAe,GAC7CnpR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKg7R,MAAQhe,GAAgBnY,EAAWm2B,MAAO,CAAC,SAAU,OAAQ,WAClEh7R,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMugB,WAAoB1hB,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,eACtBlsR,KAAK+xR,WAAaltB,EAAWktB,YAAc,GAC3C/xR,KAAKgW,IAAM6uP,EAAW7uP,KAAO,GAC7BhW,KAAKg2Q,OAASnR,EAAWmR,QAAU,EACrC,EAEF,MAAM+vB,WAAiB3hB,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,YAAY,GAClClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKo3O,UAAY4lC,GAAgBnY,EAAWztB,UAAW,CAAC,OAAQ,QAAS,WACzEp3O,KAAKgW,IAAM6uP,EAAW7uP,KAAO,GAC7BhW,KAAKg2Q,OAASnR,EAAWmR,QAAU,GACnCh2Q,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKwzB,OAAS,KACdxzB,KAAKm5R,SAAW,IAClB,EAEF,MAAM6M,WAAkB5hB,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,aAAa,GACnClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,SAAU,WACxDvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK4pR,OAAS,KACd5pR,KAAKowR,OAAS,KACdpwR,KAAKwzB,OAAS,KACdxzB,KAAKm5R,SAAW,KAChBn5R,KAAKu/Q,OAAS,IAChB,EAEF,MAAM0mB,WAAgB7hB,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAW,GACjClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKi5R,YAAc,IAAIzU,EACzB,EAEF,MAAM0hB,WAAc9hB,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,SAAS,GAC/BlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,IAChB,CACA,CAACjV,IAAU4lB,GACT,OAAOA,EAAaA,EAAW5lB,MAAc,SAC/C,EAEF,MAAMgrB,WAAcvf,GAClB,WAAA39Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,SACtBlsR,KAAKomS,QAAUzpB,GAAW,CACxB5iQ,KAAM8qP,EAAWuhC,QACjBxpB,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKqmS,SAAWrpB,GAAgBnY,EAAWwhC,SAAU,CAAC,SAAU,UAAW,OAAQ,YACnFrmS,KAAK+5R,IAAMl1B,EAAWk1B,KAAO,GAC7B/5R,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAM+gB,WAAgBliB,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAW,GACjClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKumS,KAAO5pB,GAAW,CACrB5iQ,KAAM8qP,EAAW0hC,KACjB3pB,aAAc,GACdC,SAAU9sQ,GAAKA,GAAK,GAAKA,GAAK,MAEhC/P,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKmuB,MAAQ,KACbnuB,KAAKowR,OAAS,IAChB,CACA,CAACjV,IAAU5Y,GACT,MAAMnhK,EAAQphG,KAAKumS,KAAO,IAC1B,OAAO75R,EAAKC,aAAavC,KAAK0U,MAAMyjP,EAAQ55P,MAAMiE,GAAK,EAAIw0F,GAASphG,KAAK2I,MAAMiE,EAAIw0F,GAAQh3F,KAAK0U,MAAMyjP,EAAQ55P,MAAMkE,GAAK,EAAIu0F,GAASphG,KAAK2I,MAAMkE,EAAIu0F,GAAQh3F,KAAK0U,MAAMyjP,EAAQ55P,MAAMmE,GAAK,EAAIs0F,GAASphG,KAAK2I,MAAMmE,EAAIs0F,GACzN,EAEF,MAAMolM,WAAgBpiB,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WAAW,GACjClsR,KAAKwqR,OAASxN,GAAgBnY,EAAW2lB,OAAQ,CAAC,OAAQ,iBAAkB,YAAa,aACzFxqR,KAAKymS,WAAa9pB,GAAW,CAC3B5iQ,KAAM8qP,EAAW4hC,WACjB7pB,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKmnR,WAAanK,GAAgBnY,EAAWsiB,WAAY,CAAC,UAAW,eAAgB,aAAc,cAAe,eAAgB,aAAc,cAAe,YAAa,aAC5KnnR,KAAKqnR,QAAU1K,GAAW,CACxB5iQ,KAAM8qP,EAAWwiB,QACjBzK,aAAc,EACdC,SAAUtwQ,GAAKA,GAAK,IAAY,IAAPA,IAE3BvM,KAAKsnR,cAAgBziB,EAAWyiB,cAAgB,IAAI9e,OAAOxsP,MAAM,OAAOC,KAAIlM,GAAW,OAANA,GAAc,EAAIktQ,GAAeltQ,KAClH/P,KAAKuzC,EAAIsxN,EAAWtxN,EAAI0pO,GAAepY,EAAWtxN,GAAK,GACvDvzC,KAAK4nR,OAAS5K,GAAgBnY,EAAW+iB,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,UACtG5nR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKw7D,OAASwhN,GAAgBnY,EAAWrpM,OAAQ,CAAC,WAAY,QAAS,SAAU,QAAS,MAAO,QAAS,OAC1Gx7D,KAAKq4R,OAASxzB,EAAWwzB,QAAU,GACnCr4R,KAAKo2C,KAAO6mO,GAAepY,EAAWzuN,KAAM,OAC5Cp2C,KAAKkoR,KAAOjL,GAAepY,EAAWqjB,KAAM,OAC5CloR,KAAK0mS,UAAY1pB,GAAgBnY,EAAW6hC,UAAW,CAAC,cAAe,kBACvE1mS,KAAKmoR,KAAOlL,GAAepY,EAAWsjB,KAAM,OAC5CnoR,KAAKgoR,KAAO/K,GAAepY,EAAWmjB,KAAM,OAC5ChoR,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKynR,SAAWzK,GAAgBnY,EAAW4iB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFznR,KAAKyqR,SAAWjN,GAAY3Y,EAAW4lB,UACvCzqR,KAAK2mS,aAAe3pB,GAAgBnY,EAAW8hC,aAAc,CAAC,SAAU,SACxE3mS,KAAK4mS,MAAQ5pB,GAAgBnY,EAAW+hC,MAAO,CAAC,OAAQ,SACxD5mS,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK+zL,EAAI8wE,EAAW9wE,EAAIkpF,GAAepY,EAAW9wE,GAAK,GACvD/zL,KAAK+P,EAAIktQ,GAAepY,EAAW90P,EAAG,OACtC/P,KAAKgQ,EAAIitQ,GAAepY,EAAW70P,EAAG,OACtChQ,KAAKotR,OAAS,KACdptR,KAAK+iB,KAAO,KACZ/iB,KAAK8kS,QAAU,KACf9kS,KAAK4pR,OAAS,KACd5pR,KAAKsyR,MAAQ,KACbtyR,KAAKu6R,UAAY,KACjBv6R,KAAKskQ,KAAO,KACZtkQ,KAAKowR,OAAS,KACdpwR,KAAKu4R,KAAO,KACZv4R,KAAKu/Q,OAAS,KACdv/Q,KAAKijS,MAAQ,KACbjjS,KAAK0vR,SAAW,KAChB1vR,KAAKqjS,QAAU,KACfrjS,KAAKykR,KAAO,KACZzkR,KAAKktR,UAAY,KACjBltR,KAAK68Q,SAAW,KAChB78Q,KAAKulS,UAAY,KACjBvlS,KAAKg8O,KAAO,IAAIwoC,GAChBxkR,KAAK+kS,WAAa,IAAIvgB,GACtBxkR,KAAKglS,YAAc,IAAIxgB,GACvBxkR,KAAKw6R,QAAU,IAAIhW,GACnBxkR,KAAKqwR,KAAO,IAAI7L,GAChBxkR,KAAK+hR,MAAQ,IAAIyC,GACjBxkR,KAAKswR,SAAW,IAAI9L,GACpBxkR,KAAKuwR,UAAY,IAAI/L,GACrBxkR,KAAK6vN,MAAQ,IAAI20D,GACjBxkR,KAAK60N,MAAQ,IAAI2vD,GACjBxkR,KAAKy4R,YAAc,IAAIjU,GACvBxkR,KAAKwwR,QAAU,IAAIhM,GACnBxkR,KAAKywR,WAAa,IAAIjM,EACxB,CACA,CAAC5L,MACC,MAAMxiQ,EAASpW,KAAK64Q,MACpB,OAAIziQ,aAAkB02Q,GACb12Q,EAAOwiQ,MAETxiQ,CACT,CACA,CAACijQ,MACC,OAAO,CACT,CACA,CAACK,MACC,OAAO15Q,KAAKw7D,OAAOqjN,SAAS,QAAmC,IAAzB7+Q,KAAK63Q,IAAQ2T,SAAiBxrR,KAAK63Q,IAAQ4T,aAAe,GAAKzrR,KAAK64Q,MAAca,KAC1H,CACA,EAAEhB,YACOmU,GAAqB7sR,KAC9B,CACA,CAAC+3Q,MACC,OAAOsT,GAAUrrR,KACnB,CACA,CAACk3Q,IAAU6G,EAAMruD,GACf67D,GAAQvrR,KAAM+9Q,EAAMruD,EACtB,CACA,CAACwoD,MACC,OAAOwT,GAAkB1rR,KAC3B,CACA,CAACy5Q,MACC,MAAMrjQ,EAASpW,KAAK44Q,MACpB,QAAKxiQ,EAAOqjQ,aAGuBr2Q,IAA/BpD,KAAK63Q,IAAQ4iB,cACRz6R,KAAK63Q,IAAQ4iB,cAEF,aAAhBz6R,KAAKw7D,QAAyBx7D,KAAKw7D,OAAO1vD,SAAS,QAInD9L,KAAKu4R,MAA6B,SAArBv4R,KAAKu4R,KAAK0H,QAHzBjgS,KAAK63Q,IAAQ4iB,eAAgB,GACtB,KAMLrkR,EAAOolD,QAAQqjN,SAAS,QAA0C,IAAhCzoQ,EAAOyhQ,IAAQ4T,eAGrDzrR,KAAK63Q,IAAQ4iB,eAAgB,EACtB,IACT,CACA,CAACxf,IAAS8J,GAER,GADAkI,GAAYjtR,MACRA,KAAKsyR,MAAO,CACd,GAAyB,SAArBtyR,KAAKsyR,MAAMn5C,OAA+C,KAA3Bn5O,KAAKsyR,MAAMY,YAAoB,CAChE,MAAMtlP,EAAO,IAAI6lP,GAAW,CAC1B1F,WAAY/tR,KAAKsyR,MAAMn5C,MACvB68B,OAAQh2Q,KAAKsyR,MAAMY,YACnBhF,SAAUluR,KAAKsyR,MAAMpE,SAAS1hR,aAEhCohC,EAAKmrO,IAAe/4Q,KAAK+4Q,IACzB/4Q,KAAKm3Q,IAAcvpO,GACnB5tC,KAAK+kS,WAAWxjS,KAAKqsC,EACvB,CACA,GAA0B,SAAtB5tC,KAAKsyR,MAAMp5C,QAAiD,KAA5Bl5O,KAAKsyR,MAAMa,aAAqB,CAClE,MAAMvlP,EAAO,IAAI+lP,GAAY,CAC3B5F,WAAY/tR,KAAKsyR,MAAMp5C,OACvB88B,OAAQh2Q,KAAKsyR,MAAMa,aACnBjF,SAAUluR,KAAKsyR,MAAMpE,SAAS1hR,aAEhCohC,EAAKmrO,IAAe/4Q,KAAK+4Q,IACzB/4Q,KAAKm3Q,IAAcvpO,GACnB5tC,KAAKglS,YAAYzjS,KAAKqsC,EACxB,CACA,GAAkC,KAA9B5tC,KAAKsyR,MAAMiB,eAAuB,CACpC,MAAM3lP,EAAO,IAAI40P,GAAS,CACxBxsB,OAAQh2Q,KAAKsyR,MAAMiB,eACnBpB,OAAQnyR,KAAKsyR,MAAMgB,eACnB5iB,QAAS1wQ,KAAKsyR,MAAMkB,kBAEtB5lP,EAAKmrO,IAAe/4Q,KAAK+4Q,IACzB/4Q,KAAKm3Q,IAAcvpO,GACnB5tC,KAAK0vR,SAASnuR,KAAKqsC,EACrB,CACA5tC,KAAKu6Q,IAAcv6Q,KAAKsyR,OACxBtyR,KAAKsyR,MAAQ,IACf,CACA,GAAsB,WAAlBtyR,KAAKynR,UAA2C,aAAlBznR,KAAKynR,SACrC,OAAO9J,GAAWE,MAKpB,IAHI79Q,KAAKglS,YAAYv3P,SAASltC,OAAS,GAAKP,KAAK+kS,WAAWt3P,SAASltC,OAAS,IAC5EiH,EAAK,2EAEHxH,KAAKglS,YAAYv3P,SAASltC,QAAU,EAAG,CACzC,MAAMykS,EAAchlS,KAAKglS,YAAYv3P,SAAS,GAC9C,GAAIqgP,GAAYkX,GACd,OAAOrnB,GAAWK,UAAUgnB,EAEhC,CACA,GAAIhlS,KAAK63Q,KAASgvB,gBAChB,OAAOlpB,GAAWE,MAEpBwL,GAAcrpR,MACd,MAAMytC,EAAW,GACXo3N,EAAa,CACjBhpO,GAAI77B,KAAKo7Q,IACTuO,MAAO,IAETY,GAAUvqR,KAAM6kQ,EAAW8kB,OACtB3pR,KAAK63Q,MACR73Q,KAAK63Q,IAAUn0Q,OAAOwP,OAAO,OAE/BxP,OAAO+5C,OAAOz9C,KAAK63Q,IAAS,CAC1BpqO,WACAD,KAAM,KACNq3N,aACA2mB,QAAS,EACTC,aAAc,EACd1G,eAAgB,CACdllQ,MAAOzV,KAAKC,IAAIrK,KAAK+zL,GAAK07D,IAAUs1B,EAAellQ,OACnDC,OAAQ1V,KAAKC,IAAIrK,KAAKuzC,GAAKk8M,IAAUs1B,EAAejlQ,SAEtDD,MAAO,EACPC,OAAQ,EACR89N,WAAY,EACZz0M,aAAc,IAEhB,MAAMg6N,EAAOnjQ,KAAK84Q,MACZguB,EAAuB3jC,EAAK0U,IAAQmU,gBACpC0O,EAAe16R,KAAKy5Q,MAI1B,GAHKihB,GACH9M,GAAqB5tR,OAElB2rR,GAAgB3rR,KAAM+kR,GACzB,OAAOpH,GAAWC,QAEpB,MAAMpqP,EAAS,IAAIld,IAAI,CAAC,OAAQ,OAAQ,YAAa,QAAS,UAAW,eACzE,GAAItW,KAAKw7D,OAAO1vD,SAAS,OAAQ,CAC/B,MAAMw7Q,EAAetnR,KAAK44Q,MAAqB0O,aAC3ClmR,MAAMsT,QAAQ4yQ,IAAiBA,EAAa/mR,OAAS,IACvDP,KAAK63Q,IAAQyP,aAAeA,EAC5BtnR,KAAK63Q,IAAQ0P,cAAgB,EAEjC,CACA,MAAM/tC,EAAQ+vC,GAAQvpR,KAAM,aAAc,aAAc,WAAY,WAAY,SAAU,SAAU,UAC9FiqR,EAAa,CAAC,cACd5/C,EAAKi/C,GAAYtpR,MASvB,GARIqqO,GACF4/C,EAAW1oR,KAAK8oO,GAElBw6B,EAAWrrB,MAAQA,EACnBqrB,EAAW8kB,MAAQM,EACfjqR,KAAK0C,OACPmiQ,EAAW6rB,QAAU1wR,KAAK0C,MAExB1C,KAAK0vR,SAAU,CACjB,MAAMqX,EAAgB/mS,KAAK0vR,SAASnX,MAChCwuB,EAActE,YAChBsE,EAActE,WAAY,EAC1B/T,GAAe1uR,KAAM+mS,EAAc5U,OAAQpN,GAE/C,CACA/kR,KAAKs6Q,MACL,MAAMqgB,EAAyB,UAAhB36R,KAAKw7D,QAAsC,UAAhBx7D,KAAKw7D,OACzCo/N,EAASD,EArqHkB,EAqqHsB,EACvD,KAAO36R,KAAK63Q,IAAQ2T,QAAUoP,EAAQ56R,KAAK63Q,IAAQ2T,UAAW,CACxDmP,GAAmCE,IAAzB76R,KAAK63Q,IAAQ2T,UACzBxrR,KAAK63Q,IAAQ4T,aAAe,GAE9B,MAAMz9P,EAAShuB,KAAKo3Q,IAAiB,CACnC5jP,SACAoiP,SAAS,IAEX,GAAI5nP,EAAO8vP,QACT,MAEF,GAAI9vP,EAAOiwP,UAET,OADAj+Q,KAAKq6Q,MACErsP,EAET,GAAI2sQ,GAAmC,IAAzB36R,KAAK63Q,IAAQ2T,SAA+C,IAA9BxrR,KAAK63Q,IAAQ4T,eAAuBtoB,EAAK0U,IAAQmU,gBAAiB,CAC5GhsR,KAAK63Q,IAAQ2T,QAAUoP,EACvB,KACF,CACF,CAMA,GALA56R,KAAKq6Q,MACAqgB,GACH7M,GAAuB7tR,MAEzBmjQ,EAAK0U,IAAQmU,gBAAkB8a,EAC3B9mS,KAAK63Q,IAAQ2T,UAAYoP,EAO3B,OANI56R,KAAK0vR,WACP1vR,KAAK84Q,MAAoBjB,IAAQmvB,aAAehnS,KAAK0vR,UAElDgL,UACI16R,KAAK63Q,IAEP8F,GAAWC,QAEpB,GAAI59Q,KAAK0vR,SAAU,CACjB,MAAMqX,EAAgB/mS,KAAK0vR,SAASnX,MAChCwuB,EAAcrE,aAChBqE,EAAcrE,YAAa,EAC3BhU,GAAe1uR,KAAM+mS,EAAcr2B,QAASqU,GAEhD,CACA,IAAIyD,EAAU,EACVC,EAAU,EACVzoR,KAAKu/Q,SACPiJ,EAAUxoR,KAAKu/Q,OAAOmJ,UAAY1oR,KAAKu/Q,OAAOoJ,WAC9CF,EAAUzoR,KAAKu/Q,OAAOqJ,SAAW5oR,KAAKu/Q,OAAOsJ,aAE/C,MAAMhpQ,EAAQzV,KAAK2D,IAAI/N,KAAK63Q,IAAQh4P,MAAQ2oQ,EAASxoR,KAAK+zL,GAAK,GACzDj0K,EAAS1V,KAAK2D,IAAI/N,KAAK63Q,IAAQ/3P,OAAS2oQ,EAASzoR,KAAKuzC,GAAK,GAC3Dm8K,EAAO,CAAC1vN,KAAK+P,EAAG/P,KAAKgQ,EAAG6P,EAAOC,GAOrC,GANe,KAAX9f,KAAK+zL,IACPylD,EAAM35N,MAAQonQ,GAAgBpnQ,IAEjB,KAAX7f,KAAKuzC,IACPimM,EAAM15N,OAASmnQ,GAAgBnnQ,KAEZ,QAAhB05N,EAAM35N,OAAoC,QAAjB25N,EAAM15N,SAAyC,IAApB2tB,EAASltC,OAChE,OAAOo9Q,GAAWE,MAEpB,MAAME,EAAO,CACXr7Q,KAAM,MACNmiQ,aACAp3N,YAEF0/O,GAAYntR,KAAM6kQ,GAClB,MAAM72O,EAAS2vP,GAAWG,QAAQ2L,GAAczpR,KAAM+9Q,GAAOruD,GAC7D,GAAI1vN,KAAK+kS,WAAWt3P,SAASltC,QAAU,EAAG,CACxC,MAAMwkS,EAAa/kS,KAAK+kS,WAAWt3P,SAAS,GAC5C,GAAIqgP,GAAYiX,GAEd,OADA/kS,KAAK63Q,IAAQgvB,gBAAkB74Q,EACxB2vP,GAAWK,UAAU+mB,EAEhC,CAEA,cADO/kS,KAAK63Q,IACL7pP,CACT,EAEF,MAAM8+P,WAAmB1I,GACvB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,cAAc,GACpClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKmjS,SAAWnmB,GAAgBnY,EAAWs+B,SAAU,CAAC,UAAW,SAAU,cAC3EnjS,KAAKyqR,SAAWjN,GAAY3Y,EAAW4lB,UACvCzqR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK8kS,QAAU,KACf9kS,KAAKsyR,MAAQ,KACbtyR,KAAKskQ,KAAO,KACZtkQ,KAAKowR,OAAS,KACdpwR,KAAKijS,MAAQ,KACbjjS,KAAK0vR,SAAW,KAChB1vR,KAAK+kS,WAAa,IAAIvgB,GACtBxkR,KAAKglS,YAAc,IAAIxgB,GACvBxkR,KAAKwwR,QAAU,IAAIhM,GACnBxkR,KAAKywR,WAAa,IAAIjM,EACxB,CACA,EAAE9L,YACOmU,GAAqB7sR,KAC9B,CACA,CAAC44Q,MACC,IAAIxiQ,EAASpW,KAAK64Q,MAClB,OAASziQ,aAAkBowR,KACzBpwR,EAASA,EAAOyiQ,MAElB,OAAOziQ,CACT,CACA,CAACijQ,MACC,OAAO,CACT,EAEF,MAAM4tB,WAAkBvgB,GACtB,WAAAz9Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,aACtBlsR,KAAKknS,UAAYriC,EAAWqiC,WAAa,IACzClnS,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAACzN,MACC93Q,KAAK03Q,IAAY,IAAI/jQ,IAAI3T,KAAK03Q,IAAU17P,MAAMhc,KAAKknS,WAAWjrR,KAAIkrR,KAChEA,EAAKA,EAAGnrR,MAAM,IAAK,IAChB,GAAKmrR,EAAG,GAAG3+B,OACP2+B,KAEX,EAEF,MAAMC,WAAmBhjB,GACvB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,cAAc,GACpClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKqlS,UAAY,IAAI7gB,EACvB,EAEF,MAAM6iB,WAAejjB,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,UAAU,GAChClsR,KAAKsnS,SAAW3qB,GAAW,CACzB5iQ,KAAM8qP,EAAWyiC,SACjB1qB,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAK45D,OAASojN,GAAgBnY,EAAWjrM,OAAQ,CAAC,MAAO,WAAY,MAAO,aAAc,MAAO,QACjG55D,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKg2Q,OAASnR,EAAWmR,QAAU,GACnCh2Q,KAAKunS,aAAexqB,GAAW,CAC7BhjQ,KAAM8qP,EAAW0iC,aAAe1iC,EAAW0iC,aAAa3sR,cAAgB,GACxEgiQ,aAAc,GACdC,SAAUrwP,GAAK,CAAC,QAAS,WAAY,eAAgB,MAAO,WAAY,UAAW,WAAY,OAAQ,YAAa,QAAS,UAAU1gB,SAAS0gB,IAAMA,EAAErkB,MAAM,oBAEhKnI,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKwnS,WAAa3iC,EAAW2iC,YAAc,GAC3CxnS,KAAK+uQ,QAAU,KACf/uQ,KAAK05R,YAAc,IAAIlV,GACvBxkR,KAAK25R,SAAW,IAAInV,EACtB,EAEF,MAAM4d,WAAiBhe,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,YAAY,GAClClsR,KAAKynS,YAAczqB,GAAgBnY,EAAW4iC,YAAa,CAAC,OAAQ,qBACpEznS,KAAKowR,OAAS,KACdpwR,KAAKwwR,QAAU,IAAIhM,EACrB,CACA,CAAC1M,MACsC,IAAjC93Q,KAAKwwR,QAAQ/iP,SAASltC,QACxBiH,EAAK,uCAEHxH,KAAKwwR,QAAQ/iP,SAASltC,QAAU,GAClCiH,EAAK,+DAEPxH,KAAK86Q,IAp1HiB,GAq1HxB,CACA,CAACrB,MACC,OAAO,CACT,CACA,CAACiB,IAAa3iC,EAAMwqC,GAClB,OAAIxqC,EAAK9vO,WAAW,KACX,CAACjI,KAAKi5Q,IAAMp1Q,IAAIk0O,EAAKnqO,MAAM,KAE7B+4P,GAAW3mQ,KAAMuiR,EAAWxqC,GAAM,GAAM,EACjD,CACA,EAAEijC,MACA,IAAKh7Q,KAAKwwR,QAAQ/iP,SAASltC,OACzB,OAAOo9Q,GAAWG,QAAQ,CACxBp7Q,KAAM,MACN+qC,SAAU,KAGdztC,KAAK63Q,IAAU,CACbmvB,aAAc,KACdpb,kBAAmB,KACnBK,mBAAoB,KACpB+B,gBAAiB,KACjBhC,iBAAiB,EACjBuX,WAAY,EACZR,aAAc,QACdD,UAAW,MACXH,gBAAiB,WACjBje,UAAW,IAEb,MAAMvhB,EAAOnjQ,KAAKwwR,QAAQ/iP,SAAS,GACnC01N,EAAKkgC,QAAQ/rB,MACb,MAAMowB,EAAYvkC,EAAKkgC,QAAQjV,SAAS3gP,SAClCk6P,EAAW,CACfjlS,KAAM,MACN+qC,SAAU,IAEZ,IAAI2gP,EAAW,KACX4W,EAAc,KACd4C,EAAoB,KAcxB,GAbIzkC,EAAK6hC,YAAYv3P,SAASltC,QAAU,GACtCykS,EAAc7hC,EAAK6hC,YAAYv3P,SAAS,GACxCm6P,EAAoB5C,EAAYhvB,QACvB7S,EAAKqtB,QAAQ/iP,SAASltC,QAAU,GAAK4iQ,EAAKqtB,QAAQ/iP,SAAS,GAAGu3P,YAAYv3P,SAASltC,QAAU,GACtGykS,EAAc7hC,EAAKqtB,QAAQ/iP,SAAS,GAAGu3P,YAAYv3P,SAAS,GAC5Dm6P,EAAoB5C,EAAYhvB,QACvB7S,EAAKmvB,OAAOa,cACrB6R,EAAc7hC,EAAKmvB,MACnBsV,EAAoB5C,EAAY7R,cACvBhwB,EAAKqtB,QAAQ/iP,SAASltC,QAAU,GAAK4iQ,EAAKqtB,QAAQ/iP,SAAS,GAAG6kP,OAAOa,eAC9E6R,EAAc7hC,EAAKqtB,QAAQ/iP,SAAS,GAAG6kP,MACvCsV,EAAoB5C,EAAY7R,cAE9B6R,EAAa,CACf,MAAMhvB,EAASh2Q,KAAK06Q,IAAaktB,EAAmB5C,EAAYnsB,OAC5D7C,aAAkBiY,KACpBG,EAAWpY,EACXgvB,EAAYntB,IAAU,CAAC,EAE3B,CACKuW,IACHA,EAAWsZ,EAAU,IAEvBtZ,EAASvW,IAAU,CACjBqrB,YAAa,GAEf,MAAM2E,EAAiBzZ,EAASvV,MAMhC,IAAIivB,EALJD,EAAehwB,IAAU,CACvBqrB,YAAa,EACb9jR,UAAWyoR,EAAezZ,SAAS3gP,SAAS6iB,QAAQ89N,GACpDkV,aAAc,GAGhB,IAAInR,EAAS,KACTzhB,EAAU,KACVq3B,GAAe,EACfC,EAAsB,EACtBt6E,EAAa,EACjB,OAAa,CACX,GAAKq6E,EAOHC,EAAsB,OALtB,GADAL,EAASl6P,SAAS6D,MAr6HF,KAs6HV02P,EAEJ,OADAxgS,EAAK,kDACEmgS,EAKXG,EAAiB,KACjB9nS,KAAK63Q,IAAQmW,gBAAkBI,EAC/B,MAAMljB,EAAOkjB,EAASnT,MAAW8C,KACjC4pB,EAASl6P,SAASlsC,KAAK2pQ,GACnBinB,IACFnyR,KAAK63Q,IAAQmU,iBAAkB,EAC/B9gB,EAAKz9N,SAASlsC,KAAK4wR,EAAOlX,IAASmT,EAASvW,IAAQjgG,OAAOmmG,MAC3DoU,EAAS,MAEPzhB,IACF1wQ,KAAK63Q,IAAQmU,iBAAkB,EAC/B9gB,EAAKz9N,SAASlsC,KAAKmvQ,EAAQuK,IAASmT,EAASvW,IAAQjgG,OAAOmmG,MAC5DrN,EAAU,MAEZ,MAAM4d,EAAeF,EAASG,YAAY9gP,SACpCw6P,EAAmB/8B,EAAKz9N,SAASja,QAAOoa,GAAQA,EAAKi3N,WAAW8kB,MAAM79Q,SAAS,oBACrFi8R,GAAe,EACf/nS,KAAK63Q,IAAQ+T,kBAAoB,KACjC5rR,KAAK63Q,IAAQmU,iBAAkB,EAC/B,MAAMppC,EAAQh0M,IACZ,MAAMmvO,EAAO5a,EAAK4U,MACdgG,IACFgqB,IAAiBhqB,EAAKtwO,UAAUltC,OAAS,EACzC0nS,EAAiBr5P,GAAOnB,SAASlsC,KAAKw8Q,GACxC,EAEF,IAAK,IAAIz8Q,EAAIosN,EAAY18M,EAAKs9Q,EAAa/tR,OAAQe,EAAI0P,EAAI1P,IAAK,CAC9D,MAAMitR,EAAcvuR,KAAK63Q,IAAQoU,mBAAqBqC,EAAahtR,GAC7Ds2K,EAAQ,CACZ/3J,MAAO0uQ,EAAYx6F,EACnBj0K,OAAQyuQ,EAAYh7O,GAEtBm6K,EAAa,EACTykE,IACF8V,EAAiB3mS,GAAGmsC,SAASlsC,KAAK4wR,EAAOlX,IAASrjG,GAAOmmG,MACzDoU,EAAS,MAEPzhB,IACFu3B,EAAiB3mS,GAAGmsC,SAASlsC,KAAKmvQ,EAAQuK,IAASrjG,GAAOmmG,MAC1DrN,EAAU,MAEZ,MAAMqN,EAAO5a,EAAK8X,IAASrjG,GAC3B,GAAImmG,EAAKD,QAOP,OANIC,EAAKA,MACPgqB,IAAiBhqB,EAAKA,KAAKtwO,UAAUltC,OAAS,EAC9C0nS,EAAiB3mS,GAAGmsC,SAASlsC,KAAKw8Q,EAAKA,QAC7BgqB,GAAgBJ,EAASl6P,SAASltC,OAAS,GACrDonS,EAASl6P,SAAS6D,MAEbq2P,EAET,GAAI5pB,EAAKE,UAAT,CACE,MAAMrwO,EAAOmwO,EAAKC,UAElB,GADAp7B,EAAMthP,GACkB,SAApBssC,EAAKmgP,WACP,SAEEngP,EAAKukP,SACPA,EAASnyR,KAAK06Q,IAAa9sO,EAAKukP,OAAQvkP,EAAKirO,OAC7CsZ,EAASA,EAASA,EAAO,GAAK,MAE5BvkP,EAAK8iO,UACPA,EAAU1wQ,KAAK06Q,IAAa9sO,EAAK8iO,QAAS9iO,EAAKirO,OAC/CnI,EAAUA,EAAUA,EAAQ,GAAK,MAEX,aAApB9iO,EAAKmgP,YACP+Z,EAAiBl6P,EAAKiqO,IAAQ7B,OAC9B10Q,EAAImuP,KACM7hN,EAAKiqO,IAAQ7B,QAGvB8xB,EAAiBl6P,EAAKiqO,IAAQ7B,OAC9BtoD,EAAa9/K,EAAKiqO,IAAQjpO,MAAQ,EAClCttC,EAAImuP,KAJJnuP,EAAIssC,EAAKiqO,IAAQjpO,KAOrB,MACA,GAAI5uC,KAAK63Q,IAAQmvB,aAAjB,CACE,MAAMp5P,EAAO5tC,KAAK63Q,IAAQmvB,aAC1BhnS,KAAK63Q,IAAQmvB,aAAe,KAC5B,MAAMD,EAAgBn5P,EAAK2qO,MACrBvC,EAAS+wB,EAAc/wB,OAC7B+wB,EAActE,UAAqC,OAAzBsE,EAAc5U,OACxC4U,EAAcrE,WAAuC,OAA1BqE,EAAcr2B,QACzC9tB,EAAMthP,GACN,MAAMutC,EAAevtC,EAErB,GADAA,EAAImuP,IACAumB,aAAkBiY,GACpB6Z,EAAiB9xB,OACZ,GAAIA,aAAkBmY,GAAa,CACxC,MAAMv/O,EAAQ0/O,EAAah+N,QAAQ0lN,IACpB,IAAXpnO,EACEA,EAAQC,EACVvtC,EAAIstC,EAAQ,EAEZ8+K,EAAa9+K,GAGfk5P,EAAiB9xB,EAAO6C,MACxBnrD,EAAao6E,EAAevZ,YAAY9gP,SAAS6iB,QAAQ0lN,GAE7D,CAEF,MACApzB,EAAMthP,EACR,CACAtB,KAAK63Q,IAAQ0rB,YAAc,EACvBuE,IACEA,EAAeluB,MACjBkuB,EAAejwB,IAAQqrB,aAAe,EAEtC4E,EAAiB,MAGrB1Z,EAAW0Z,GAAkB1Z,EAASzV,YAChC,IACR,CACF,EAEF,MAAMuvB,WAAaxhB,GACjB,WAAAz9Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKo8R,SAAWzf,GAAW,CACzB5iQ,KAAM8qP,EAAWu3B,SACjBxf,aAAc,EACdC,SAAU9sQ,GAAKA,GAAK,IAEtB/P,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAK+5R,IAAMl1B,EAAWk1B,KAAO,GAC7B/5R,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAACtO,MACC,OAAO,CACT,CACA,CAACgD,IAAUxT,GACT,OAAIA,EAAMqT,MAAkBwB,GAAaY,MAAMrgP,IAC7C77B,KAAK03Q,IAAYjR,GACV,IAETj/P,EAAK,kCAAkCi/P,EAAMsT,SACtC,EACT,CACA,CAACI,IAASzvQ,GACJ1K,KAAK03Q,cAAqB0M,IAG9Bh7Q,MAAM+wQ,IAASzvQ,EACjB,CACA,CAACotQ,MAC+B,iBAAnB93Q,KAAK03Q,MACd13Q,KAAK03Q,IAAY13Q,KAAK03Q,IAAU5mQ,WAAW,OAAQ,MAEvD,CACA,CAACynQ,MACC,MAA8B,iBAAnBv4Q,KAAK03Q,IACP13Q,KAAK03Q,IAAU17P,MAAM,oBAAoB8qM,QAAO,CAACqhF,EAAK36P,KACvDA,GACF26P,EAAI5mS,KAAKisC,GAEJ26P,IACN,IAAI39R,KAAK,MAEPxK,KAAK03Q,IAAUqD,KACxB,CACA,CAACE,IAAS8J,GACR,GAA8B,iBAAnB/kR,KAAK03Q,IAAwB,CACtC,MAAMqG,EAAO4P,GAAY3tR,KAAK03Q,KAAWqG,KA8BzC,OA7BI/9Q,KAAK03Q,IAAU5rQ,SAAS,WAC1BiyQ,EAAKr7Q,KAAO,MACZq7Q,EAAKtwO,SAAW,GAChBztC,KAAK03Q,IAAU17P,MAAM,UAAUC,KAAIwoQ,GAAQA,EAAKzoQ,MAAM,cAAc8qM,QAAO,CAACqhF,EAAK36P,KAC/E26P,EAAI5mS,KAAK,CACPmB,KAAM,OACNiG,MAAO6kC,GACN,CACD9qC,KAAM,OAEDylS,IACN,MAAKlkP,SAAQnX,IACdixO,EAAKtwO,SAASlsC,KAAK,CACjBmB,KAAM,IACN+qC,SAAUX,GACV,KAEK,aAAahvB,KAAK9d,KAAK03Q,OAChCqG,EAAKr7Q,KAAO,MACZq7Q,EAAKtwO,SAAW,GAChBztC,KAAK03Q,IAAU17P,MAAM,cAAcioC,SAAQzW,IACzCuwO,EAAKtwO,SAASlsC,KAAK,CACjBmB,KAAM,OACNiG,MAAO6kC,GACN,CACD9qC,KAAM,MACN,KAGCi7Q,GAAWG,QAAQC,EAC5B,CACA,OAAO/9Q,KAAK03Q,IAAUuD,IAAS8J,EACjC,EAEF,MAAMsW,WAAiBjX,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,YAAY,GAClClsR,KAAKooS,cAAgBzrB,GAAW,CAC9B5iQ,KAAM8qP,EAAWujC,cACjBxrB,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKm3R,cAAgBna,GAAgBnY,EAAWsyB,cAAe,CAAC,OAAQ,MAAO,OAC/En3R,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKqoS,UAAY1rB,GAAW,CAC1B5iQ,KAAM8qP,EAAWwjC,UACjBzrB,aAAc,GACdC,SAAU9sQ,GAAW,IAANA,GAAiB,IAANA,IAE5B/P,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKsoS,cAAgBtrB,GAAgBnY,EAAWyjC,cAAe,CAAC,OAAQ,MAAO,OAC/EtoS,KAAK4pR,OAAS,KACd5pR,KAAKq3R,KAAO,KACZr3R,KAAKowR,OAAS,KACdpwR,KAAKu/Q,OAAS,IAChB,CACA,CAACtE,IAAS8J,GACR,MAAMvrC,EAAQ+vC,GAAQvpR,KAAM,SAAU,OAAQ,UAC9C,IAAI+9Q,EACJ,MAAMluD,EAAQ7vN,KAAK64Q,MAAcA,MAkCjC,MAjCuB,KAAnB74Q,KAAKqoS,YACProS,KAAKqoS,UAAYx4E,aAAiBuoE,GAAO,EAAI,GAG7Cra,EADqB,IAAnB/9Q,KAAKqoS,UACA,CACL3lS,KAAM,WACNmiQ,WAAY,CACV0wB,OAAQ1lE,EAAM8nD,MAASyD,KAASvrD,EAAMurD,IACtCka,QAASzlE,EAAMurD,IACfuO,MAAO,CAAC,gBACRnwC,QACA,aAAcg0C,GAAU39D,GACxB,iBAAiB,IAId,CACLntN,KAAM,QACNmiQ,WAAY,CACVtgQ,KAAM,OACNgxR,OAAQ1lE,EAAM8nD,MAASyD,KAASvrD,EAAMurD,IACtCka,QAASzlE,EAAMurD,IACfuO,MAAO,CAAC,gBACRnwC,QACA,aAAcg0C,GAAU39D,GACxB,iBAAiB,IAInBk9D,GAAWl9D,KACbkuD,EAAKlZ,WAAW,kBAAmB,EACnCkZ,EAAKlZ,WAAW8wB,UAAW,GAEtBhY,GAAWG,QAAQ,CACxBp7Q,KAAM,QACNmiQ,WAAY,CACV8kB,MAAO,CAAC,aAEVl8O,SAAU,CAACswO,IAEf,EAEF,MAAMwqB,WAAa3hB,GACjB,WAAA39Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,QACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,CACA,CAACzN,MACC,MAAMlmQ,EAAO5R,KAAK03Q,IAAUlP,OAC5BxoQ,KAAK03Q,IAAY9lQ,EAAO,IAAIC,KAAKD,GAAQ,IAC3C,CACA,CAACqpQ,IAAS8J,GACR,OAAO4I,GAAY3tR,KAAK03Q,IAAY13Q,KAAK03Q,IAAUlrQ,WAAa,GAClE,EAEF,MAAMg8R,WAAkBpkB,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,aACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKyoS,OAAS5jC,EAAW4jC,QAAU,GACnCzoS,KAAKuE,KAAOy4Q,GAAgBnY,EAAWtgQ,KAAM,CAAC,WAAY,aAC1DvE,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMmjB,WAAgB9hB,GACpB,WAAA39Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,WACtBlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK+5R,IAAMl1B,EAAWk1B,KAAO,GAC7B/5R,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMojB,WAAkBvkB,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,aAAa,GACnClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,KACdpwR,KAAKslS,SAAW,IAAI9gB,EACtB,EAEF,MAAMokB,WAAiBxkB,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,YAAY,GAClClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKo3O,UAAY4lC,GAAgBnY,EAAWztB,UAAW,CAAC,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAC1Gp3O,KAAKgW,IAAM6uP,EAAW7uP,KAAO,GAC7BhW,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,KACdpwR,KAAK0zR,OAAS,IAChB,CACA,QAAIhxR,GACF,OAAO1C,KAAKo3O,SACd,CACA,CAACuiC,MACC,OAAO,CACT,EAEF,MAAMyhB,WAAWhX,GACf,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,MAAM,GAC5BlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,KACdpwR,KAAK6xR,QAAU,KACf7xR,KAAK6kS,QAAU,KACf7kS,KAAKi8R,OAAS,KACdj8R,KAAKu7R,YAAc,KACnBv7R,KAAKw7R,WAAa,KAClBx7R,KAAKilS,aAAe,KACpBjlS,KAAKklS,UAAY,KACjBllS,KAAKk8R,UAAY,KACjBl8R,KAAKq8R,YAAc,KACnBr8R,KAAKmlS,aAAe,KACpBnlS,KAAKytN,UAAY,KACjBztN,KAAKs7R,SAAW,IAClB,CACA,CAAC/iB,MACC,QAAqBn1Q,IAAjBpD,KAAK63Q,IAAuB,CAC9B,IAAK,MAAMn1Q,KAAQgB,OAAOmhR,oBAAoB7kR,MAAO,CACnD,GAAa,WAAT0C,GAA8B,YAATA,EACvB,SAEF,MAAMoB,EAAM9D,KAAK0C,GACjB,GAAMoB,aAAesgR,GAIrB,OADApkR,KAAK63Q,IAAU/zQ,EACRA,CACT,CACA9D,KAAK63Q,IAAU,IACjB,CACA,OAAO73Q,KAAK63Q,GACd,CACA,CAACoD,IAAS8J,GACR,MAAMjhR,EAAM9D,KAAKu4Q,MACjB,OAAIz0Q,EACKA,EAAIm3Q,IAAS8J,GAEfpH,GAAWE,KACpB,EAEF,MAAMgrB,WAAiBzkB,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,YAAY,GAClClsR,KAAK8oS,WAAa9rB,GAAgBnY,EAAWikC,WAAY,CAAC,UAAW,WAAY,UACjF9oS,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKgtR,SAAWhQ,GAAgBnY,EAAWmoB,SAAU,CAAC,WAAY,QAAS,YAC3EhtR,KAAK+oS,WAAa/rB,GAAgBnY,EAAWkkC,WAAY,CAAC,QAAS,WAAY,YAC/E/oS,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKowR,OAAS,KACdpwR,KAAKgJ,QAAU,KACfhJ,KAAK6xR,QAAU,KACf7xR,KAAK0zR,OAAS,IAChB,EAEF,MAAM9G,WAAcxI,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,SAAS,GAC/BlsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK8zN,SAAW6oD,GAAW,CACzB5iQ,KAAM8qP,EAAW/wC,SACjB8oD,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKyqR,SAAWjN,GAAY3Y,EAAW4lB,UACvCzqR,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAKyjG,IAAM,KACXzjG,KAAK23R,QAAU,KACf33R,KAAK4R,KAAO,KACZ5R,KAAK43R,SAAW,KAChB53R,KAAK63R,QAAU,KACf73R,KAAKkpR,OAAS,KACdlpR,KAAK83R,MAAQ,KACb93R,KAAKq8C,MAAQ,KACbr8C,KAAK+3R,QAAU,KACf/3R,KAAKwtC,KAAO,KACZxtC,KAAKolS,UAAY,KACjBplS,KAAKq3P,KAAO,KACZr3P,KAAKg4R,KAAO,IACd,CACA,CAACnd,IAAWlyQ,GACV,MAAMyN,EAASpW,KAAK64Q,MACpB,GAAIziQ,aAAkB8kR,IAChB9kR,EAAOoiR,IAAI0D,UAMb,OALKl8R,KAAKq8C,QACRr8C,KAAKq8C,MAAQ,IAAIijP,GAAM,CAAC,GACxBt/R,KAAKm3Q,IAAcn3Q,KAAKq8C,aAE1Br8C,KAAKq8C,MAAMq7N,IAAY/uQ,EAAM+uQ,KAIjC,MAAMsxB,EAAYrgS,EAAMoxQ,IACxB,GAAwB,OAApB/5Q,KAAKgpS,GAAT,CAIA,IAAK,MAAMtmS,KAAQgB,OAAOmhR,oBAAoB7kR,MAAO,CACnD,MAAM8D,EAAM9D,KAAK0C,GACboB,aAAesgR,KACjBpkR,KAAK0C,GAAQ,KACb1C,KAAKu6Q,IAAcz2Q,GAEvB,CACA9D,KAAK2I,EAAMoxQ,KAAcpxQ,EACzB3I,KAAKm3Q,IAAcxuQ,EATnB,MAFE3I,KAAKgpS,GAAWtxB,IAAY/uQ,EAAM+uQ,GAYtC,CACA,CAACqD,MACC,GAAI/6Q,KAAKkpR,OACP,MAAqC,iBAA1BlpR,KAAKkpR,OAAOxR,IACd13Q,KAAKkpR,OAAOxR,IAAUlP,OAExBxoQ,KAAKkpR,OAAOxR,IAAUqD,MAASvS,OAExC,IAAK,MAAM9lQ,KAAQgB,OAAOmhR,oBAAoB7kR,MAAO,CACnD,GAAa,UAAT0C,EACF,SAEF,MAAMoB,EAAM9D,KAAK0C,GACjB,GAAIoB,aAAesgR,GACjB,OAAQtgR,EAAI4zQ,KAAa,IAAIlrQ,WAAWg8P,MAE5C,CACA,OAAO,IACT,CACA,CAACyS,IAAS8J,GACR,IAAK,MAAMriR,KAAQgB,OAAOmhR,oBAAoB7kR,MAAO,CACnD,MAAM8D,EAAM9D,KAAK0C,GACjB,GAAMoB,aAAesgR,GAGrB,OAAOtgR,EAAIm3Q,IAAS8J,EACtB,CACA,OAAOpH,GAAWE,KACpB,EAEF,MAAMorB,WAAkB7kB,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAM8iR,GAAgB,aAAa,GACnClsR,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,GACrCvlR,KAAK23R,QAAU,IAAInT,GACnBxkR,KAAK4R,KAAO,IAAI4yQ,GAChBxkR,KAAK43R,SAAW,IAAIpT,GACpBxkR,KAAK63R,QAAU,IAAIrT,GACnBxkR,KAAKkpR,OAAS,IAAI1E,GAClBxkR,KAAK83R,MAAQ,IAAItT,GACjBxkR,KAAKq8C,MAAQ,IAAImoO,GACjBxkR,KAAK+3R,QAAU,IAAIvT,GACnBxkR,KAAKm5R,SAAW,IAAI3U,GACpBxkR,KAAK0zR,OAAS,IAAIlP,GAClBxkR,KAAKq3P,KAAO,IAAImtB,GAChBxkR,KAAKg4R,KAAO,IAAIxT,EAClB,CACA,CAAC7K,MACC,OAAO,CACT,EAEF,MAAMuvB,GACJ,OAAQ7tB,IAAiB34Q,EAAMmiQ,GAC7B,GAAIqkC,GAAkBllS,eAAetB,GAAO,CAC1C,MAAMkrC,EAAOs7P,GAAkBxmS,GAAMmiQ,GAErC,OADAj3N,EAAKgtO,IAAmB/V,GACjBj3N,CACT,CAEF,CACA,uBAAOuvP,CAAiBgM,GACtB,OAAO,IAAIra,GAAiBqa,EAC9B,CACA,UAAO1lM,CAAI0lM,GACT,OAAO,IAAIpa,GAAIoa,EACjB,CACA,WAAOntD,CAAKmtD,GACV,OAAO,IAAIhZ,GAAKgZ,EAClB,CACA,aAAO/b,CAAO+b,GACZ,OAAO,IAAIxY,GAAOwY,EACpB,CACA,cAAOtE,CAAQsE,GACb,OAAO,IAAIvY,GAAQuY,EACrB,CACA,WAAOpmR,CAAKomR,GACV,OAAO,IAAIvX,GAAKuX,EAClB,CACA,gBAAOhO,CAAUgO,GACf,OAAO,IAAIrX,GAAUqX,EACvB,CACA,cAAOrE,CAAQqE,GACb,OAAO,IAAIjX,GAAQiX,EACrB,CACA,cAAOxR,CAAQwR,GACb,OAAO,IAAI/W,GAAe+W,EAC5B,CACA,aAAOvf,CAAOuf,GACZ,OAAO,IAAI9W,GAAO8W,EACpB,CACA,YAAO,CAAMA,GACX,OAAO,IAAIlW,GAAMkW,EACnB,CACA,iBAAOpE,CAAWoE,GAChB,OAAO,IAAI1V,GAAW0V,EACxB,CACA,kBAAOnE,CAAYmE,GACjB,OAAO,IAAIxV,GAAYwV,EACzB,CACA,aAAOlN,CAAOkN,GACZ,OAAO,IAAIvV,GAAOuV,EACpB,CACA,gBAAO5O,CAAU4O,GACf,OAAO,IAAIlV,GAAUkV,EACvB,CACA,cAAO7Q,CAAQ6Q,GACb,OAAO,IAAIjV,GAAQiV,EACrB,CACA,kBAAOlQ,CAAYkQ,GACjB,OAAO,IAAI7U,GAAY6U,EACzB,CACA,mBAAO/L,CAAa+L,GAClB,OAAO,IAAI5U,GAAa4U,EAC1B,CACA,kBAAO5N,CAAY4N,GACjB,OAAO,IAAInU,GAAYmU,EACzB,CACA,iBAAO3N,CAAW2N,GAChB,OAAO,IAAIvT,GAAWuT,EACxB,CACA,YAAOh7Q,CAAMg7Q,GACX,OAAO,IAAI3S,GAAM2S,EACnB,CACA,WAAO9R,CAAK8R,GACV,OAAO,IAAIxS,GAAKwS,EAClB,CACA,cAAO3O,CAAQ2O,GACb,OAAO,IAAItS,GAAQsS,EACrB,CACA,kBAAO5a,CAAY4a,GACjB,OAAO,IAAIhb,GAAYgb,EACzB,CACA,aAAO5W,CAAO4W,GACZ,OAAO,IAAIrS,GAAOqS,EACpB,CACA,WAAOv3R,CAAKu3R,GACV,OAAO,IAAInS,GAAYmS,EACzB,CACA,eAAOvR,CAASuR,GACd,OAAO,IAAIlS,GAASkS,EACtB,CACA,mBAAOlE,CAAakE,GAClB,OAAO,IAAIjS,GAAaiS,EAC1B,CACA,cAAOtR,CAAQsR,GACb,OAAO,IAAI7R,GAAQ6R,EACrB,CACA,gBAAOjE,CAAUiE,GACf,OAAO,IAAI1R,GAAU0R,EACvB,CACA,WAAO7kC,CAAK6kC,GACV,OAAO,IAAIzR,GAAKyR,EAClB,CACA,mBAAOhR,CAAagR,GAClB,OAAO,IAAIlR,GAAakR,EAC1B,CACA,oBAAO9L,CAAc8L,GACnB,OAAO,IAAIjR,GAAciR,EAC3B,CACA,WAAO9Y,CAAK8Y,GACV,OAAO,IAAI/Q,GAAK+Q,EAClB,CACA,WAAOha,CAAKga,GACV,OAAO,IAAI/Z,GAAK+Z,EAClB,CACA,eAAO34R,CAAS24R,GACd,OAAO,IAAIrQ,GAASqQ,EACtB,CACA,gBAAOjoF,CAAUioF,GACf,OAAO,IAAIpQ,GAAUoQ,EACvB,CACA,cAAOp6B,CAAQo6B,GACb,OAAO,IAAInQ,GAAQmQ,EACrB,CACA,kBAAOzP,CAAYyP,GACjB,OAAO,IAAIjQ,GAAYiQ,EACzB,CACA,iBAAOzU,CAAWyU,GAChB,OAAO,IAAI/P,GAAW+P,EACxB,CACA,uBAAO5P,CAAiB4P,GACtB,OAAO,IAAI9P,GAAiB8P,EAC9B,CACA,wBAAO7L,CAAkB6L,GACvB,OAAO,IAAI7P,GAAkB6P,EAC/B,CACA,YAAOpnB,CAAMonB,GACX,OAAO,IAAI3P,GAAM2P,EACnB,CACA,aAAOjgB,CAAOigB,GACZ,OAAO,IAAItP,GAAOsP,EACpB,CACA,eAAO7Y,CAAS6Y,GACd,OAAO,IAAIlP,GAASkP,EACtB,CACA,gBAAO5Y,CAAU4Y,GACf,OAAO,IAAI3T,GAAU2T,EACvB,CACA,cAAOl0D,CAAQk0D,GACb,OAAO,IAAIrO,GAAQqO,EACrB,CACA,aAAO/Y,CAAO+Y,GACZ,OAAO,IAAIlO,GAAOkO,EACpB,CACA,YAAOt5E,CAAMs5E,GACX,OAAO,IAAIjO,GAAMiO,EACnB,CACA,WAAO5hQ,CAAK4hQ,GACV,OAAO,IAAI3M,GAAK2M,EAClB,CACA,aAAO31Q,CAAO21Q,GACZ,OAAO,IAAIx9O,GAAOw9O,EACpB,CACA,YAAOrR,CAAMqR,GACX,OAAO,IAAIxL,GAAMwL,EACnB,CACA,WAAO7mF,CAAK6mF,GACV,OAAO,IAAIvL,GAAcuL,EAC3B,CACA,aAAOvvO,CAAOuvO,GACZ,OAAO,IAAItK,GAAOsK,EACpB,CACA,cAAOlgD,CAAQkgD,GACb,OAAO,IAAIrK,GAAQqK,EACrB,CACA,kBAAOnF,CAAYmF,GACjB,OAAO,IAAIpK,GAAYoK,EACzB,CACA,YAAO9sP,CAAM8sP,GACX,OAAO,IAAI7J,GAAM6J,EACnB,CACA,gBAAOjN,CAAUiN,GACf,OAAO,IAAIvJ,GAAUuJ,EACvB,CACA,cAAOpR,CAAQoR,GACb,OAAO,IAAItJ,GAAQsJ,EACrB,CACA,cAAOxU,CAAQwU,GACb,OAAO,IAAIrJ,GAAQqJ,EACrB,CACA,YAAOryR,CAAMqyR,GACX,OAAO,IAAIpJ,GAAMoJ,EACnB,CACA,WAAO5Q,CAAK4Q,GACV,OAAO,IAAInJ,GAAKmJ,EAClB,CACA,eAAOvU,CAASuU,GACd,OAAO,IAAIjJ,GAASiJ,EACtB,CACA,WAAO37P,CAAK27P,GACV,OAAO,IAAIvI,GAAKuI,EAClB,CACA,aAAO1M,CAAO0M,GACZ,OAAO,IAAIrI,GAAOqI,EACpB,CACA,mBAAO5L,CAAa4L,GAClB,OAAO,IAAInI,GAAamI,EAC1B,CACA,eAAOhQ,CAASgQ,GACd,OAAO,IAAIlI,GAASkI,EACtB,CACA,aAAO5pB,CAAO4pB,GACZ,OAAO,IAAIjI,GAAOiI,EACpB,CACA,UAAO3L,CAAI2L,GACT,OAAO,IAAIhI,GAAIgI,EACjB,CACA,aAAOnG,CAAOmG,GACZ,OAAO,IAAI9H,GAAO8H,EACpB,CACA,cAAOngS,CAAQmgS,GACb,OAAO,IAAIrH,GAAQqH,EACrB,CACA,kBAAO9M,CAAY8M,GACjB,OAAO,IAAIpH,GAAYoH,EACzB,CACA,YAAOlG,CAAMkG,GACX,OAAO,IAAInH,GAAMmH,EACnB,CACA,UAAO5G,CAAI4G,GACT,OAAO,IAAI9G,GAAI8G,EACjB,CACA,WAAOtU,CAAKsU,GACV,OAAO,IAAI7G,GAAK6G,EAClB,CACA,eAAOzZ,CAASyZ,GACd,OAAO,IAAI3G,GAAS2G,EACtB,CACA,eAAO/a,CAAS+a,GACd,OAAO,IAAIlb,GAASkb,EACtB,CACA,cAAO9F,CAAQ8F,GACb,OAAO,IAAIhH,GAAQgH,EACrB,CACA,WAAO1kB,CAAK0kB,GACV,OAAO,IAAI1F,GAAK0F,EAClB,CACA,mBAAOhE,CAAagE,GAClB,OAAO,IAAI5E,GAAa4E,EAC1B,CACA,cAAOhpD,CAAQgpD,GACb,OAAO,IAAI1E,GAAiB0E,EAC9B,CACA,cAAOtX,CAAQsX,GACb,OAAO,IAAIxE,GAAQwE,EACrB,CACA,YAAOt0E,CAAMs0E,GACX,OAAO,IAAIvE,GAAMuE,EACnB,CACA,aAAOzM,CAAOyM,GACZ,OAAO,IAAI3D,GAAO2D,EACpB,CACA,aAAO/kR,CAAO+kR,GACZ,OAAO,IAAI1D,GAAO0D,EACpB,CACA,cAAO1L,CAAQ0L,GACb,OAAO,IAAIzD,GAAQyD,EACrB,CACA,gBAAO/D,CAAU+D,GACf,OAAO,IAAIlM,GAAUkM,EACvB,CACA,UAAOnzR,CAAImzR,GACT,OAAO,IAAIvD,GAAWuD,EACxB,CACA,aAAOzV,CAAOyV,GACZ,OAAO,IAAItD,GAAOsD,EACpB,CACA,kBAAO1Q,CAAY0Q,GACjB,OAAO,IAAIrD,GAAYqD,EACzB,CACA,eAAOxP,CAASwP,GACd,OAAO,IAAIpD,GAASoD,EACtB,CACA,gBAAO17E,CAAU07E,GACf,OAAO,IAAInD,GAAUmD,EACvB,CACA,cAAOrU,CAAQqU,GACb,OAAO,IAAIlD,GAAQkD,EACrB,CACA,YAAOxM,CAAMwM,GACX,OAAO,IAAIjD,GAAMiD,EACnB,CACA,YAAO1b,CAAM0b,GACX,OAAO,IAAIhD,GAAMgD,EACnB,CACA,cAAOvM,CAAQuM,GACb,OAAO,IAAI7C,GAAQ6C,EACrB,CACA,cAAO3Y,CAAQ2Y,GACb,OAAO,IAAI3C,GAAQ2C,EACrB,CACA,iBAAO1Y,CAAW0Y,GAChB,OAAO,IAAIrc,GAAWqc,EACxB,CACA,gBAAO9D,CAAU8D,GACf,OAAO,IAAIlC,GAAUkC,EACvB,CACA,iBAAOpU,CAAWoU,GAChB,OAAO,IAAI/B,GAAW+B,EACxB,CACA,aAAOvP,CAAOuP,GACZ,OAAO,IAAI9B,GAAO8B,EACpB,CACA,eAAOprQ,CAASorQ,GACd,OAAO,IAAI/G,GAAS+G,EACtB,CACA,WAAO9xC,CAAK8xC,GACV,OAAO,IAAIjB,GAAKiB,EAClB,CACA,eAAO7N,CAAS6N,GACd,OAAO,IAAI9N,GAAS8N,EACtB,CACA,WAAOnR,CAAKmR,GACV,OAAO,IAAIZ,GAAKY,EAClB,CACA,gBAAOzL,CAAUyL,GACf,OAAO,IAAIX,GAAUW,EACvB,CACA,cAAOzb,CAAQyb,GACb,OAAO,IAAIT,GAAQS,EACrB,CACA,gBAAOjc,CAAUic,GACf,OAAO,IAAIR,GAAUQ,EACvB,CACA,eAAO7D,CAAS6D,GACd,OAAO,IAAIP,GAASO,EACtB,CACA,SAAO3Q,CAAG2Q,GACR,OAAO,IAAI/N,GAAG+N,EAChB,CACA,eAAOtsB,CAASssB,GACd,OAAO,IAAIN,GAASM,EACtB,CACA,YAAOxgS,CAAMwgS,GACX,OAAO,IAAIvc,GAAMuc,EACnB,CACA,gBAAO5D,CAAU4D,GACf,OAAO,IAAIF,GAAUE,EACvB,EAUF,MAAMC,GAAmB9tB,GAAaG,SAAS5/O,GAC/C,SAASwtQ,GAAW1tE,GAClB,MAAM/tL,EAAO,IAAIs6P,GAAK,CAAC,GAEvB,OADAt6P,EAAK8pO,IAAY/7C,EACV/tL,CACT,CACA,MAAM07P,GACJ,WAAArgS,CAAYk6P,GACVnjQ,KAAKmjQ,KAAOA,EACZnjQ,KAAKy7Q,SAAWtY,EAAKsY,SACrBz7Q,KAAK+Z,KAAOopP,EAAKsY,UAAU1hQ,MAAQ,IAAIwqQ,GAAUjJ,GAAaG,SAAS5/O,GAAI,QAC3E77B,KAAKupS,WAAkD,IAArCvpS,KAAK+Z,KAAK0+P,MAAgBl4Q,OAC5CP,KAAKmjQ,KAAKuY,KAAO17Q,KAAK07Q,KAAOvY,EAAKplO,SAASy5O,KAC7C,CACA,cAAAgyB,GACE,OAAQxpS,KAAKupS,YAAcvpS,KAAKypS,UAClC,CACA,gBAAAC,GACE,OAAQ1pS,KAAKwpS,gBACf,CACA,IAAAzmR,GAEE,OADA/iB,KAAK2pS,aAAa3pS,KAAK07Q,KAAM17Q,KAAK+Z,MAC3B/Z,KAAK07Q,IACd,CACA,OAAAxgO,GACE,OAAOl7C,KAAK+Z,IACd,CACA,UAAA6vR,CAAWC,EAAU9vR,EAAM83Q,GAEzB,GADAgY,EAASlyB,IAAS59P,EACd8vR,EAAS7wB,MACX,GAAIj/P,EAAKu/P,MAAiB,CACxB,MAAM3wQ,EAAQoR,EAAKu+P,MACnBuxB,EAAShvB,IAAWwuB,GAAW1gS,GACjC,MAAO,GAAIkhS,aAAoB3O,IAA2C,gBAAlC2O,EAASrR,IAAIgD,YAAY1F,KAAwB,CACvF,MAAMntR,EAAQoR,EAAK0+P,MAAgBx8P,KAAIwqP,GAASA,EAAMiR,IAAUlP,SAAQh+P,KAAK,MAC7Eq/R,EAAShvB,IAAWwuB,GAAW1gS,GACjC,MAAW3I,KAAKwpS,kBACdhiS,EAAK,2CAEGuS,EAAKu/P,OAAmBt5Q,KAAK0pS,mBACvC1pS,KAAK2pS,aAAaE,EAAU9vR,GAE5BvS,EAAK,qCAET,CACA,wBAAAsiS,CAAyBpnS,EAAMqnS,EAAS9jB,EAAU+jB,GAChD,IAAKtnS,EACH,OAAO,KAET,IAAIuiR,EAAW98Q,EACf,IAAK,IAAI7G,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAE1B,IADA2jR,EAAYgB,EAASzN,IAA0B91Q,GAAM,GAAO,GAE1DyF,EAAQ88Q,EAAUlwP,OAAOpsB,MACpBR,GAGL,GAAI4hS,IAAY5hS,EAAMmxQ,MACpB,OAAOnxQ,EAGX,GAAI89Q,EAASnM,MAAkBwB,GAAaG,SAAS5/O,IAA8B,SAAxBoqP,EAASlM,IAClE,MAEFkM,EAAWA,EAASpN,KACtB,CACA,OAAKmxB,GAGL/kB,EAAYjlR,KAAK+Z,KAAKy+P,IAA0B91Q,GAAM,GAAM,GAC5DyF,EAAQ88Q,EAAUlwP,OAAOpsB,MACrBR,IAGJ88Q,EAAYjlR,KAAK+Z,KAAKi+P,IAAiBt1Q,GAAM,GAC7CyF,EAAQ88Q,EAAUlwP,OAAOpsB,MACrBR,IAAQmxQ,MACHnxQ,EAEF,OAZE,IAaX,CACA,cAAA8hS,CAAeJ,EAAU5jB,GACvB,GAAK4jB,EAAS7lS,eAAe,eAG7B,IAAK,MAAM,IACTgS,EAAG,OACHggQ,EAAM,WACN+b,KACG8X,EAASpR,YAAYhrP,SAAU,CAClC,GAAIskP,EACF,SAEF,IAAK/7Q,EACH,SAEF,MAAMg0O,EAAQ2c,GAAW3mQ,KAAKmjQ,KAAM8iB,EAAUjwQ,GAAK,GAAO,GAC1D,IAAKg0O,EAAO,CACVxiP,EAAK,4BAA4BwO,MACjC,QACF,CACA,MAAO43B,GAAQo8M,EACf,IAAKp8M,EAAK2rO,IAAev5Q,KAAK+Z,MAAO,CACnCvS,EAAK,4CACL,QACF,CACA,MAAM0iS,EAAcvjC,GAAW3mQ,KAAKmjQ,KAAM0mC,EAAU7zB,GAAQ,GAAO,GACnE,IAAKk0B,EAAa,CAChB1iS,EAAK,yBAAyBwuQ,MAC9B,QACF,CACA,MAAOm0B,GAAcD,EACrB,IAAKC,EAAW5wB,IAAeswB,GAAW,CACxCriS,EAAK,4DACL,QACF,CACA,MAAM4iS,EAAeD,EAAWtxB,MAChC,GAAIsxB,aAAsBrE,IAAesE,aAAwBtE,GAAa,CAC5Et+R,EAAK,2EACL,QACF,CACA,GAAI2iS,aAAsBrY,IAAasY,aAAwBtY,GAAW,CACxEtqR,EAAK,yEACL,QACF,CACA,MAAMm0N,EAAU/tL,EAAKmtO,MACfr4Q,EAAOynS,EAAWpwB,IACxB,GAAIowB,aAAsBnkB,GAA1B,CACE,MAAMmjB,EAAQzlS,OAAOwP,OAAO,MAC5Bi2R,EAAMzmS,GAAQi5N,EACd,MAAM73N,EAAMumS,QAAQC,UAAU5mS,OAAOkhR,eAAewlB,GAAcnhS,YAAa,CAACkgS,IAChFiB,EAAa1nS,GAAQoB,EAAIpB,EAE3B,MACKynS,EAAWnmS,eAAe0zQ,KAI/ByyB,EAAWxyB,IAAS/pO,EACpBu8P,EAAWzyB,IAAY/7C,EACvBwuE,EAAWryB,OALTtwQ,EAAK,2CAMT,CACF,CACA,UAAA+iS,CAAWV,EAAU5jB,GACnB,IAAK4jB,EAAS7lS,eAAe,WAAa6lS,EAAS7lS,eAAe,cAAgB6lS,EAAS1O,UAAU5jR,UACnG,OAEF,IAAK,MAAMyC,KAAQ6vR,EAAS/yR,MAAM22B,SAChCo8P,EAAStvB,IAAcvgQ,GAEzB6vR,EAAS/yR,MAAMlB,QACf,MAAM40R,EAAS,IAAIzK,GAAM,CAAC,GACpBjrR,EAAS,IAAIirR,GAAM,CAAC,GAC1B8J,EAAS1yB,IAAcqzB,GACvBX,EAAS/yR,MAAMvV,KAAKipS,GACpBX,EAAS1yB,IAAcriQ,GACvB+0R,EAAS/yR,MAAMvV,KAAKuT,GACpB,IAAK,MAAM,IACTkB,EAAG,SACHg8Q,EAAQ,SACRC,EAAQ,WACRF,KACG8X,EAAS1O,UAAU1tP,SAAU,CAChC,GAAIskP,EACF,SAEF,IAAK/7Q,EACH,SAEF,MAAMg0O,EAAQ2c,GAAW3mQ,KAAKmjQ,KAAM8iB,EAAUjwQ,GAAK,GAAO,GAC1D,GAAKg0O,EAIL,IAAK,MAAMp8M,KAAQo8M,EAAO,CACxB,IAAKp8M,EAAK2rO,IAAev5Q,KAAKy7Q,UAAW,CACvCj0Q,EAAK,sBAAsBwO,iCAC3B,QACF,CACA,MAAMy0R,EAAa9jC,GAAW3mQ,KAAKmjQ,KAAMv1N,EAAMokP,GAAU,GAAM,GAC/D,IAAKyY,EAAY,CACfjjS,EAAK,wBAAwBwqR,MAC7B,QACF,CACA,MAAO0Y,GAAaD,EACpB,IAAKC,EAAUnxB,IAAev5Q,KAAKy7Q,UAAW,CAC5Cj0Q,EAAK,kDACL,QACF,CACA,MAAMmjS,EAAahkC,GAAW3mQ,KAAKmjQ,KAAMv1N,EAAMqkP,GAAU,GAAM,GAC/D,IAAK0Y,EAAY,CACfnjS,EAAK,wBAAwByqR,MAC7B,QACF,CACA,MAAO2Y,GAAaD,EACpB,IAAKC,EAAUrxB,IAAev5Q,KAAKy7Q,UAAW,CAC5Cj0Q,EAAK,kDACL,QACF,CACA,MAAMqjS,EAAQxB,GAAWqB,EAAU3vB,OAC7BpyQ,EAAQ0gS,GAAWuB,EAAU7vB,OACnCyvB,EAAOrzB,IAAc0zB,GACrBL,EAAOnzC,KAAK91P,KAAKspS,GACjB/1R,EAAOqiQ,IAAcxuQ,GACrBmM,EAAOuiP,KAAK91P,KAAKoH,EACnB,MAlCEnB,EAAK,4BAA4BwO,KAmCrC,CACF,CACA,gBAAA80R,CAAiBjB,EAAUxzE,EAASw7D,GAClC,IAAIkZ,EASJ,GARI10E,EAAQ91N,OAAS,IACnBwqS,EAAYlB,EAASryB,MACrBuzB,EAAUxwB,IAAcwwB,EAAU9H,OAClC8H,EAAU9H,MAAQ,MAEpBjjS,KAAK4pS,WAAWC,EAAUxzE,EAAQ,GAAIw7D,GACtC7xR,KAAKiqS,eAAeJ,EAAUxzE,EAAQ,IACtCr2N,KAAKuqS,WAAWV,EAAUxzE,EAAQ,IACX,IAAnBA,EAAQ91N,OACV,OAEF,MAAM6V,EAASyzR,EAAShxB,MAClBn2Q,EAAOmnS,EAAS9vB,IAChB5hQ,EAAM/B,EAAO8iQ,IAAU2wB,GAC7B,IAAK,IAAIvoS,EAAI,EAAG0P,EAAKqlN,EAAQ91N,OAAQe,EAAI0P,EAAI1P,IAAK,CAChD,MAAM6G,EAAQkuN,EAAQ/0N,GAChBuU,EAAQk1R,EAAUvzB,MACxBphQ,EAAO1T,GAAMnB,KAAKsU,GAClBO,EAAO+iQ,IAAWhhQ,EAAM7W,EAAGuU,GAC3B7V,KAAK4pS,WAAW/zR,EAAO1N,EAAO0pR,GAC9B7xR,KAAKiqS,eAAep0R,EAAO1N,GAC3BnI,KAAKuqS,WAAW10R,EAAO1N,EACzB,CACF,CACA,kBAAA6iS,CAAmBnB,GACjB,IAAK7pS,KAAKupS,WACR,OAEF,MAAM,MACJtG,GACE4G,EACJ,IAAK5G,GAASA,EAAMhB,SAAW,EAC7B,OAEF,MAAM7rR,EAASyzR,EAAShxB,MAClBn2Q,EAAOmnS,EAAS9vB,IACtB,KAAM3jQ,EAAO1T,aAAiB8hR,IAC5B,OAEF,IAAIymB,EAEFA,EADEpB,EAASnnS,KACK0T,EAAO1T,GAAM+qC,SAASja,QAAO1zB,GAAKA,EAAE4C,OAASmnS,EAASnnS,OAAMnC,OAE5D6V,EAAO1T,GAAM+qC,SAASltC,OAExC,MAAM4X,EAAM/B,EAAO8iQ,IAAU2wB,GAAY,EACnC74R,EAAKiyR,EAAMhB,QAAUgJ,EAC3B,GAAIj6R,EAAI,CACN,MAAMk6R,EAAYrB,EAASryB,MAC3B0zB,EAAU3wB,IAAc2wB,EAAUjI,OAClCiI,EAAUjI,MAAQ,KAClB7sR,EAAO1T,GAAMnB,KAAK2pS,GAClB90R,EAAO+iQ,IAAWhhQ,EAAK+yR,GACvB,IAAK,IAAI5pS,EAAI,EAAGA,EAAI0P,EAAI1P,IAAK,CAC3B,MAAMuU,EAAQq1R,EAAU1zB,MACxBphQ,EAAO1T,GAAMnB,KAAKsU,GAClBO,EAAO+iQ,IAAWhhQ,EAAM7W,EAAGuU,EAC7B,CACF,CACF,CACA,aAAAs1R,CAActB,GACZ,MAAM,KACJnnS,EAAI,MACJugS,GACE4G,EACJ,IAAK5G,IAAUvgS,EACb,MAAO,CAAC,EAAG,GAEb,MAAMqL,GAAqB,IAAfk1R,EAAMl1R,IAAa0hP,IAAWwzC,EAAMl1R,IAChD,MAAO,CAACk1R,EAAM54R,IAAK0D,EACrB,CACA,WAAAq9R,CAAYvB,EAAU5jB,GACpBjmR,KAAKiqS,eAAeJ,EAAU5jB,GAC9BjmR,KAAKuqS,WAAWV,EAAU5jB,GAC1BjmR,KAAK2pS,aAAaE,EAAU5jB,EAC9B,CACA,YAAA0jB,CAAaE,EAAU5jB,GACrB,MAAMolB,EAAe,GACrBrrS,KAAKgrS,mBAAmBnB,GACxB,IAAK,MAAMpjC,KAASojC,EAASpxB,MAAiB,CAC5C,GAAIhS,EAAMkR,IACR,SAEF,QAAwBv0Q,IAApBpD,KAAKypS,YAAiD,YAArBhjC,EAAMsT,IAA0B,CACnE/5Q,KAAKypS,WAAiC,gBAApBhjC,EAAMigC,UACxB,MAAM4E,EAAerlB,EAASxN,MAC9B,GAAI6yB,EAAa/qS,OAAS,EACxBP,KAAK8qS,iBAAiBrkC,EAAO,CAAC6kC,EAAa,IAAK,WAC3C,GAAItrS,KAAKupS,WAAY,CAC1B,MAAMllB,EAAO4B,EAASnM,MAAkBsvB,IAAoB,EAAInjB,EAASnM,IACnEyxB,EAAY9kC,EAAMkR,IAAS,IAAI4M,GAAUF,EAAM5d,EAAM/jQ,MAAQ,QACnEujR,EAAS9O,IAAco0B,GACvBvrS,KAAK2pS,aAAaljC,EAAO8kC,EAC3B,CACA,QACF,CACA,IAAK9kC,EAAM4S,MACT,SAEF,IAAI2wB,GAAS,EACTnY,EAAU,KACV77Q,EAAM,KACN7N,EAAQ,KACZ,GAAIs+P,EAAM1jP,KAAM,CACd,OAAQ0jP,EAAM1jP,KAAK5a,OACjB,IAAK,OACHnI,KAAKorS,YAAY3kC,EAAOwf,GACxB,SACF,IAAK,SACH+jB,GAAS,EACT,MACF,IAAK,UACH,IAAKvjC,EAAM1jP,KAAK/M,IAAK,CACnBxO,EAAK,8BAA8Bi/P,EAAMsT,QACzC/5Q,KAAKorS,YAAY3kC,EAAOwf,GACxB,QACF,CACAjwQ,EAAMywP,EAAM1jP,KAAK/M,IAKjBywP,EAAM1jP,KAAK8uQ,UACbA,EAAUprB,EAAM1jP,KAAK8uQ,QAAQna,IAEjC,CACA,MAAOrtQ,EAAK0D,GAAO/N,KAAKmrS,cAAc1kC,GACtC,GAAIzwP,EAAK,CAEP,GADA7N,EAAQw+P,GAAW3mQ,KAAKmjQ,KAAM8iB,EAAUjwQ,GAAK,GAAM,GACrC,OAAV7N,EAAgB,CAElB,GADAA,EAAQ26Q,GAAe9iR,KAAK+Z,KAAMksQ,EAAUjwQ,IACvC7N,EACH,SAEEnI,KAAKwpS,mBACPrhS,EAAMsvQ,KAAa,GAErBz3Q,KAAKorS,YAAY3kC,EAAOt+P,GACxB,QACF,CACMnI,KAAKwpS,mBACPrhS,EAAQA,EAAMqrB,QAAOoa,IAASA,EAAK6pO,OAEjCtvQ,EAAM5H,OAASwN,EACjB5F,EAAQA,EAAMyF,MAAM,EAAGG,GACG,IAAjB5F,EAAM5H,SACf4H,EAAQ,MAENA,GAASnI,KAAKwpS,kBAChBrhS,EAAM87C,SAAQrW,IACZA,EAAK6pO,KAAa,CAAI,GAI9B,KAAO,CACL,IAAKhR,EAAM/jQ,KAAM,CACf1C,KAAKorS,YAAY3kC,EAAOwf,GACxB,QACF,CACA,GAAIjmR,KAAKwpS,iBAAkB,CACzB,MAAMnzE,EAAU,GAChB,KAAOA,EAAQ91N,OAASwN,GAAK,CAC3B,MAAM0+C,EAAQzsD,KAAK8pS,yBAAyBrjC,EAAM/jQ,KAAM+jQ,EAAMuS,MAAsBiN,EAAU+jB,GAC9F,IAAKv9O,EACH,MAEFA,EAAMgrN,KAAa,EACnBphD,EAAQ90N,KAAKkrD,EACf,CACAtkD,EAAQkuN,EAAQ91N,OAAS,EAAI81N,EAAU,IACzC,KAAO,CAEL,GADAluN,EAAQ89Q,EAASzN,IAA0B/R,EAAM/jQ,MAAM,EAAO1C,KAAKupS,YAAYx0Q,OAAOpsB,OACjFR,EAAO,CACV,GAAY,IAARkC,EAAW,CACbghS,EAAa9pS,KAAKklQ,GAClB,QACF,CACA,MAAM4d,EAAO4B,EAASnM,MAAkBsvB,IAAoB,EAAInjB,EAASnM,IACzE3xQ,EAAQs+P,EAAMkR,IAAS,IAAI4M,GAAUF,EAAM5d,EAAM/jQ,MAC7C1C,KAAKupS,aACPphS,EAAMsvQ,KAAa,GAErBwO,EAAS9O,IAAchvQ,GACvBnI,KAAKorS,YAAY3kC,EAAOt+P,GACxB,QACF,CACInI,KAAKupS,aACPphS,EAAMsvQ,KAAa,GAErBtvQ,EAAQ,CAACA,EACX,CACF,CACIA,EACFnI,KAAK8qS,iBAAiBrkC,EAAOt+P,EAAO0pR,GAC3BxnR,EAAM,EACfrK,KAAKorS,YAAY3kC,EAAOwf,GAExBolB,EAAa9pS,KAAKklQ,EAEtB,CACA4kC,EAAapnP,SAAQrW,GAAQA,EAAKirO,MAAc0B,IAAc3sO,IAChE,EAKF,MAAM49P,GACJ,WAAAviS,CAAYk6P,EAAMppP,GAChB/Z,KAAK+Z,KAAOA,EACZ/Z,KAAKyrS,QAAUtoC,EAAKsY,UAAY,IAClC,CACA,SAAAiwB,CAAUC,GACR,MAAMv6Q,EAAQ,CAAC,EAAE,EAAGpxB,KAAK+Z,KAAK0+P,QAC9B,KAAOrnP,EAAM7wB,OAAS,GAAG,CACvB,MAAMywB,EAAOI,EAAMgM,IAAI,IAChB97B,EAAGmsC,GAAYzc,EACtB,GAAI1vB,EAAI,IAAMmsC,EAASltC,OAAQ,CAC7B6wB,EAAMkgB,MACN,QACF,CACA,MAAMm1N,EAAQh5N,IAAWzc,EAAK,IACxB46Q,EAAeD,EAAQ9nS,IAAI4iQ,EAAM2U,KACvC,GAAIwwB,EACFnlC,EAAMoU,IAAW+wB,OACZ,CACL,MAAM/mC,EAAa4B,EAAMwR,MACzB,IAAK,MAAMtvQ,KAASk8P,EAAW/vP,SAAU,CACvC,MAAM0H,EAAQmvR,EAAQ9nS,IAAI8E,EAAMyyQ,KAChC,GAAI5+P,EAAO,CACT7T,EAAMkyQ,IAAWr+P,GACjB,KACF,CACF,CACF,CACA,MAAMwtO,EAAQyc,EAAMgS,MAChBzuB,EAAMzpP,OAAS,GACjB6wB,EAAM7vB,KAAK,EAAE,EAAGyoP,GAEpB,CACA,MAAMvqO,EAAM,CAAC,sEACb,GAAIzf,KAAKyrS,QACP,IAAK,MAAMhlC,KAASzmQ,KAAKyrS,QAAQhzB,MACN,SAArBhS,EAAMsT,KACRtT,EAAMyU,IAAWz7P,GAMvB,OAFAzf,KAAK+Z,KAAKmhQ,IAAWz7P,GACrBA,EAAIle,KAAK,mBACFke,EAAIjV,KAAK,GAClB,EASF,MAAMqhS,GAAevwB,GAAa1K,OAAO/0O,GACzC,MAAMiwQ,WAAgB1nB,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,WAAW,GAC/B7rS,KAAK+rS,SAAW,KAChB/rS,KAAKgsS,SAAW,KAChBhsS,KAAKisS,OAAS,KACdjsS,KAAK68Q,SAAW,KAChB78Q,KAAKksS,2BAA6B,KAClClsS,KAAKmsS,UAAY,IAAI3nB,EACvB,EAEF,MAAM4nB,WAAiBhoB,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YAAY,GAChC7rS,KAAKqsS,cAAgB,IACvB,EAEF,MAAMC,WAAuB3lB,GAC3B,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,iBAAkB,CAAC,WAAY,SAAU,WAC/D,EAEF,MAAMU,WAAwB5lB,GAC5B,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,kBAAmB,CAAC,WAAY,SAAU,WAChE,EAEF,MAAMW,WAAuBzlB,GAC3B,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,iBACtB,EAEF,MAAMY,WAA6B1lB,GACjC,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,uBACtB,EAEF,MAAMa,WAAmB1lB,GACvB,WAAA/9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,aACtB,EAEF,MAAMc,WAA4B9lB,GAChC,WAAA59Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,sBAAuB,GAAGt/R,GAAKA,GAAK,GAAKA,GAAK,GACpE,EAEF,MAAMqgS,WAAcxoB,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,SAAS,GAC7B7rS,KAAK0C,KAAOmiQ,EAAWniQ,KAAOmiQ,EAAWniQ,KAAK8lQ,OAAS,GACvDxoQ,KAAKisS,OAAS,IAAIznB,EACpB,EAEF,MAAMqoB,WAAoBnmB,GACxB,WAAAz9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cACtB,EAEF,MAAMiB,WAAYlmB,GAChB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,MACtB,EAEF,MAAMkB,WAAoB3oB,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,QACpB7rS,KAAKo5O,MAAQujC,GAAW,CACtB5iQ,KAAM8qP,EAAWzrB,MACjBwjC,aAAc,EACdC,SAAUtwQ,GAAKA,GAAK,GAAKA,GAAK,IAEhCvM,KAAK0C,KAAOs6Q,GAAgBnY,EAAWniQ,KAAM,CAAC,GAAI,UAAW,WAAY,eAAgB,OAAQ,UAAW,SAAU,QAAS,SAAU,YAAa,YAAa,iBACrK,EAEF,MAAMsqS,WAAmBrmB,GACvB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,aAAc,CAAC,WAAY,WAAY,UAC7D,EAEF,MAAMoB,WAAiBtmB,GACrB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,WAAY,CAAC,WAAY,WAC/C,EAEF,MAAMqB,WAAatmB,GACjB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,OACtB,EAEF,MAAMsB,WAAoB/oB,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,eACpB7rS,KAAK45D,OAASojN,GAAgBnY,EAAWjrM,OAAQ,CAAC,OAAQ,SAAU,MAAO,eAC7E,EAEF,MAAMwzO,WAAyB1mB,GAC7B,WAAAz9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,mBACtB,CACA,CAAC/zB,MACC93Q,KAAK03Q,IAAY,IAAI/jQ,IAAI3T,KAAK03Q,IAAUlP,OAAOxsP,MAAM,OAAOwX,QAAOzjB,GAAKA,EAAEjE,SAAS,OAAMmQ,KAAIlM,GAAKA,EAAEiM,MAAM,IAAK,KACjH,EAEF,MAAMqxR,WAAcjpB,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,SAAS,GAC7B7rS,KAAKstS,cAAgB,IACvB,EAEF,MAAMC,WAAexmB,GACnB,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,SACtB,EAEF,MAAM2B,WAAeppB,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UAAU,GAC9B7rS,KAAK+Z,KAAO,KACZ/Z,KAAKq4R,OAAS,KACdr4R,KAAK27Q,UAAY,KACjB37Q,KAAKytS,UAAY,KACjBztS,KAAK0tS,eAAiB,KACtB1tS,KAAK+9B,SAAW,KAChB/9B,KAAK2tS,oBAAsB,KAC3B3tS,KAAK4tS,eAAiB,KACtB5tS,KAAKuH,IAAM,IAAIi9Q,EACjB,EAEF,MAAMqpB,WAAiBzpB,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YACpB7rS,KAAK4mS,MAAQ5pB,GAAgBnY,EAAW+hC,MAAO,CAAC,YAAa,YAC/D,EAEF,MAAMkH,WAAiC/mB,GACrC,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,2BACtB,EAEF,MAAMkC,WAA6B/mB,GACjC,WAAA/9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,uBACtB,EAEF,MAAMmC,WAAoB5pB,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,eAAe,GACnC7rS,KAAKiuS,yBAA2B,KAChCjuS,KAAKkuS,qBAAuB,KAC5BluS,KAAKo5O,MAAQ,KACbp5O,KAAKuE,KAAO,IACd,EAEF,MAAM4pS,WAAe/pB,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UAAU,GAC9B7rS,KAAKouS,QAAU,KACfpuS,KAAKquS,QAAU,KACfruS,KAAKsuS,MAAQ,KACbtuS,KAAKuuS,MAAQ,IAAI/pB,EACnB,EAEF,MAAMgqB,WAAoB7nB,GACxB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cAAe,CAAC,IAAK,KAC3C,EAEF,MAAM4C,WAAoB1nB,GACxB,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cACtB,EAEF,MAAM6C,WAAe7nB,GACnB,WAAA59Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,SAAU,GAAGt/R,GAAKA,GAAK,GAC7C,EAEF,MAAMoiS,WAAgB/nB,GACpB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UACtB,EAEF,MAAM+C,WAAoB/nB,GACxB,WAAA59Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cAAe,GAAGt/R,GAAKA,GAAK,GAClD,EAEF,MAAMsiS,WAAazqB,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,QAAQ,GAC5B7rS,KAAK8uS,WAAa,KAClB9uS,KAAK6kQ,WAAa,KAClB7kQ,KAAK+uS,gBAAkB,KACvB/uS,KAAKgvS,UAAY,KACjBhvS,KAAK2kB,MAAQ,KACb3kB,KAAKw6N,OAAS,KACdx6N,KAAKivS,UAAY,KACjBjvS,KAAKw1Q,IAAM,KACXx1Q,KAAKkvS,OAAS,KACdlvS,KAAKmvS,IAAM,KACXnvS,KAAKovS,UAAY,IAAI5qB,GACrBxkR,KAAKgN,UAAY,IAAIw3Q,EACvB,EAEF,MAAM6qB,WAAcjrB,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,SAAS,GAC7B7rS,KAAKw1Q,IAAM,IACb,EAEF,MAAM85B,WAAwB5oB,GAC5B,WAAAz9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,mBACpB7rS,KAAKuvS,cAAgBvyB,GAAgBnY,EAAW0qC,cAAe,CAAC,IAAK,SAAU,WAAY,oBAAqB,QAAS,SAAU,WAAY,SAAU,QAAS,oBAAqB,OAAQ,qBAAsB,cACvN,EAEF,MAAMC,WAAoB7oB,GACxB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cAAe,CAAC,MAAO,MAAO,KAAM,YAAa,OACvE,EAEF,MAAM4D,WAAyB1oB,GAC7B,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,mBACtB,EAEF,MAAM6D,WAAetrB,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UAAU,GAC9B7rS,KAAK0C,KAAOmiQ,EAAWniQ,KAAOmiQ,EAAWniQ,KAAK8lQ,OAAS,GACvDxoQ,KAAKogR,SAAW,KAChBpgR,KAAK+7Q,IAAM,IACb,EAEF,MAAM4zB,WAAqBhpB,GACzB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,eAAgB,CAAC,UAAW,qBAAsB,uBACxE,EAEF,MAAM+D,WAAsBjpB,GAC1B,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,gBAAiB,CAAC,YAAa,YACrD,EAEF,MAAMgE,WAAc9oB,GAClB,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,QACtB,EAEF,MAAMiE,WAAuB/oB,GAC3B,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UACtB,EAEF,MAAMkE,WAA0B3rB,GAC9B,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cAAc,GAClC7rS,KAAK+uQ,QAAU,KACf/uQ,KAAKgwS,gBAAkB,KACvBhwS,KAAKwwQ,YAAc,IACrB,EAEF,MAAMy/B,WAAwBtpB,GAC5B,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,kBAAmB,CAAC,QAAS,UACnD,EAEF,MAAMqE,WAAgBtpB,GACpB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UACtB,EAEF,MAAMsE,WAAe/rB,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UACpB7rS,KAAKowS,MAAQzzB,GAAW,CACtB5iQ,KAAM8qP,EAAWurC,MACjBxzB,aAAc,EACdC,SAAUtwQ,GAAW,IAANA,IAEjBvM,KAAKsM,KAAOu4P,EAAWv4P,MAAQ,GAC/BtM,KAAKqwS,GAAKxrC,EAAWwrC,IAAM,EAC7B,EAEF,MAAMC,WAAoBlsB,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,eACpB7rS,KAAKsM,KAAOu4P,EAAWv4P,MAAQ,GAC/BtM,KAAKqwS,GAAKxrC,EAAWwrC,IAAM,GAC3BrwS,KAAKuwS,cAAgB1rC,EAAW2rC,cAAgB,EAClD,CACA,gBAAIA,GACF,MAAM9rR,EAAS,GACT+rR,EAAe,oBACfD,EAAexwS,KAAKuwS,cAC1B,IAAK,IAAI5rR,KAAS6rR,EAAax0R,MAAM,KAAKC,KAAIlM,GAAKA,EAAEy4P,SAAQh1O,QAAOzjB,KAAOA,IACzE4U,EAAQA,EAAM3I,MAAM,IAAK,GAAGC,KAAIlM,IAC9B,MAAM08C,EAAQ18C,EAAE5H,MAAMsoS,GACtB,OAAKhkP,EAGEv2C,SAASu2C,EAAM,GAAI,IAFjB,CAEoB,IAEV,IAAjB9nC,EAAMpkB,QACRokB,EAAMpjB,KAAKojB,EAAM,IAEnBD,EAAOnjB,KAAKojB,GAEd,OAAOjc,EAAO1I,KAAM,eAAgB0kB,EACtC,EAEF,MAAMgsR,WAAgBhqB,GACpB,WAAAz9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UACtB,CACA,CAAC/zB,MACC93Q,KAAK03Q,IAAY13Q,KAAK03Q,IAAUlP,OAAOxsP,MAAM,OAAOwX,QAAOzjB,GAAKA,GAAK,CAAC,YAAa,QAAS,QAAS,OAAQ,aAAc,QAAS,YAAYjE,SAASiE,IAC3J,EAEF,MAAM4gS,WAAkB/pB,GACtB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YACtB,EAEF,MAAM+E,WAAkBjqB,GACtB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YAAa,CAAC,oBAAqB,KAAM,OAC/D,EAEF,MAAMgF,WAAwBzsB,GAC5B,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YAAY,GAChC7rS,KAAK8wS,MAAQ,KACb9wS,KAAKic,IAAM,KACXjc,KAAK+wS,YAAc,KACnB/wS,KAAKgxS,YAAc,IAAIxsB,GACvBxkR,KAAKixS,gBAAkB,IAAIzsB,GAC3BxkR,KAAKkxS,WAAa,IAAI1sB,EACxB,EAEF,MAAM2sB,WAAyBpqB,GAC7B,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,mBACtB,EAEF,MAAMuF,WAAoBxqB,GACxB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cACtB,EAEF,MAAMwF,WAAgB1qB,GACpB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UAAW,CAAC,YAAa,YAAa,SAAU,UACtE,EAEF,MAAMyF,WAA0B1qB,GAC9B,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,oBACtB,EAEF,MAAM0F,WAAwB5qB,GAC5B,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,kBAAmB,CAAC,OAAQ,eAClD,EAEF,MAAM2F,WAAyBzqB,GAC7B,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,mBACtB,EAEF,MAAM4F,WAAoB1qB,GACxB,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cACtB,EAEF,MAAM6F,WAAY/qB,GAChB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,MAAO,CAAC,oBAAqB,OAAQ,WAC3D,EAEF,MAAM8F,WAAqBvtB,GACzB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,gBAAgB,GACpC7rS,KAAK0C,KAAOs6Q,GAAgBnY,EAAWniQ,KAAM,CAAC,MAAO,MAAO,MAAO,SACnE1C,KAAK4xS,YAAc,KACnB5xS,KAAK6xS,UAAY,KACjB7xS,KAAKogR,SAAW,KAChBpgR,KAAK+7Q,IAAM,IACb,EAEF,MAAM+1B,WAAenrB,GACnB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,SAAU,CAAC,WAAY,SAC7C,EAEF,MAAMkG,WAAclrB,GAClB,WAAA59Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,QAAS,GAAGt/R,GAAKA,EAAI,GAC3C,EAEF,MAAMylS,WAAmBjrB,GACvB,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,aACtB,EAEF,MAAMoG,WAAerrB,GACnB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,SACtB,EAEF,MAAMqG,WAAkBtrB,GACtB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YACtB,EAEF,MAAMsG,WAAY/tB,GAChB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,OAAO,GAC3B7rS,KAAKgqB,KAAO,KACZhqB,KAAKoyS,UAAY,KACjBpyS,KAAKqwS,GAAK,KACVrwS,KAAKw1Q,IAAM,IACb,EAEF,MAAM68B,WAAmBjuB,GACvB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,OAAO,GAC3B7rS,KAAKsyS,OAAS,IAAI9tB,GAClBxkR,KAAKuyS,YAAc,IAAI/tB,EACzB,EAEF,MAAMguB,WAAmBpuB,GACvB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cAAc,GAClC7rS,KAAKic,IAAM,IACb,EAEF,MAAMw2R,WAAuBruB,GAC3B,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,WAAW,GAC/B7rS,KAAK0yS,MAAQ,KACb1yS,KAAK2yS,SAAW,IAClB,EAEF,MAAMC,WAAkBxuB,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,aAAa,GACjC7rS,KAAKgJ,QAAU,IAAIw7Q,EACrB,EAEF,MAAMquB,WAAalsB,GACjB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,OAAQ,CAAC,SAAU,aACzC,EAEF,MAAMiH,WAAqB/rB,GACzB,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,eACtB,EAEF,MAAMkH,WAAclsB,GAClB,WAAA59Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,QAAS,GAAGt/R,GAAKA,GAAK,GAC5C,EAEF,MAAMymS,WAAiBpsB,GACrB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,WACtB,EAEF,MAAMoH,WAAmBvsB,GACvB,WAAAz9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,aACtB,EAEF,MAAMqH,WAAuBrsB,GAC3B,WAAA59Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,iBAAkB,MAAMt/R,GAAKA,GAAK,GAAKA,GAAK,GAClE,EAEF,MAAM4mS,WAAmB/uB,GACvB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cAAc,GAClC7rS,KAAKozS,YAAc,IACrB,EAEF,MAAMC,WAAejvB,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UAAU,GAC9B7rS,KAAKqwS,GAAK,KACVrwS,KAAKuE,KAAO,KACZvE,KAAKw1Q,IAAM,IACb,EAEF,MAAM89B,WAAkB1sB,GACtB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YACtB,EAEF,MAAM0H,WAAkBnvB,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,aAAa,GACjC7rS,KAAKw1Q,IAAM,IACb,EAEF,MAAMg+B,WAAkB7sB,GACtB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YAAa,CAAC,OAAQ,OAAQ,OAAQ,SAC5D,EAEF,MAAM4H,WAAgB7sB,GACpB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UACtB,CACA,CAAC/zB,MACwB,MAAnB93Q,KAAK03Q,MAGT13Q,KAAK03Q,IAAY13Q,KAAK03Q,IAAUlP,OAAOxsP,MAAM,OAAOwX,QAAOzjB,GAAK,CAAC,SAAU,WAAY,WAAY,OAAQ,QAAQjE,SAASiE,KAC9H,EAEF,MAAM2jS,WAAmBtvB,GACvB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cACpB7rS,KAAK+P,EAAI4sQ,GAAW,CAClB5iQ,KAAM8qP,EAAW90P,EACjB6sQ,aAAc,gBACdC,SAAUtwQ,IAAK,IAEjBvM,KAAKgQ,EAAI2sQ,GAAW,CAClB5iQ,KAAM8qP,EAAW70P,EACjB4sQ,aAAc,gBACdC,SAAUtwQ,IAAK,GAEnB,EAEF,MAAMonS,WAAkB/sB,GACtB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YACtB,CACA,CAAC/zB,MACC,MAAM87B,EAAU5zS,KAAK03Q,IAAUlP,OAAOxsP,MAAM,OAAOC,KAAIlM,GAAKmG,SAASnG,EAAG,MAClE2U,EAAS,GACf,IAAK,IAAIpjB,EAAI,EAAG0P,EAAK4iS,EAAQrzS,OAAQe,EAAI0P,EAAI1P,GAAK,EAChDojB,EAAOnjB,KAAKqyS,EAAQhmS,MAAMtM,EAAGA,EAAI,IAEnCtB,KAAK03Q,IAAYhzP,CACnB,EAEF,MAAMmvR,WAAmBltB,GACvB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,aAAc,CAAC,UAAW,kBAAmB,kBACnE,EAEF,MAAMiI,WAA2BntB,GAC/B,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,qBAAsB,CAAC,OAAQ,cAAe,sBAAuB,uBAAwB,gBACnH,EAEF,MAAMkI,WAAaltB,GACjB,WAAA59Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,OAAQ,GAAGt/R,IAAK,GACtC,EAEF,MAAMynS,WAAY5vB,GAChB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,OAAO,GAC3B7rS,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAK4xS,YAAc,KACnB5xS,KAAKogR,SAAW,KAChBpgR,KAAKi0S,IAAM,KACXj0S,KAAKk0S,WAAa,KAClBl0S,KAAKm0S,UAAY,KACjBn0S,KAAKo0S,WAAa,KAClBp0S,KAAKq0S,OAAS,KACdr0S,KAAK+7Q,IAAM,IACb,EAEF,MAAMu4B,WAAYlwB,GAChB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,OAAO,GAC3B7rS,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKu0S,oBAAsB,KAC3Bv0S,KAAK4xS,YAAc,KACnB5xS,KAAKw+O,YAAc,KACnBx+O,KAAKqyQ,QAAU,KACfryQ,KAAK00R,WAAa,KAClB10R,KAAKogR,SAAW,KAChBpgR,KAAKw0S,YAAc,KACnBx0S,KAAKy0S,WAAa,KAClBz0S,KAAK6zQ,WAAa,KAClB7zQ,KAAK00S,KAAO,KACZ10S,KAAK20S,SAAW,KAChB30S,KAAK40S,aAAe,KACpB50S,KAAK60S,YAAc,KACnB70S,KAAK80S,YAAc,KACnB90S,KAAK+0S,aAAe,KACpB/0S,KAAKg1S,OAAS,KACdh1S,KAAK8B,QAAU,KACf9B,KAAK0zQ,kBAAoB,KACzB1zQ,KAAK+7Q,IAAM,IACb,EAEF,MAAMk5B,WAAa7wB,GACjB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,QAAQ,GAC5B7rS,KAAKk1S,IAAM,KACXl1S,KAAKm1S,YAAc,KACnBn1S,KAAKo1S,kBAAoB,KACzBp1S,KAAK0sD,KAAO,IACd,EAEF,MAAM2oP,WAAoBjxB,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,eAAe,GACnC7rS,KAAKs1S,kBAAoB,KACzBt1S,KAAKu1S,OAAS,KACdv1S,KAAKw1S,YAAc,KACnBx1S,KAAKy1S,iBAAmB,KACxBz1S,KAAK01S,iBAAmB,KACxB11S,KAAK21S,aAAe,KACpB31S,KAAK41S,kBAAoB,KACzB51S,KAAKkxQ,MAAQ,KACblxQ,KAAK61S,iBAAmB,IAC1B,EAEF,MAAMC,WAA0B/uB,GAC9B,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,oBACtB,EAEF,MAAMkK,WAAuBnvB,GAC3B,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UACtB,EAEF,MAAMmK,WAA0BjvB,GAC9B,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,oBACtB,EAEF,MAAMoK,WAAiBtvB,GACrB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,WAAY,CAAC,WAAY,WAAY,oBAAqB,SAAU,UAC1F,EAEF,MAAMqK,WAAgB9xB,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,WAAW,GAC/B7rS,KAAKm2S,iBAAmB,KACxBn2S,KAAK80O,MAAQ,KACb90O,KAAKisS,OAAS,KACdjsS,KAAKo2S,OAAS,KACdp2S,KAAKozS,YAAc,KACnBpzS,KAAKq2S,iBAAmB,KACxBr2S,KAAKw7D,OAAS,KACdx7D,KAAK45C,OAAS,KACd55C,KAAKs2S,UAAY,KACjBt2S,KAAKu2S,WAAa,KAClBv2S,KAAKw2S,mBAAqB,KAC1Bx2S,KAAK0zR,OAAS,KACd1zR,KAAK68Q,SAAW,KAChB78Q,KAAKg8Q,IAAM,KACXh8Q,KAAKy2S,OAAS,IAAIjyB,GAClBxkR,KAAK02S,aAAe,IAAIlyB,GACxBxkR,KAAK22S,IAAM,IAAInyB,GACfxkR,KAAK47Q,IAAM,IAAI4I,GACfxkR,KAAKipO,GAAK,IAAIu7C,GACdxkR,KAAKmsS,UAAY,IAAI3nB,GACrBxkR,KAAK42S,UAAY,IAAIpyB,GACrBxkR,KAAK62S,IAAM,IAAIryB,EACjB,EAEF,MAAMsyB,WAAc/vB,GAClB,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,QACtB,EAEF,MAAMkL,WAAyBhwB,GAC7B,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,mBACtB,EAEF,MAAMmL,WAAqBrwB,GACzB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,eAAgB,CAAC,aAAc,aACrD,EAEF,MAAMoL,WAAoBrwB,GACxB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cACtB,EAEF,MAAMqL,WAAiBtwB,GACrB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,WACtB,EAEF,MAAMsL,WAAW/yB,GACf,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,MAAM,GAC1B7rS,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAK4xS,YAAc,KACnB5xS,KAAKogR,SAAW,KAChBpgR,KAAKi0S,IAAM,KACXj0S,KAAKk0S,WAAa,KAClBl0S,KAAKm0S,UAAY,KACjBn0S,KAAKq0S,OAAS,KACdr0S,KAAK+7Q,IAAM,IACb,EAEF,MAAMq7B,WAAc1wB,GAClB,WAAAz9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,QACtB,CACA,CAAC/zB,MACC93Q,KAAK03Q,IAAY13Q,KAAK03Q,IAAUlP,OAAOxsP,MAAM,UAAW,GAAGC,KAAI0I,GAASA,EAAM3I,MAAM,KAAKC,KAAIlM,GAAKmG,SAASnG,EAAEy4P,OAAQ,QAAMh1O,QAAO7O,GAASA,EAAMrJ,OAAMvL,IAAMyO,MAAMzO,OAAKkM,KAAI0I,IACrJ,IAAjBA,EAAMpkB,QACRokB,EAAMpjB,KAAKojB,EAAM,IAEZA,IAEX,EAEF,MAAM0yR,WAAe3wB,GACnB,WAAAz9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,SACtB,CACA,CAAC/zB,MACC93Q,KAAK03Q,IAAY13Q,KAAK03Q,IAAUlP,OAChC,MAAMj8P,EAAI2J,SAASlW,KAAK03Q,IAAW,KAC9Bl5P,MAAMjS,IAAMA,GAAK,IACpBvM,KAAK03Q,IAAYnrQ,EAErB,EAEF,MAAM+qS,WAAiB5wB,GACrB,WAAAz9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,WACtB,CACA,CAAC/zB,MACC93Q,KAAK03Q,IAAY13Q,KAAK03Q,IAAUlP,OAAOxsP,MAAM,MAC/C,EAEF,MAAMu7R,WAAe7wB,GACnB,WAAAz9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,SACtB,CACA,CAAC/zB,MACC93Q,KAAK03Q,IAAY13Q,KAAK03Q,IAAUlP,QAC5BxoQ,KAAK03Q,IAAU98P,cAAc3S,WAAW,QAAU,IAAI4V,OAAO,iCAAkC,KAAKC,KAAK9d,KAAK03Q,OAChHlwQ,EAAK,iCAET,EAEF,MAAMgwS,WAAqB7wB,GACzB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,eAAgB,CAAC,SAAU,UACjD,EAEF,MAAM4L,WAAmB9wB,GACvB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,aAAc,CAAC,OAAQ,SAAU,OAAQ,UAC/D,EAEF,MAAM6L,WAAsBtzB,GAC1B,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UAAU,GAC9B7rS,KAAK23S,YAAc,KACnB33S,KAAK43S,QAAU,KACf53S,KAAK63S,WAAa,IACpB,EAEF,MAAMC,WAAoBnxB,GACxB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cAAe,CAAC,MAAO,QAC7C,EAEF,MAAMkM,WAAiBpxB,GACrB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,WAAY,CAAC,SAAU,QAAS,cAAe,QAAS,WAC9E,EAEF,MAAMmM,WAAoB5zB,GACxB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,eAAe,GACnC7rS,KAAKi4S,eAAiB,KACtBj4S,KAAKk4S,YAAc,IACrB,EAEF,MAAMC,WAAe/zB,GACnB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UACpB7rS,KAAKgqB,KAAOgzP,GAAgBnY,EAAW76O,KAAM,CAAC,oBAAqB,KAAM,OAC3E,EAEF,MAAMouR,WAAkBxxB,GACtB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YACtB,EAEF,MAAMwM,WAAkBxxB,GACtB,WAAA59Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YAAa,GAAGt/R,IAAK,GAC3C,EAEF,MAAM+rS,WAAqB3xB,GACzB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,eAAgB,CAAC,OAAQ,WAAY,MAAO,MAAO,OACzE,EAEF,MAAM0M,WAAkB3xB,GACtB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YACtB,EAEF,MAAM2M,WAAoB3xB,GACxB,WAAA59Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,cAAe,KAAKt/R,GAAKA,GAAK,GAAKA,GAAK,KAC9D,EAEF,MAAMksS,WAAuB1xB,GAC3B,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,iBACtB,EAEF,MAAM6M,WAAe3xB,GACnB,WAAA99Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,SACtB,EAEF,MAAM8M,WAAwBv0B,GAC5B,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YAAY,GAChC7rS,KAAKorB,KAAO,KACZprB,KAAKyqR,SAAW,KAChBzqR,KAAK44S,UAAY,KACjB54S,KAAKw1Q,IAAM,KACXx1Q,KAAKmvS,IAAM,IACb,EAEF,MAAM0J,WAAkBlyB,GACtB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,YAAa,CAAC,QAAS,QAAS,cAAe,WACrE,EAEF,MAAMiN,WAAWnyB,GACf,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,KAAM,CAAC,OAAQ,SAAU,SAAU,SAAU,SAAU,OAC7E,EAEF,MAAMkN,WAAsB30B,GAC1B,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,iBACpB7rS,KAAKg5S,WAAar8B,GAAW,CAC3B5iQ,KAAM8qP,EAAWm0C,WACjBp8B,aAAc,EACdC,SAAUtwQ,GAAKA,GAAK,GAExB,EAEF,MAAM0sS,WAAc70B,GAClB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,SAAS,GAC7B7rS,KAAKg8O,KAAO,IAAIwoC,EAClB,EAEF,MAAM00B,WAAkB90B,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,aAAa,GACjC7rS,KAAKm5S,YAAc,KACnBn5S,KAAKo5S,QAAU,KACfp5S,KAAKq5S,SAAW,KAChBr5S,KAAK6xR,QAAU,KACf7xR,KAAKynR,SAAW,KAChBznR,KAAKs5S,OAAS,KACdt5S,KAAKu5S,WAAa,IACpB,EAEF,MAAM/hP,WAAamvN,GACjB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,OAAQ,CAAC,OAAQ,UAAW,WAAY,WAAY,QAAS,MAAO,YAAa,SAAU,MAAO,aACxH,EAEF,MAAM2N,WAAY5yB,GAChB,WAAA39Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,MACtB,EAEF,MAAM4N,WAAwB9yB,GAC5B,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,WAAY,CAAC,YAAa,WAAY,aAAc,WAC1E,EAEF,MAAM6N,WAAmChzB,GACvC,WAAAz9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,6BACtB,CACA,CAAC/zB,MACC93Q,KAAK03Q,IAAY13Q,KAAK03Q,IAAUlP,OAAOxsP,MAAM,OAAOwX,QAAOzjB,GAAK,CAAC,WAAY,YAAYjE,SAASiE,IACpG,EAEF,MAAM4pS,WAA4BhzB,GAChC,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,sBAAuB,CAAC,0BAA2B,sBAAuB,mBAAoB,cACpH,EAEF,MAAM+N,WAAgBjzB,GACpB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OACrE,EAEF,MAAMgO,WAAuBz1B,GAC3B,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,kBACpB7rS,KAAK85S,YAAc98B,GAAgBnY,EAAWi1C,YAAa,CAAC,OAAQ,QAAS,WAC7E95S,KAAK+5S,YAAc/8B,GAAgBnY,EAAWk1C,YAAa,CAAC,OAAQ,UACpE/5S,KAAKg6S,YAAch9B,GAAgBnY,EAAWm1C,YAAa,CAAC,SAAU,YACxE,EAEF,MAAMC,WAA0B71B,GAC9B,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,qBAAqB,GACzC7rS,KAAKssS,eAAiB,KACtBtsS,KAAKusS,gBAAkB,KACvBvsS,KAAKk6S,qBAAuB,KAC5Bl6S,KAAKm6S,aAAe,KACpBn6S,KAAKo6S,QAAU,KACfp6S,KAAKq6S,eAAiB,KACtBr6S,KAAKs6S,UAAY,KACjBt6S,KAAKu6S,kBAAoB,KACzBv6S,KAAKw6S,aAAe,IACtB,EAEF,MAAMC,WAAkBr2B,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,aAAa,GACjC7rS,KAAK0C,KAAOmiQ,EAAWniQ,KAAOmiQ,EAAWniQ,KAAK8lQ,OAAS,GACvDxoQ,KAAKogR,SAAW,KAChBpgR,KAAK+7Q,IAAM,IACb,EAEF,MAAM2+B,WAAmB/zB,GACvB,WAAA19Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,aAAc,CAAC,WAAY,QAAS,YAAa,QAAS,QAChF,EAEF,MAAM8O,WAAej0B,GACnB,WAAAz9Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,SACtB,CACA,CAAC/zB,MACC,MAAM8iC,EAAO56S,KAAK03Q,IAAUlP,OAAOxsP,MAAM,UAAW,GAAGC,KAAIlM,GAAKmG,SAASnG,EAAG,MACxE6qS,EAAK73B,MAAKhzQ,GAAKyO,MAAMzO,KACvB/P,KAAK03Q,IAAY,CAAC,EAAG,IAGH,IAAhBkjC,EAAKr6S,QACPq6S,EAAKr5S,KAAKq5S,EAAK,IAEjB56S,KAAK03Q,IAAYkjC,EACnB,EAEF,MAAMC,WAAYz2B,GAChB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,OAAO,GAC3B7rS,KAAKw1Q,IAAM,IAAIgP,GACfxkR,KAAKmvS,IAAM,IAAI3qB,EACjB,EAEF,MAAMs2B,WAAY12B,GAChB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,OAAO,GAC3B7rS,KAAK+6S,QAAU,IACjB,EAEF,MAAMC,WAAY52B,GAChB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,OAAO,GAC3B7rS,KAAKi7S,MAAQ,KACbj7S,KAAKw1Q,IAAM,IACb,EAEF,MAAM0lC,WAAY92B,GAChB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyiS,GAAc,OAAO,GAC3B7rS,KAAK0C,KAAOmiQ,EAAWniQ,KAAOmiQ,EAAWniQ,KAAK8lQ,OAAS,GACvDxoQ,KAAK4xS,YAAc,KACnB5xS,KAAK6xS,UAAY,KACjB7xS,KAAKogR,SAAW,KAChBpgR,KAAK+7Q,IAAM,IACb,EAEF,MAAMo/B,GACJ,OAAQ9/B,IAAiB34Q,EAAMmiQ,GAC7B,GAAIs2C,GAAgBn3S,eAAetB,GACjC,OAAOy4S,GAAgBz4S,GAAMmiQ,EAGjC,CACA,cAAOupC,CAAQjF,GACb,OAAO,IAAI2C,GAAQ3C,EACrB,CACA,eAAO4C,CAAS5C,GACd,OAAO,IAAIiD,GAASjD,EACtB,CACA,qBAAOmD,CAAenD,GACpB,OAAO,IAAImD,GAAenD,EAC5B,CACA,sBAAOoD,CAAgBpD,GACrB,OAAO,IAAIoD,GAAgBpD,EAC7B,CACA,qBAAO8O,CAAe9O,GACpB,OAAO,IAAIqD,GAAerD,EAC5B,CACA,2BAAO+Q,CAAqB/Q,GAC1B,OAAO,IAAIsD,GAAqBtD,EAClC,CACA,iBAAO2F,CAAW3F,GAChB,OAAO,IAAIuD,GAAWvD,EACxB,CACA,0BAAOoL,CAAoBpL,GACzB,OAAO,IAAIwD,GAAoBxD,EACjC,CACA,YAAOoF,CAAMpF,GACX,OAAO,IAAIyD,GAAMzD,EACnB,CACA,kBAAO6H,CAAY7H,GACjB,OAAO,IAAI0D,GAAY1D,EACzB,CACA,UAAO+L,CAAI/L,GACT,OAAO,IAAI2D,GAAI3D,EACjB,CACA,WAAOntD,CAAKmtD,GACV,OAAO,IAAI4D,GAAY5D,EACzB,CACA,iBAAOtkC,CAAWskC,GAChB,OAAO,IAAI6D,GAAW7D,EACxB,CACA,eAAO6C,CAAS7C,GACd,OAAO,IAAI8D,GAAS9D,EACtB,CACA,WAAO/9Q,CAAK+9Q,GACV,OAAO,IAAI+D,GAAK/D,EAClB,CACA,kBAAOyI,CAAYzI,GACjB,OAAO,IAAIgE,GAAYhE,EACzB,CACA,uBAAOgN,CAAiBhN,GACtB,OAAO,IAAIiE,GAAiBjE,EAC9B,CACA,YAAOr0D,CAAMq0D,GACX,OAAO,IAAIkE,GAAMlE,EACnB,CACA,aAAOoM,CAAOpM,GACZ,OAAO,IAAIoE,GAAOpE,EACpB,CACA,aAAO8C,CAAO9C,GACZ,OAAO,IAAIqE,GAAOrE,EACpB,CACA,eAAOiS,CAASjS,GACd,OAAO,IAAI0E,GAAS1E,EACtB,CACA,+BAAO8E,CAAyB9E,GAC9B,OAAO,IAAI2E,GAAyB3E,EACtC,CACA,2BAAO+E,CAAqB/E,GAC1B,OAAO,IAAI4E,GAAqB5E,EAClC,CACA,kBAAO3qD,CAAY2qD,GACjB,OAAO,IAAI6E,GAAY7E,EACzB,CACA,aAAOv4B,CAAOu4B,GACZ,OAAO,IAAIgF,GAAOhF,EACpB,CACA,kBAAOgM,CAAYhM,GACjB,OAAO,IAAIqF,GAAYrF,EACzB,CACA,kBAAOqM,CAAYrM,GACjB,OAAO,IAAIsF,GAAYtF,EACzB,CACA,aAAOiN,CAAOjN,GACZ,OAAO,IAAIuF,GAAOvF,EACpB,CACA,cAAO92B,CAAQ82B,GACb,OAAO,IAAIwF,GAAQxF,EACrB,CACA,kBAAOwO,CAAYxO,GACjB,OAAO,IAAIyF,GAAYzF,EACzB,CACA,WAAOpvR,CAAKovR,GACV,OAAO,IAAI0F,GAAK1F,EAClB,CACA,YAAO8R,CAAM9R,GACX,OAAO,IAAIkG,GAAMlG,EACnB,CACA,sBAAO8H,CAAgB9H,GACrB,OAAO,IAAImG,GAAgBnG,EAC7B,CACA,kBAAOiK,CAAYjK,GACjB,OAAO,IAAIqG,GAAYrG,EACzB,CACA,uBAAOsM,CAAiBtM,GACtB,OAAO,IAAIsG,GAAiBtG,EAC9B,CACA,aAAOsN,CAAOtN,GACZ,OAAO,IAAIuG,GAAOvG,EACpB,CACA,mBAAOgR,CAAahR,GAClB,OAAO,IAAIwG,GAAaxG,EAC1B,CACA,oBAAOkD,CAAclD,GACnB,OAAO,IAAIyG,GAAczG,EAC3B,CACA,YAAO2H,CAAM3H,GACX,OAAO,IAAI0G,GAAM1G,EACnB,CACA,cAAOp6B,CAAQo6B,GACb,OAAO,IAAI2G,GAAe3G,EAC5B,CACA,iBAAOzU,CAAWyU,GAChB,OAAO,IAAI4G,GAAkB5G,EAC/B,CACA,sBAAO6G,CAAgB7G,GACrB,OAAO,IAAI8G,GAAgB9G,EAC7B,CACA,cAAOiR,CAAQjR,GACb,OAAO,IAAI+G,GAAQ/G,EACrB,CACA,aAAOmJ,CAAOnJ,GACZ,OAAO,IAAIgH,GAAOhH,EACpB,CACA,kBAAOoJ,CAAYpJ,GACjB,OAAO,IAAImH,GAAYnH,EACzB,CACA,cAAOyO,CAAQzO,GACb,OAAO,IAAIuH,GAAQvH,EACrB,CACA,gBAAOiG,CAAUjG,GACf,OAAO,IAAIwH,GAAUxH,EACvB,CACA,gBAAO0I,CAAU1I,GACf,OAAO,IAAIyH,GAAUzH,EACvB,CACA,eAAO/oB,CAAS+oB,GACd,OAAO,IAAI0H,GAAgB1H,EAC7B,CACA,uBAAOuM,CAAiBvM,GACtB,OAAO,IAAIgI,GAAiBhI,EAC9B,CACA,kBAAOgQ,CAAYhQ,GACjB,OAAO,IAAIiI,GAAYjI,EACzB,CACA,cAAOiQ,CAAQjQ,GACb,OAAO,IAAIkI,GAAQlI,EACrB,CACA,wBAAOiM,CAAkBjM,GACvB,OAAO,IAAImI,GAAkBnI,EAC/B,CACA,sBAAO4F,CAAgB5F,GACrB,OAAO,IAAIoI,GAAgBpI,EAC7B,CACA,uBAAOkN,CAAiBlN,GACtB,OAAO,IAAIqI,GAAiBrI,EAC9B,CACA,kBAAOqL,CAAYrL,GACjB,OAAO,IAAIsI,GAAYtI,EACzB,CACA,UAAO8K,CAAI9K,GACT,OAAO,IAAIuI,GAAIvI,EACjB,CACA,mBAAOuN,CAAavN,GAClB,OAAO,IAAIwI,GAAaxI,EAC1B,CACA,aAAO3tO,CAAO2tO,GACZ,OAAO,IAAI2I,GAAO3I,EACpB,CACA,YAAO/vD,CAAM+vD,GACX,OAAO,IAAI4I,GAAM5I,EACnB,CACA,iBAAOsL,CAAWtL,GAChB,OAAO,IAAI6I,GAAW7I,EACxB,CACA,aAAO9Q,CAAO8Q,GACZ,OAAO,IAAI8I,GAAO9I,EACpB,CACA,gBAAOxtB,CAAUwtB,GACf,OAAO,IAAI+I,GAAU/I,EACvB,CACA,UAAO5hS,CAAI4hS,GACT,OAAO,IAAIgJ,GAAIhJ,EACjB,CACA,UAAOltR,CAAIktR,GACT,OAAO,IAAIkJ,GAAWlJ,EACxB,CACA,iBAAO+K,CAAW/K,GAChB,OAAO,IAAIqJ,GAAWrJ,EACxB,CACA,cAAOngS,CAAQmgS,GACb,OAAO,IAAIsJ,GAAetJ,EAC5B,CACA,gBAAOsE,CAAUtE,GACf,OAAO,IAAIyJ,GAAUzJ,EACvB,CACA,WAAOn/Q,CAAKm/Q,GACV,OAAO,IAAI0J,GAAK1J,EAClB,CACA,mBAAOwM,CAAaxM,GAClB,OAAO,IAAI2J,GAAa3J,EAC1B,CACA,YAAOuJ,CAAMvJ,GACX,OAAO,IAAI4J,GAAM5J,EACnB,CACA,eAAOkQ,CAASlQ,GACd,OAAO,IAAI6J,GAAS7J,EACtB,CACA,iBAAO+H,CAAW/H,GAChB,OAAO,IAAI8J,GAAW9J,EACxB,CACA,qBAAOkR,CAAelR,GACpB,OAAO,IAAI+J,GAAe/J,EAC5B,CACA,iBAAOt1B,CAAWs1B,GAChB,OAAO,IAAIgK,GAAWhK,EACxB,CACA,aAAOvvP,CAAOuvP,GACZ,OAAO,IAAIkK,GAAOlK,EACpB,CACA,gBAAOgL,CAAUhL,GACf,OAAO,IAAImK,GAAUnK,EACvB,CACA,gBAAO6F,CAAU7F,GACf,OAAO,IAAIoK,GAAUpK,EACvB,CACA,gBAAOmN,CAAUnN,GACf,OAAO,IAAIqK,GAAUrK,EACvB,CACA,cAAO4R,CAAQ5R,GACb,OAAO,IAAIsK,GAAQtK,EACrB,CACA,iBAAOiL,CAAWjL,GAChB,OAAO,IAAIuK,GAAWvK,EACxB,CACA,gBAAOmR,CAAUnR,GACf,OAAO,IAAIwK,GAAUxK,EACvB,CACA,iBAAOoN,CAAWpN,GAChB,OAAO,IAAI0K,GAAW1K,EACxB,CACA,yBAAOqN,CAAmBrN,GACxB,OAAO,IAAI2K,GAAmB3K,EAChC,CACA,WAAOz8O,CAAKy8O,GACV,OAAO,IAAI4K,GAAK5K,EAClB,CACA,UAAOwN,CAAIxN,GACT,OAAO,IAAI6K,GAAI7K,EACjB,CACA,UAAOvtB,CAAIutB,GACT,OAAO,IAAImL,GAAInL,EACjB,CACA,WAAOuL,CAAKvL,GACV,OAAO,IAAI8L,GAAK9L,EAClB,CACA,kBAAO34B,CAAY24B,GACjB,OAAO,IAAIkM,GAAYlM,EACzB,CACA,wBAAOoR,CAAkBpR,GACvB,OAAO,IAAI2M,GAAkB3M,EAC/B,CACA,cAAOtX,CAAQsX,GACb,OAAO,IAAI4M,GAAe5M,EAC5B,CACA,wBAAOyM,CAAkBzM,GACvB,OAAO,IAAI6M,GAAkB7M,EAC/B,CACA,eAAO1hB,CAAS0hB,GACd,OAAO,IAAI8M,GAAS9M,EACtB,CACA,cAAOkF,CAAQlF,GACb,OAAO,IAAI+M,GAAQ/M,EACrB,CACA,YAAOj4B,CAAMi4B,GACX,OAAO,IAAI2N,GAAM3N,EACnB,CACA,uBAAO0M,CAAiB1M,GACtB,OAAO,IAAI4N,GAAiB5N,EAC9B,CACA,mBAAOqR,CAAarR,GAClB,OAAO,IAAI6N,GAAa7N,EAC1B,CACA,kBAAO+O,CAAY/O,GACjB,OAAO,IAAI8N,GAAY9N,EACzB,CACA,eAAOwL,CAASxL,GACd,OAAO,IAAI+N,GAAS/N,EACtB,CACA,SAAOlgE,CAAGkgE,GACR,OAAO,IAAIgO,GAAGhO,EAChB,CACA,YAAOxkR,CAAMwkR,GACX,OAAO,IAAIiO,GAAMjO,EACnB,CACA,aAAO3uE,CAAO2uE,GACZ,OAAO,IAAIkO,GAAOlO,EACpB,CACA,eAAO1e,CAAS0e,GACd,OAAO,IAAImO,GAASnO,EACtB,CACA,aAAOmQ,CAAOnQ,GACZ,OAAO,IAAIoO,GAAOpO,EACpB,CACA,mBAAOyL,CAAazL,GAClB,OAAO,IAAIqO,GAAarO,EAC1B,CACA,iBAAO0O,CAAW1O,GAChB,OAAO,IAAIsO,GAAWtO,EACxB,CACA,aAAOzV,CAAOyV,GACZ,OAAO,IAAIuO,GAAcvO,EAC3B,CACA,kBAAO0L,CAAY1L,GACjB,OAAO,IAAI2O,GAAY3O,EACzB,CACA,eAAOwJ,CAASxJ,GACd,OAAO,IAAI4O,GAAS5O,EACtB,CACA,kBAAO2L,CAAY3L,GACjB,OAAO,IAAI6O,GAAY7O,EACzB,CACA,aAAOkL,CAAOlL,GACZ,OAAO,IAAIgP,GAAOhP,EACpB,CACA,gBAAO8F,CAAU9F,GACf,OAAO,IAAIiP,GAAUjP,EACvB,CACA,gBAAOyP,CAAUzP,GACf,OAAO,IAAIkP,GAAUlP,EACvB,CACA,mBAAO4L,CAAa5L,GAClB,OAAO,IAAImP,GAAanP,EAC1B,CACA,gBAAOgD,CAAUhD,GACf,OAAO,IAAIoP,GAAUpP,EACvB,CACA,kBAAO4H,CAAY5H,GACjB,OAAO,IAAIqP,GAAYrP,EACzB,CACA,qBAAOuE,CAAevE,GACpB,OAAO,IAAIsP,GAAetP,EAC5B,CACA,aAAO6L,CAAO7L,GACZ,OAAO,IAAIuP,GAAOvP,EACpB,CACA,eAAOprQ,CAASorQ,GACd,OAAO,IAAIwP,GAAgBxP,EAC7B,CACA,oBAAOmE,CAAcnE,GACnB,OAAO,IAAI4P,GAAc5P,EAC3B,CACA,gBAAOiJ,CAAUjJ,GACf,OAAO,IAAI0P,GAAU1P,EACvB,CACA,SAAOkH,CAAGlH,GACR,OAAO,IAAI2P,GAAG3P,EAChB,CACA,YAAOmF,CAAMnF,GACX,OAAO,IAAI8P,GAAM9P,EACnB,CACA,gBAAOn8R,CAAUm8R,GACf,OAAO,IAAI+P,GAAU/P,EACvB,CACA,WAAO5kS,CAAK4kS,GACV,OAAO,IAAI3xO,GAAK2xO,EAClB,CACA,UAAO3zB,CAAI2zB,GACT,OAAO,IAAIqQ,GAAIrQ,EACjB,CACA,eAAOtsB,CAASssB,GACd,OAAO,IAAIsQ,GAAgBtQ,EAC7B,CACA,iCAAO+C,CAA2B/C,GAChC,OAAO,IAAIuQ,GAA2BvQ,EACxC,CACA,0BAAOwE,CAAoBxE,GACzB,OAAO,IAAIwQ,GAAoBxQ,EACjC,CACA,cAAOrnS,CAAQqnS,GACb,OAAO,IAAIyQ,GAAQzQ,EACrB,CACA,qBAAOyE,CAAezE,GACpB,OAAO,IAAI0Q,GAAe1Q,EAC5B,CACA,wBAAOz1B,CAAkBy1B,GACvB,OAAO,IAAI8Q,GAAkB9Q,EAC/B,CACA,gBAAOyN,CAAUzN,GACf,OAAO,IAAIsR,GAAUtR,EACvB,CACA,iBAAOoQ,CAAWpQ,GAChB,OAAO,IAAIuR,GAAWvR,EACxB,CACA,aAAO+F,CAAO/F,GACZ,OAAO,IAAIwR,GAAOxR,EACpB,CACA,UAAOptB,CAAIotB,GACT,OAAO,IAAI0R,GAAI1R,EACjB,CACA,UAAOntB,CAAImtB,GACT,OAAO,IAAI2R,GAAI3R,EACjB,CACA,UAAOgG,CAAIhG,GACT,OAAO,IAAI6R,GAAI7R,EACjB,CACA,UAAO0N,CAAI1N,GACT,OAAO,IAAI+R,GAAI/R,EACjB,EAMF,MAAMkS,GAAuB//B,GAAaE,cAAc3/O,GACxD,MAAMy/Q,WAAsBl3B,GAC1B,WAAAn7Q,CAAY47P,GACVz7P,MAAMiyS,GAAsB,iBAAiB,GAC7Cr7S,KAAKu7S,eAAiB,IAAI/2B,GAC1BxkR,KAAKw7S,cAAgB,IAAIh3B,GACzBxkR,KAAKy7S,cAAgB,IAAIj3B,EAC3B,EAEF,MAAMk3B,WAA6Bt3B,GACjC,WAAAn7Q,CAAY47P,GACVz7P,MAAMiyS,GAAsB,wBAC5Br7S,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMo2B,WAA8Bv3B,GAClC,WAAAn7Q,CAAY47P,GACVz7P,MAAMiyS,GAAsB,yBAC5Br7S,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMq2B,WAAkBh1B,GACtB,WAAA39Q,CAAY47P,GACVz7P,MAAMiyS,GAAsB,aAC5Br7S,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAKi0B,MAAQ4wO,EAAW5wO,OAAS,GACjCj0B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAK45C,OAASirN,EAAWjrN,QAAU,GACnC55C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMs2B,WAAoBj1B,GACxB,WAAA39Q,CAAY47P,GACVz7P,MAAMiyS,GAAsB,eAC5Br7S,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMu2B,WAAmBl1B,GACvB,WAAA39Q,CAAY47P,GACVz7P,MAAMiyS,GAAsB,cAC5Br7S,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMw2B,WAAoBn1B,GACxB,WAAA39Q,CAAY47P,GACVz7P,MAAMiyS,GAAsB,eAC5Br7S,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAMy2B,WAA2Bp1B,GAC/B,WAAA39Q,CAAY47P,GACVz7P,MAAMiyS,GAAsB,OAC5Br7S,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAM02B,WAAoBr1B,GACxB,WAAA39Q,CAAY47P,GACVz7P,MAAMiyS,GAAsB,eAC5Br7S,KAAK67B,GAAKgpO,EAAWhpO,IAAM,GAC3B77B,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKslR,IAAMzgB,EAAWygB,KAAO,GAC7BtlR,KAAKulR,QAAU1gB,EAAW0gB,SAAW,EACvC,EAEF,MAAM22B,WAAuB93B,GAC3B,WAAAn7Q,CAAY47P,GACVz7P,MAAMiyS,GAAsB,kBAAkB,GAC9Cr7S,KAAKm8S,gBAAkBt3C,EAAWs3C,iBAAmB,GACrDn8S,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKo8S,qBAAuB,KAC5Bp8S,KAAKq8S,sBAAwB,KAC7Br8S,KAAKo3O,UAAY,KACjBp3O,KAAKs8S,WAAa,KAClBt8S,KAAKu8S,YAAc,KACnBv8S,KAAKw8S,YAAc,IACrB,EAEF,MAAMC,WAAsBr4B,GAC1B,WAAAn7Q,CAAY47P,GACVz7P,MAAMiyS,GAAsB,iBAAiB,GAC7Cr7S,KAAKm8S,gBAAkBt3C,EAAWs3C,iBAAmB,GACrDn8S,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAKw1Q,IAAM,IACb,EAEF,MAAMknC,WAAsBt4B,GAC1B,WAAAn7Q,CAAY47P,GACVz7P,MAAMiyS,GAAsB,iBAAiB,GAC7Cr7S,KAAKm8S,gBAAkBt3C,EAAWs3C,iBAAmB,GACrDn8S,KAAK0C,KAAOmiQ,EAAWniQ,MAAQ,GAC/B1C,KAAK28S,YAAc,KACnB38S,KAAKw1Q,IAAM,IACb,EAEF,MAAMonC,GACJ,OAAQvhC,IAAiB34Q,EAAMmiQ,GAC7B,GAAI+3C,GAAuB54S,eAAetB,GACxC,OAAOk6S,GAAuBl6S,GAAMmiQ,EAGxC,CACA,oBAAO2W,CAAc2tB,GACnB,OAAO,IAAImS,GAAcnS,EAC3B,CACA,2BAAOiT,CAAqBjT,GAC1B,OAAO,IAAIuS,GAAqBvS,EAClC,CACA,4BAAOkT,CAAsBlT,GAC3B,OAAO,IAAIwS,GAAsBxS,EACnC,CACA,gBAAO/xD,CAAU+xD,GACf,OAAO,IAAIyS,GAAUzS,EACvB,CACA,kBAAOwT,CAAYxT,GACjB,OAAO,IAAI0S,GAAY1S,EACzB,CACA,iBAAOmT,CAAWnT,GAChB,OAAO,IAAI2S,GAAW3S,EACxB,CACA,kBAAOoT,CAAYpT,GACjB,OAAO,IAAI4S,GAAY5S,EACzB,CACA,UAAO3zB,CAAI2zB,GACT,OAAO,IAAI6S,GAAmB7S,EAChC,CACA,kBAAOqT,CAAYrT,GACjB,OAAO,IAAI8S,GAAY9S,EACzB,CACA,qBAAOoS,CAAepS,GACpB,OAAO,IAAI+S,GAAe/S,EAC5B,CACA,oBAAOqS,CAAcrS,GACnB,OAAO,IAAIsT,GAActT,EAC3B,CACA,oBAAOsS,CAActS,GACnB,OAAO,IAAIuT,GAAcvT,EAC3B,EAOF,MAAM0T,GAAiBvhC,GAAaG,SAAS5/O,GAC7C,MAAMihR,WAAsBv4B,GAC1B,WAAAt7Q,CAAY47P,GACVz7P,MAAMyzS,GAAgB,OAAQh4C,EAChC,CACA,CAAC2U,MACC,OAAO,CACT,EAEF,MAAMujC,WAAiB34B,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAMyzS,GAAgB,YAAY,GAClC78S,KAAK+Z,KAAO,KACZ/Z,KAAKgmS,UAAY,IACnB,CACA,CAAC/rB,IAAUxT,GACT,MAAM/jQ,EAAO+jQ,EAAMsT,KACN,SAATr3Q,GAAmB+jQ,EAAMqT,MAAkB+iC,IAA2B,cAATn6S,GAAwB+jQ,EAAMqT,MAAkBwB,GAAa7tD,UAAU5xL,MACtI77B,KAAK0C,GAAQ+jQ,GAEfzmQ,KAAKm3Q,IAAc1Q,EACrB,EAEF,MAAMu2C,GACJ,OAAQ3hC,IAAiB34Q,EAAMmiQ,GAC7B,GAAIm4C,GAAkBh5S,eAAetB,GACnC,OAAOs6S,GAAkBt6S,GAAMmiQ,EAGnC,CACA,eAAO4W,CAAS5W,GACd,OAAO,IAAIk4C,GAASl4C,EACtB,CACA,WAAO9qP,CAAK8qP,GACV,OAAO,IAAIi4C,GAAcj4C,EAC3B,EAOF,MAAMo4C,GAAmB3hC,GAAaK,UAAU9/O,GAChD,MAAMqhR,WAAwB94B,GAC5B,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,mBAAmB,GAC3Cj9S,KAAK0C,KAAO,YACZ1C,KAAKm9S,SAAW,IAAI34B,GAAe,GACnCxkR,KAAKo9S,SAAW,KAChBp9S,KAAKq9S,cAAgB,KACrBr9S,KAAKs9S,WAAa,IAAI94B,GAAe,EACvC,EAEF,MAAM+4B,WAAuB32B,GAC3B,WAAA39Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,kBACxBj9S,KAAK0C,KAAOs6Q,GAAgBnY,EAAWniQ,KAAM,CAAC,SAAU,UAAW,WACrE,EAEF,MAAM86S,WAAwBp5B,GAC5B,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,mBAAmB,GAC3Cj9S,KAAKy9S,eAAiB,IAAIj5B,GAAe,EAC3C,EAEF,MAAMk5B,WAAoB92B,GACxB,WAAA39Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,eACxBj9S,KAAK0C,KAAOs6Q,GAAgBnY,EAAWniQ,KAAM,CAAC,OAAQ,OAAQ,MAAO,SACvE,EAEF,MAAMi7S,WAAqBv5B,GACzB,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,gBAAgB,GACxCj9S,KAAK49S,YAAc,IAAIp5B,GAAe,EACxC,EAEF,MAAMq5B,WAAwBn3B,GAC5B,WAAAz9Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,kBAC1B,EAEF,MAAMa,WAAYl3B,GAChB,WAAA39Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,MAC1B,EAEF,MAAMc,WAAiB35B,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,YAAY,GACpCj9S,KAAKg+S,KAAOrhC,GAAW,CACrB5iQ,KAAM8qP,EAAWm5C,KACjBphC,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKi+S,IAAM,IAAIz5B,GAAe,EAChC,EAEF,MAAM05B,WAAYt3B,GAChB,WAAA39Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,MAC1B,EAEF,MAAMkB,WAAiB/5B,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,YAAY,GACpCj9S,KAAKo+S,IAAM,IAAI55B,GAAe,EAChC,EAEF,MAAM65B,WAA0Bj6B,GAC9B,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,UAAU,GAClCj9S,KAAKskQ,KAAOO,EAAWP,MAAQ,GAC/BtkQ,KAAK0C,KAAO,UACZ1C,KAAKs+S,gBAAkB,KACvBt+S,KAAKu+S,gBAAkB,KACvBv+S,KAAKw+S,aAAe,KACpBx+S,KAAKy+S,gBAAkB,KACvBz+S,KAAK0+S,eAAiB,KACtB1+S,KAAK2+S,cAAgB,KACrB3+S,KAAK4+S,aAAe,KACpB5+S,KAAK6+S,UAAY,IACnB,EAEF,MAAMC,WAA6B16B,GACjC,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,aAAa,GACrCj9S,KAAKq4R,OAAS,IAAI7T,EACpB,EAEF,MAAMu6B,WAAiBn4B,GACrB,WAAA39Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,WAC1B,EAEF,MAAM+B,WAAsB56B,GAC1B,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,iBAAiB,GACzCj9S,KAAKi/S,SAAW,IAAIz6B,GAAe,EACrC,EAEF,MAAM06B,WAAct4B,GAClB,WAAA39Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,QAC1B,EAEF,MAAMkC,WAAmB/6B,GACvB,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,cAAc,GACtCj9S,KAAKg+S,KAAOrhC,GAAW,CACrB5iQ,KAAM8qP,EAAWm5C,KACjBphC,aAAc,EACdC,SAAU9sQ,GAAW,IAANA,IAEjB/P,KAAKo/S,MAAQ,IAAI56B,GAAe,GAClC,EAEF,MAAM66B,WAAsBz4B,GAC1B,WAAA39Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,iBACxBj9S,KAAK0C,KAAOs6Q,GAAgBnY,EAAWniQ,KAAM,CAAC,OAAQ,OAAQ,MAAO,SACvE,EAEF,MAAM48S,WAAuBl7B,GAC3B,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,kBAAkB,GAC1Cj9S,KAAKu/S,cAAgB,IAAI/6B,GAAe,EAC1C,EAEF,MAAMg7B,WAAqB54B,GACzB,WAAA39Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,gBACxBj9S,KAAK0C,KAAOs6Q,GAAgBnY,EAAWniQ,KAAM,CAAC,UAAW,WAAY,UAAW,QAAS,QAC3F,EAEF,MAAM+8S,WAAsBr7B,GAC1B,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,iBAAiB,GACzCj9S,KAAK0/S,aAAe,IAAIl7B,GAAe,EACzC,EAEF,MAAMm7B,WAAoB/4B,GACxB,WAAA39Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,eACxBj9S,KAAK0C,KAAOs6Q,GAAgBnY,EAAWniQ,KAAM,CAAC,OAAQ,OAAQ,MAAO,SACvE,EAEF,MAAMk9S,WAAqBx7B,GACzB,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,gBAAgB,GACxCj9S,KAAK6/S,YAAc,IAAIr7B,GAAe,EACxC,EAEF,MAAMs7B,WAAiB17B,GACrB,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,YAAY,GACpCj9S,KAAK0C,KAAyB,GAAlBmiQ,EAAWniQ,IACzB,EAEF,MAAMq9S,WAAkB37B,GACtB,WAAAn7Q,CAAY47P,GACVz7P,MAAM6zS,GAAkB,aAAa,GACrCj9S,KAAKggT,SAAW,IAAIx7B,EACtB,EAEF,MAAMy7B,GACJ,OAAQ5kC,IAAiB34Q,EAAMmiQ,GAC7B,GAAIo7C,GAAmBj8S,eAAetB,GACpC,OAAOu9S,GAAmBv9S,GAAMmiQ,EAGpC,CACA,sBAAOy5C,CAAgBnV,GACrB,OAAO,IAAI+T,GAAgB/T,EAC7B,CACA,qBAAOsU,CAAetU,GACpB,OAAO,IAAIoU,GAAepU,EAC5B,CACA,sBAAOoV,CAAgBpV,GACrB,OAAO,IAAIqU,GAAgBrU,EAC7B,CACA,kBAAOyU,CAAYzU,GACjB,OAAO,IAAIuU,GAAYvU,EACzB,CACA,mBAAOqV,CAAarV,GAClB,OAAO,IAAIwU,GAAaxU,EAC1B,CACA,sBAAOsV,CAAgBtV,GACrB,OAAO,IAAI0U,GAAgB1U,EAC7B,CACA,UAAO8U,CAAI9U,GACT,OAAO,IAAI2U,GAAI3U,EACjB,CACA,eAAOgU,CAAShU,GACd,OAAO,IAAI4U,GAAS5U,EACtB,CACA,UAAOiV,CAAIjV,GACT,OAAO,IAAI+U,GAAI/U,EACjB,CACA,eAAOiU,CAASjU,GACd,OAAO,IAAIgV,GAAShV,EACtB,CACA,aAAO9Q,CAAO8Q,GACZ,OAAO,IAAIkV,GAAkBlV,EAC/B,CACA,gBAAOxtB,CAAUwtB,GACf,OAAO,IAAI2V,GAAqB3V,EAClC,CACA,eAAO8V,CAAS9V,GACd,OAAO,IAAI4V,GAAS5V,EACtB,CACA,oBAAOkU,CAAclU,GACnB,OAAO,IAAI6V,GAAc7V,EAC3B,CACA,YAAOiW,CAAMjW,GACX,OAAO,IAAI+V,GAAM/V,EACnB,CACA,iBAAOmU,CAAWnU,GAChB,OAAO,IAAIgW,GAAWhW,EACxB,CACA,oBAAOoW,CAAcpW,GACnB,OAAO,IAAIkW,GAAclW,EAC3B,CACA,qBAAOuV,CAAevV,GACpB,OAAO,IAAImW,GAAenW,EAC5B,CACA,mBAAOuW,CAAavW,GAClB,OAAO,IAAIqW,GAAarW,EAC1B,CACA,oBAAOwV,CAAcxV,GACnB,OAAO,IAAIsW,GAActW,EAC3B,CACA,kBAAO0W,CAAY1W,GACjB,OAAO,IAAIwW,GAAYxW,EACzB,CACA,mBAAOyV,CAAazV,GAClB,OAAO,IAAIyW,GAAazW,EAC1B,CACA,eAAO6W,CAAS7W,GACd,OAAO,IAAI2W,GAAS3W,EACtB,CACA,gBAAO0V,CAAU1V,GACf,OAAO,IAAI4W,GAAU5W,EACvB,EAMF,MAAM+W,GAAkB5kC,GAAa7tD,UAAU5xL,GAC/C,MAAMskR,WAA4B/7B,GAChC,WAAAn7Q,CAAY47P,GACVz7P,MAAM82S,GAAiB,aAAa,EACtC,EAEF,MAAME,GACJ,OAAQ/kC,IAAiB34Q,EAAMmiQ,GAC7B,GAAIu7C,GAAmBp8S,eAAetB,GACpC,OAAO09S,GAAmB19S,GAAMmiQ,EAGpC,CACA,gBAAOp3C,CAAUo3C,GACf,OAAO,IAAIs7C,GAAoBt7C,EACjC,EAMF,MAAMw7C,GAAmB/kC,GAAaQ,WAAWjgP,GACjD,MAAMykR,WAAmBl8B,GACvB,WAAAn7Q,CAAY47P,GACVz7P,MAAMi3S,GAAkB,cAAc,EACxC,EAEF,MAAME,GACJ,OAAQllC,IAAiB34Q,EAAMmiQ,GAC7B,GAAI07C,GAAoBv8S,eAAetB,GACrC,OAAO69S,GAAoB79S,GAAMmiQ,EAGrC,CACA,iBAAOiX,CAAWjX,GAChB,OAAO,IAAIy7C,GAAWz7C,EACxB,EAOF,MAAM27C,GAAYllC,GAAaU,IAAIngP,GACnC,MAAM4kR,WAAgBr8B,GACpB,WAAAn7Q,CAAY47P,GACVz7P,MAAMo3S,GAAW,OAAO,GACxBxgT,KAAK0gT,KAAO77C,EAAW67C,MAAQ,GAC/B1gT,KAAK09R,UAAY74B,EAAW64B,WAAa,GACzC19R,KAAK4wQ,OAAS,KACd5wQ,KAAKw7Q,cAAgB,KACrBx7Q,KAAKy7Q,SAAW,KAChBz7Q,KAAK27Q,UAAY,KACjB37Q,KAAK87Q,WAAa,IAAI0I,GACtBxkR,KAAK+9B,SAAW,IAClB,CACA,CAACm8O,IAAezT,GACd,MAAM8U,EAAKD,GAAa7U,EAAMsT,KAC9B,OAAOwB,GAAM9U,EAAMqT,MAAkByB,EAAG1/O,EAC1C,EAEF,MAAM8kR,GACJ,OAAQtlC,IAAiB34Q,EAAMmiQ,GAC7B,GAAI87C,GAAa38S,eAAetB,GAC9B,OAAOi+S,GAAaj+S,GAAMmiQ,EAG9B,CACA,UAAOmX,CAAInX,GACT,OAAO,IAAI47C,GAAQ57C,EACrB,EASF,MAAM+7C,GAActlC,GAAaY,MAAMrgP,GACjCglR,GAAY9tS,SACZ+tS,GAAe,IAAIxqS,IAAI,CAAC,QAAS,OAAQ,cAAe,YAAa,eAAgB,aAAc,cAAe,SAAU,gBAAiB,cAAe,eAAgB,aAAc,iBAAkB,cAAe,UAAW,mBAAoB,oBAAqB,oBAAqB,eAAgB,WAAY,aAAc,kBAAmB,cAAe,iBAAkB,SAAU,eAAgB,4BAA6B,0BAA2B,eAAgB,kBACpeyqS,GAAe,IAAIptS,IAAI,CAAC,CAAC,mBAAoB,cAAe,CAAC,oBAAqB,eAAgB,CAAC,oBAAqB,eAAgB,CAAC,eAAgBhL,GAAmB,SAAVA,EAAmB,OAAS,UAAW,CAAC,4BAA6BA,GAAS,UAAUyB,KAAK2D,IAAI,EAAG3D,KAAKC,IAAI6L,SAASvN,GAAS,MAAMoW,QAAQ,OAAQ,CAAC,0BAA2BpW,GAAS,UAAUyB,KAAK2D,IAAI,EAAG3D,KAAKC,IAAI6L,SAASvN,GAAS,MAAMoW,QAAQ,OAAQ,CAAC,eAAgB,IAAK,CAAC,gBAAiB,IAAK,CAAC,YAAa,CAACpW,EAAOq4S,IAEne/5B,GAAgB,KADvBt+Q,EAAQq4S,EAAS/uD,SAAW7nP,KAAK6F,IAAIgtQ,GAAet0Q,OAElD,CAAC,iBAAkBA,GAASs+Q,GAAgBhK,GAAet0Q,KAAU,CAAC,cAAeA,GAASs+Q,GAAgBhK,GAAet0Q,KAAU,CAAC,SAAUA,GAASs+Q,GAAgBhK,GAAet0Q,KAAU,CAAC,gBAAiBA,GAASs+Q,GAAgBhK,GAAet0Q,KAAU,CAAC,cAAeA,GAASs+Q,GAAgBhK,GAAet0Q,KAAU,CAAC,eAAgBA,GAASs+Q,GAAgBhK,GAAet0Q,KAAU,CAAC,aAAcA,GAASs+Q,GAAgBhK,GAAet0Q,KAAU,CAAC,cAAeA,GAASs+Q,GAAgBhK,GAAet0Q,KAAU,CAAC,cAAeA,GAASA,GAAQ,CAAC,iBAAkBA,GAASs+Q,GAAgBhK,GAAet0Q,OAC1mBs4S,GAAe,OACfC,GAAa,WACbC,GAAwB,SAC9B,SAASC,GAASC,EAAUzzQ,EAAM0zQ,GAChC,MAAM9nE,EAAQ91O,OAAOwP,OAAO,MAC5B,IAAKmuS,EACH,OAAO7nE,EAET,MAAMwnE,EAAWt9S,OAAOwP,OAAO,MAC/B,IAAK,MAAO1P,EAAKmF,KAAU04S,EAASrlS,MAAM,KAAKC,KAAIwX,GAAKA,EAAEzX,MAAM,IAAK,KAAK,CACxE,MAAM2lN,EAAUo/E,GAAal9S,IAAIL,GACjC,GAAgB,KAAZm+N,EACF,SAEF,IAAI4/E,EAAW54S,EACXg5N,IACF4/E,EAA8B,iBAAZ5/E,EAAuBA,EAAUA,EAAQh5N,EAAOq4S,IAEhEx9S,EAAIq7Q,SAAS,SACfrlC,EAAMxsO,UAAYwsO,EAAMxsO,UAAY,GAAGwsO,EAAMh2O,MAAQ+9S,IAAaA,EAElE/nE,EAAMh2O,EAAIsN,WAAW,gBAAgB,CAACywC,EAAGxxC,IAAMA,EAAE0N,iBAAkB8jS,CAEvE,CASA,GARI/nE,EAAM77N,YACRutQ,GAAc,CACZ9L,SAAU5lC,EAAM77N,WAChBU,OAAQm7N,EAAMr7N,YAAc,SAC5BkhQ,QAAS7lC,EAAMolD,WAAa,SAC5B3qR,KAAM+sS,EAAS/uD,UAAY,GAC1BrkN,EAAMA,EAAKmrO,IAAayG,WAAYhmC,GAErC8nE,GAAY9nE,EAAMglD,eAAyC,QAAxBhlD,EAAMglD,eAA2BhlD,EAAMyY,SAAU,CACtF,MAAMuvD,EAA0B,KAC1BC,EAAkB,KAClBxvD,EAAWgrB,GAAezjC,EAAMyY,UACtCzY,EAAMyY,SAAWg1B,GAAgBh1B,EAAWuvD,GAC5ChoE,EAAMglD,cAAgBvX,GAAgB78Q,KAAKonB,KAAKyrP,GAAezjC,EAAMglD,gBAAkBvsC,EAAWwvD,EACpG,CAKA,OAJIH,GAAY9nE,EAAMyY,WACpBzY,EAAMyY,SAAW,QAAQzY,EAAMyY,mCAEjCk4B,GAAc3wC,GACPA,CACT,CAYA,MAAMkoE,GAAW,IAAIprS,IAAI,CAAC,OAAQ,SAClC,MAAMqrS,WAAoBp9B,GACxB,WAAAt7Q,CAAY47P,EAAYniQ,GACtB0G,MAAMw3S,GAAal+S,GACnB1C,KAAK6gT,KAAa,EAClB7gT,KAAKw5O,MAAQqrB,EAAWrrB,OAAS,EACnC,CACA,CAAC69B,IAAQj1C,GAlBX,IAAoBx0L,EAmBhBxkC,MAAMiuQ,IAAQj1C,GACdpiO,KAAKw5O,OApBW5rM,EAoBQ5tC,MAnBhBw5O,MAGH5rM,EAAK4rM,MAAMgvB,OAAOxsP,MAAM,WAAWwX,QAAOC,KAAOA,IAAGxX,KAAIwX,GAAKA,EAAEzX,MAAM,UAAW,KAAIwX,QAAO,EAAEhwB,EAAKmF,MAC3F,gBAARnF,GACFoqC,EAAKmrO,IAAaulB,cAAc9nR,IAAI7N,GAE/Bm4S,GAAa9rS,IAAIxR,MACvByY,KAAIkrR,GAAMA,EAAG38R,KAAK,OAAMA,KAAK,KAPvB,EAmBT,CACA,CAACysQ,MACC,OAAQyqC,GAAS1sS,IAAIhV,KAAK+5Q,IAC5B,CACA,CAACI,IAASzvQ,EAAK42S,GAAW,GACnBA,EAMHthT,KAAK6gT,KAAa,GALlBn2S,EAAMA,EAAIoG,WAAWowS,GAAY,IAC5BlhT,KAAKw5O,MAAM1tO,SAAS,sBACvBpB,EAAMA,EAAIoG,WAAWmwS,GAAc,OAKnCv2S,IACF1K,KAAK03Q,KAAahtQ,EAEtB,CACA,CAAC0vQ,IAAakO,EAASs5B,GAAU,GAC/B,MAAMziC,EAAUz7Q,OAAOwP,OAAO,MACxBqsQ,EAAS,CACbG,IAAK59N,IACL69N,OAAQ79N,IACRiH,KAAMjH,IACN89N,MAAO99N,KAET,IAAI40K,EAAa,KACjB,IAAK,MAAOlzN,EAAKmF,KAAU3I,KAAKw5O,MAAMx9N,MAAM,KAAKC,KAAIwX,GAAKA,EAAEzX,MAAM,IAAK,KACrE,OAAQxY,GACN,IAAK,cACH27Q,EAAQC,SAAW1C,GAAY/zQ,GAC/B,MACF,IAAK,YACHw2Q,EAAQlrQ,KAAOgpQ,GAAet0Q,GAC9B,MACF,IAAK,cACHw2Q,EAAQ9gQ,OAAS1V,EACjB,MACF,IAAK,aACHw2Q,EAAQE,QAAU12Q,EAClB,MACF,IAAK,iBACHw2Q,EAAQU,cAAgB5C,GAAet0Q,GACvC,MACF,IAAK,SACH,MAAMmM,EAASnM,EAAMqT,MAAM,OAAOC,KAAIlM,GAAKktQ,GAAeltQ,KAC1D,OAAQ+E,EAAOvU,QACb,KAAK,EACHg/Q,EAAOG,IAAMH,EAAOI,OAASJ,EAAOx2N,KAAOw2N,EAAOK,MAAQ9qQ,EAAO,GACjE,MACF,KAAK,EACHyqQ,EAAOG,IAAMH,EAAOI,OAAS7qQ,EAAO,GACpCyqQ,EAAOx2N,KAAOw2N,EAAOK,MAAQ9qQ,EAAO,GACpC,MACF,KAAK,EACHyqQ,EAAOG,IAAM5qQ,EAAO,GACpByqQ,EAAOI,OAAS7qQ,EAAO,GACvByqQ,EAAOx2N,KAAOw2N,EAAOK,MAAQ9qQ,EAAO,GACpC,MACF,KAAK,EACHyqQ,EAAOG,IAAM5qQ,EAAO,GACpByqQ,EAAOx2N,KAAOj0C,EAAO,GACrByqQ,EAAOI,OAAS7qQ,EAAO,GACvByqQ,EAAOK,MAAQ9qQ,EAAO,GAG1B,MACF,IAAK,aACHyqQ,EAAOG,IAAMzC,GAAet0Q,GAC5B,MACF,IAAK,gBACH42Q,EAAOI,OAAS1C,GAAet0Q,GAC/B,MACF,IAAK,cACH42Q,EAAOx2N,KAAOk0N,GAAet0Q,GAC7B,MACF,IAAK,eACH42Q,EAAOK,MAAQ3C,GAAet0Q,GAC9B,MACF,IAAK,cACH+tN,EAAaumD,GAAet0Q,GAKlC,GADA2/Q,EAAQpI,SAASf,EAASI,EAAQ7oD,GAC9B12N,KAAK03Q,IACP4Q,EAAQ3H,UAAU3gR,KAAK03Q,UAEvB,IAAK,MAAMjR,KAASzmQ,KAAKy4Q,MACE,UAArBhS,EAAMsT,IAIVtT,EAAM2T,IAAakO,GAHjBA,EAAQ3H,UAAUla,EAAMiR,KAM1BkqC,GACFt5B,EAAQjI,SAEZ,CACA,CAACpF,IAAS8J,GACR,MAAMt3O,EAAW,GAKjB,GAJAztC,KAAK63Q,IAAU,CACbpqO,YAEFztC,KAAKo3Q,IAAiB,CAAC,GACC,IAApB3pO,EAASltC,SAAiBP,KAAK03Q,IACjC,OAAOiG,GAAWE,MAEpB,IAAIl1Q,EAMJ,OAJEA,EADE3I,KAAK6gT,IACC7gT,KAAK03Q,IAAY13Q,KAAK03Q,IAAU5mQ,WAAWqwS,GAAuB,WAAQ/9S,EAE1EpD,KAAK03Q,UAAat0Q,EAErBu6Q,GAAWG,QAAQ,CACxBp7Q,KAAM1C,KAAK+5Q,IACXlV,WAAY,CACV4Q,KAAMz1Q,KAAKy1Q,KACXj8B,MAAO4nE,GAASphT,KAAKw5O,MAAOx5O,KAAMA,KAAK6gT,MAEzCpzQ,WACA9kC,SAEJ,EAEF,MAAMqmB,WAAU2yR,GACd,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,KAClB7kQ,KAAKy1Q,KAAO0V,GAAOtmB,EAAW4Q,OAAS,EACzC,EAEF,MAAMxmP,WAAU0yR,GACd,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,IACpB,CACA,CAACuV,IAAakO,GACZA,EAAQu5B,SAAS,CACfxjS,OAAQ,SAEVjV,MAAMgxQ,IAAakO,GACnBA,EAAQjI,SACV,EAEF,MAAMyhC,WAAaH,GACjB,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,OACpB,CACA,CAACoW,IAAS8J,GACR,MAAMvgD,EAAMp7N,MAAM6xQ,IAAS8J,IACrB,KACJhH,GACEv5C,EACJ,OAAKu5C,GAGLA,EAAKr7Q,KAAO,MACZq7Q,EAAKlZ,WAAW8kB,MAAQ,CAAC,WAClBnlD,GAJEm5C,GAAWE,KAKtB,EAEF,MAAMkkC,WAAWJ,GACf,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,KACpB,CACA,CAACkW,MACC,MAAO,IACT,CACA,CAACX,IAAakO,GACZA,EAAQ3H,UAAU,KACpB,CACA,CAAC1F,IAAS8J,GACR,OAAOpH,GAAWG,QAAQ,CACxBp7Q,KAAM,MAEV,EAEF,MAAMs/S,WAAaL,GACjB,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,OACpB,CACA,CAACoW,IAAS8J,GACR,MAAMt3O,EAAW,GAKjB,GAJAztC,KAAK63Q,IAAU,CACbpqO,YAEFztC,KAAKo3Q,IAAiB,CAAC,GACC,IAApB3pO,EAASltC,OACX,OAAOo9Q,GAAWG,QAAQ,CACxBp7Q,KAAM,MACNmiQ,WAAY,CACV8kB,MAAO,CAAC,WACRnwC,MAAO,CAAC,GAEV7wO,MAAO3I,KAAK03Q,KAAa,KAG7B,GAAwB,IAApBjqO,EAASltC,OAAc,CACzB,MAAMkmQ,EAAQh5N,EAAS,GACvB,GAAIg5N,EAAM5B,YAAY8kB,MAAM79Q,SAAS,WACnC,OAAO6xQ,GAAWG,QAAQrX,EAE9B,CACA,OAAOkX,GAAWG,QAAQ,CACxBp7Q,KAAM,MACNmiQ,WAAY,CACV8kB,MAAO,CAAC,WACRnwC,MAAO,CAAC,GAEV/rM,YAEJ,EAEF,MAAMqhC,WAAU6yO,GACd,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,IACpB,CACA,CAACuV,IAAakO,GACZA,EAAQu5B,SAAS,CACfxiC,QAAS,WAEXj2Q,MAAMgxQ,IAAakO,GACnBA,EAAQjI,SACV,EAEF,MAAM4hC,WAAWN,GACf,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,KACpB,EAEF,MAAMq9C,WAAWP,GACf,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,KACpB,EAEF,MAAMzpL,WAAUumO,GACd,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,IACpB,CACA,CAACuV,IAAakO,GACZl/Q,MAAMgxQ,IAAakO,GAAS,GAC5BA,EAAQ3H,UAAU,MAClB2H,EAAQ5H,UACR4H,EAAQjI,SACV,CACA,CAACtF,MAEC,OADiB/6Q,KAAK64Q,MAAcJ,MACvBr7O,IAAI,KAAOp9B,KACfoJ,MAAM2xQ,MAER3xQ,MAAM2xQ,MAAW,IAC1B,EAEF,MAAMonC,WAAaR,GACjB,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,OACpB,EAEF,MAAMu9C,WAAYT,GAChB,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,MACpB,EAEF,MAAMw9C,WAAYV,GAChB,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,MACpB,EAEF,MAAMy9C,WAAWX,GACf,WAAA14S,CAAY47P,GACVz7P,MAAMy7P,EAAY,KACpB,EAEF,MAAM09C,GACJ,OAAQlnC,IAAiB34Q,EAAMmiQ,GAC7B,GAAI09C,GAAev+S,eAAetB,GAChC,OAAO6/S,GAAe7/S,GAAMmiQ,EAGhC,CACA,QAAO12P,CAAE02P,GACP,OAAO,IAAI71O,GAAE61O,EACf,CACA,QAAO/3P,CAAE+3P,GACP,OAAO,IAAI51O,GAAE41O,EACf,CACA,WAAO29C,CAAK39C,GACV,OAAO,IAAIi9C,GAAKj9C,EAClB,CACA,SAAO49C,CAAG59C,GACR,OAAO,IAAIk9C,GAAGl9C,EAChB,CACA,WAAOkZ,CAAKlZ,GACV,OAAO,IAAIm9C,GAAKn9C,EAClB,CACA,QAAOvjQ,CAAEujQ,GACP,OAAO,IAAI/1L,GAAE+1L,EACf,CACA,SAAO69C,CAAG79C,GACR,OAAO,IAAIo9C,GAAGp9C,EAChB,CACA,SAAO89C,CAAG99C,GACR,OAAO,IAAIq9C,GAAGr9C,EAChB,CACA,QAAOv3P,CAAEu3P,GACP,OAAO,IAAIzpL,GAAEypL,EACf,CACA,WAAO+9C,CAAK/9C,GACV,OAAO,IAAIs9C,GAAKt9C,EAClB,CACA,UAAOg+C,CAAIh+C,GACT,OAAO,IAAIu9C,GAAIv9C,EACjB,CACA,UAAOi+C,CAAIj+C,GACT,OAAO,IAAIw9C,GAAIx9C,EACjB,CACA,SAAOk+C,CAAGl+C,GACR,OAAO,IAAIy9C,GAAGz9C,EAChB,EAaF,MAAMm+C,GAAiB,CACrBpyC,OAAQuqC,GACRppB,WAAY6qB,GACZnhC,SAAUuhC,GACVrhC,UAAWskC,GACXxyF,UAAW2yF,GACXtkC,WAAYykC,GACZxiR,SAAUmrQ,GACVltB,IAAK2kC,GACLzkC,MAAOqmC,IAMT,MAAMU,GACJ,WAAAh6S,CAAYo7Q,GACVrkR,KAAKkjT,YAAc7+B,CACrB,CACA,CAAChJ,IAAiB34Q,EAAMmiQ,GACtB,OAAO,IAAI0f,GAAUvkR,KAAKkjT,YAAaxgT,EAAMmiQ,EAC/C,EAWF,MAAMs+C,WAAa/+B,GACjB,WAAAn7Q,CAAY44M,GACVz4M,OAAO,EAAG,OAAQ1F,OAAOwP,OAAO,OAChClT,KAAK2c,QAAU,KACf3c,KAAKi5Q,IAAQp3D,CACf,CACA,CAACo4D,IAAUxT,GAET,OADAzmQ,KAAK2c,QAAU8pP,GACR,CACT,CACA,CAACqR,MACC1uQ,MAAM0uQ,MACF93Q,KAAK2c,QAAQohB,oBAAoBqkQ,KACnCpiS,KAAKi5Q,IAAMlkQ,IAAIylQ,GAAOx6Q,KAAK2c,SAC3B3c,KAAK2c,QAAQohB,SAAS08O,IAAoBz6Q,KAAKi5Q,KAC/Cj5Q,KAAK2c,QAAQohB,SAASk7O,IAAQj5Q,KAAKi5Q,IAEvC,EAEF,MAAMmqC,WAAch/B,GAClB,WAAAn7Q,GACEG,OAAO,EAAG,GAAI1F,OAAOwP,OAAO,MAC9B,CACA,CAAC+mQ,IAAU14N,GACT,OAAO,CACT,EAEF,MAAM8hQ,GACJ,WAAAp6S,CAAYq6S,EAAgB,MAC1BtjT,KAAKujT,gBAAkB,GACvBvjT,KAAKwjT,iBAAmB,EACxBxjT,KAAKyjT,mBAAqB,IAAI9vS,IAC9B3T,KAAK0jT,YAAc,IAAI/vS,IACvB3T,KAAK2jT,UAAYv5S,KAAK2D,OAAOrK,OAAOoR,OAAOwmQ,IAAcr/P,KAAI,EAC3D4f,QACIA,KACN77B,KAAK4jT,kBAAoBN,GAAiB,IAAIL,KAAmBjjT,KAAK2jT,UACxE,CACA,SAAAE,CAAUhiG,GACR,OAAO,IAAIshG,GAAKthG,EAClB,CACA,KAAAiiG,EAAM,SACJC,EAAQ,KACRrhT,EAAI,WACJmiQ,EAAU,UACVm/C,EAAS,SACTC,IAEA,MAAMC,EAAgC,OAAdF,EAQxB,GAPIE,IACFlkT,KAAKujT,gBAAgBhiT,KAAKvB,KAAK4jT,mBAC/B5jT,KAAK4jT,kBAAoB5jT,KAAKmkT,iBAAiBH,IAE7CC,GACFjkT,KAAKokT,oBAAoBH,GAEvBp/C,EAAW7gQ,eAAeg2Q,IAAgB,CAC5C,MAAMqqC,EAAerB,GAAevnC,SAC9B6oC,EAAUz/C,EAAWmV,IAC3B,IAAIuqC,EAAW,KACf,IAAK,MAAOhpC,EAAI4tB,KAAUzlS,OAAOszD,QAAQstP,GAEvC,GADgBtkT,KAAKwkT,mBAAmBjpC,KACxB8oC,EAAc,CAC5BE,EAAW,CACTr+B,IAAKijB,GAEP,KACF,CAEEob,EACF1/C,EAAWmV,IAAiBuqC,SAErB1/C,EAAWmV,GAEtB,CACA,MAAMyqC,EAAiBzkT,KAAKwkT,mBAAmBT,GACzCn2Q,EAAO62Q,IAAiBppC,IAAiB34Q,EAAMmiQ,IAAe,IAAIu+C,GAWxE,OAVIx1Q,EAAK4rO,OACPx5Q,KAAKwjT,oBAEHU,GAAmBD,GAAYr2Q,EAAK4rO,SACtC5rO,EAAK2pO,IAAY,CACfmtC,aAAcR,EACdD,WACAU,WAAY/2Q,EAAK4rO,QAGd5rO,CACT,CACA,YAAAg3Q,GACE,OAAO5kT,KAAKwjT,iBAAmB,CACjC,CACA,gBAAAW,CAAiBU,GACf,IAAItpC,EAAKv7Q,KAAK0jT,YAAY7/S,IAAIghT,GAC9B,GAAItpC,EACF,OAAOA,EAET,IAAK,MAAO74Q,GAAM,MAChB+2B,MACI/1B,OAAOszD,QAAQskN,IACnB,GAAI7hP,EAAMorR,GAAS,CAEjB,GADAtpC,EAAKynC,GAAetgT,GAChB64Q,EAEF,OADAv7Q,KAAK0jT,YAAY3uS,IAAI8vS,EAAQtpC,GACtBA,EAET,KACF,CAIF,OAFAA,EAAK,IAAI0nC,KAAmBjjT,KAAK2jT,WACjC3jT,KAAK0jT,YAAY3uS,IAAI8vS,EAAQtpC,GACtBA,CACT,CACA,mBAAA6oC,CAAoBH,GAClB,IAAK,MAAM,OACThxC,EAAM,MACNtqQ,KACGs7S,EAAU,CACb,MAAMD,EAAYhkT,KAAKmkT,iBAAiBx7S,GACxC,IAAIm8S,EAAc9kT,KAAKyjT,mBAAmB5/S,IAAIovQ,GACzC6xC,IACHA,EAAc,GACd9kT,KAAKyjT,mBAAmB1uS,IAAIk+P,EAAQ6xC,IAEtCA,EAAYvjT,KAAKyiT,EACnB,CACF,CACA,kBAAAQ,CAAmBvxC,GACjB,IAAKA,EACH,OAAOjzQ,KAAK4jT,kBAEd,MAAMkB,EAAc9kT,KAAKyjT,mBAAmB5/S,IAAIovQ,GAChD,OAAI6xC,GAAavkT,OAAS,EACjBukT,EAAY1nR,IAAI,IAEzB51B,EAAK,6BAA6ByrQ,MAC3B,KACT,CACA,KAAA0R,CAAM5qQ,GACJ,MAAM,aACJ2qS,EAAY,SACZT,EAAQ,WACRU,GACE5qS,EACA2qS,IACF1kT,KAAK4jT,kBAAoB5jT,KAAKujT,gBAAgBjyQ,OAE5C2yQ,GACFA,EAAShgQ,SAAQ,EACfgvN,aAEAjzQ,KAAKyjT,mBAAmB5/S,IAAIovQ,GAAQ3hO,KAAK,IAGzCqzQ,GACF3kT,KAAKwjT,kBAET,EAQF,MAAMuB,WAAkBtgD,GACtB,WAAAx7P,CAAYq6S,EAAgB,KAAMhC,GAAW,GAC3Cl4S,QACApJ,KAAKglT,SAAW,IAAI3B,GAAQC,GAC5BtjT,KAAKonQ,OAAS,GACdpnQ,KAAKilT,YAAc,CACjB3mB,cAAe,IAAIhoR,KAErBtW,KAAKklT,KAAO,IAAIvxS,IAChB3T,KAAKmlT,SAAWnlT,KAAKglT,SAASnB,UAAU7jT,KAAKklT,MAC7CllT,KAAKqnQ,WAt9ZE,EAu9ZPrnQ,KAAKolT,YAAc,QACnBplT,KAAKqlT,OAAS,SACdrlT,KAAKslT,UAAYhE,CACnB,CACA,KAAAh4R,CAAMvP,GAEJ,GADA/Z,KAAKslQ,SAASvrP,GA59ZP,IA69ZH/Z,KAAKqnQ,WAIT,OADArnQ,KAAKmlT,SAASrtC,MACP93Q,KAAKmlT,SAASxoS,OACvB,CACA,MAAAspP,CAAO5O,GACLA,EAAOA,EAAKt5M,QAAQ/9C,KAAKqlT,QAAQl9S,GAASA,EAAMyF,MAAM,GAAK,MACvD5N,KAAKslT,WAAatlT,KAAKmlT,SAASluC,MAClCj3Q,KAAKmlT,SAAShrC,IAAS9iB,EAAMr3P,KAAKslT,WAGhCtlT,KAAKolT,YAAYtnS,KAAKu5O,IAG1Br3P,KAAKmlT,SAAShrC,IAAS9iB,EAAKmR,OAC9B,CACA,OAAA9C,CAAQrO,GACNr3P,KAAKmlT,SAAShrC,IAAS9iB,EACzB,CACA,aAAAkuD,CAAc1gD,EAAYshB,GACxB,IAAI69B,EAAY,KACZC,EAAW,KACf,MAAMuB,EAAe9hT,OAAOwP,OAAO,CAAC,GACpC,IAAK,MAAM,KACTxQ,EAAI,MACJiG,KACGk8P,EACH,GAAa,UAATniQ,EACGshT,EAGHx8S,EAAK,2CAA2C2+Q,MAFhD69B,EAAYr7S,OAIT,GAAIjG,EAAKuF,WAAW,UAAW,CACpC,MAAMgrQ,EAASvwQ,EAAK2Z,UAAU,GACzB4nS,IACHA,EAAW,IAEbA,EAAS1iT,KAAK,CACZ0xQ,SACAtqQ,SAEJ,KAAO,CACL,MAAMrH,EAAIoB,EAAK4tD,QAAQ,KACvB,IAAW,IAAPhvD,EACFkkT,EAAa9iT,GAAQiG,MAChB,CACL,IAAI27S,EAAUkB,EAAaxrC,IACtBsqC,IACHA,EAAUkB,EAAaxrC,IAAiBt2Q,OAAOwP,OAAO,OAExD,MAAOqoQ,EAAIxW,GAAY,CAACriQ,EAAKkL,MAAM,EAAGtM,GAAIoB,EAAKkL,MAAMtM,EAAI,KAC3CgjT,EAAQ/oC,KAAQ73Q,OAAOwP,OAAO,OACtC6xP,GAAYp8P,CACpB,CACF,CAEF,MAAO,CAACq7S,EAAWC,EAAUuB,EAC/B,CACA,iBAAAC,CAAkB/iT,EAAMiiT,GACtB,MAAMrjT,EAAIoB,EAAK4tD,QAAQ,KACvB,OAAW,IAAPhvD,EACK,CAACoB,EAAM,MAET,CAACA,EAAK2Z,UAAU/a,EAAI,GAAIqjT,EAAa,GAAKjiT,EAAK2Z,UAAU,EAAG/a,GACrE,CACA,cAAA0kQ,CAAemgB,EAASthB,EAAYttP,GAClC,MAAOysS,EAAWC,EAAUyB,GAAiB1lT,KAAKulT,cAAc1gD,EAAYshB,IACrEzjR,EAAMqhT,GAAY/jT,KAAKylT,kBAAkBt/B,EAASnmR,KAAKglT,SAASJ,gBACjEh3Q,EAAO5tC,KAAKglT,SAASlB,MAAM,CAC/BC,WACArhT,OACAmiQ,WAAY6gD,EACZ1B,YACAC,aAGF,GADAr2Q,EAAKmrO,IAAe/4Q,KAAKilT,YACrB1tS,EAMF,OALAq2B,EAAKkqO,MACD93Q,KAAKmlT,SAASlrC,IAAUrsO,IAC1BA,EAAK+sO,IAAQ36Q,KAAKklT,WAEpBt3Q,EAAKypO,IAAQr3Q,KAAKglT,UAGpBhlT,KAAKonQ,OAAO7lQ,KAAKvB,KAAKmlT,UACtBnlT,KAAKmlT,SAAWv3Q,CAClB,CACA,YAAA23N,CAAa7iQ,GACX,MAAMkrC,EAAO5tC,KAAKmlT,SAClB,GAAIv3Q,EAAKwrO,OAA4C,iBAAnBxrO,EAAK8pO,IAAwB,CAC7D,MAAMhpN,EAAS,IAAIq2P,GACnBr2P,EAAOu2P,YAAcjlT,KAAKilT,YAC1B,MAAM9hD,EAAOz0M,EAAOplC,MAAMskB,EAAK8pO,KAC/B9pO,EAAK8pO,IAAY,KACjB9pO,EAAKqsO,IAAU9W,EACjB,CACAv1N,EAAKkqO,MACL93Q,KAAKmlT,SAAWnlT,KAAKonQ,OAAO91N,MACxBtxC,KAAKmlT,SAASlrC,IAAUrsO,IAC1BA,EAAK+sO,IAAQ36Q,KAAKklT,MAEpBt3Q,EAAKypO,IAAQr3Q,KAAKglT,SACpB,CACA,OAAA5/R,CAAQjc,GACNnJ,KAAKqnQ,WAAal+P,CACpB,EAYF,MAAMw8S,GACJ,WAAA18S,CAAY8Q,GACV,IACE/Z,KAAKmjQ,MAAO,IAAI4hD,IAAYz7R,MAAMq8R,GAAWC,gBAAgB7rS,IAC7D,MAAM8rS,EAAS,IAAIvc,GAAOtpS,KAAKmjQ,MAC/BnjQ,KAAK07Q,KAAOmqC,EAAO9iS,OACnB/iB,KAAK8lT,YAAc,IAAIta,GAAYxrS,KAAKmjQ,KAAM0iD,EAAO3qQ,WACrDl7C,KAAK07Q,KAAK3C,IAAah7O,SAAW/9B,KAAK07Q,IACzC,CAAE,MAAO57Q,GACP0H,EAAK,uDAAuD1H,IAC9D,CACF,CACA,OAAAimT,GACE,OAAO/lT,KAAKmjQ,MAAQnjQ,KAAK07Q,IAC3B,CACA,kBAAAsqC,GACE,MAAM/wS,EAAWjV,KAAK07Q,KAAKV,MAC3B,OAAO,IAAItoQ,SAAQ,CAACG,EAASoQ,KAC3B,MAAMgjS,EAAgB,KACpB,IACE,MAAMt9S,EAAQsM,EAAS8f,OACnBpsB,EAAMwa,KACRtQ,EAAQlK,EAAMA,OAEd9I,WAAWomT,EAAe,EAE9B,CAAE,MAAOnmT,GACPmjB,EAAOnjB,EACT,GAEFD,WAAWomT,EAAe,EAAE,GAEhC,CACA,kBAAMC,GACJ,IACElmT,KAAK2gD,YAAc3gD,KAAKgmT,qBACxBhmT,KAAKmmT,KAAOnmT,KAAK2gD,MAAMlT,SAASxxB,KAAI7N,IAClC,MAAM,MACJyR,EAAK,OACLC,GACE1R,EAAEy2P,WAAWrrB,MACjB,MAAO,CAAC,EAAG,EAAGtjO,SAAS2J,GAAQ3J,SAAS4J,GAAQ,GAEpD,CAAE,MAAOhgB,GACP0H,EAAK,0CAA0C1H,IACjD,CACF,CACA,cAAAsmT,CAAehnS,GACb,OAAOpf,KAAKmmT,KAAK/mS,EACnB,CACA,iBAAMinS,GAIJ,OAHKrmT,KAAK2gD,aACF3gD,KAAKkmT,eAENlmT,KAAKmmT,KAAK5lT,MACnB,CACA,SAAA+lT,CAAUxkE,GACR9hP,KAAK07Q,KAAK3C,IAAaj3B,OAASA,CAClC,CACA,QAAAykE,CAASnoC,GACPp+Q,KAAK07Q,KAAK3C,IAAayG,WAAa,IAAItB,GAAWE,GACnD,MAAMooC,EAAe,GACrB,IAAK,IAAIpnC,KAAYp/Q,KAAK07Q,KAAK3C,IAAaulB,cAC1Clf,EAAW1C,GAAY0C,GACVp/Q,KAAK07Q,KAAK3C,IAAayG,WAAWT,KAAKK,IAElDonC,EAAajlT,KAAK69Q,GAGtB,OAAIonC,EAAajmT,OAAS,EACjBimT,EAEF,IACT,CACA,WAAAC,CAAYroC,EAAOE,GACjBt+Q,KAAK07Q,KAAK3C,IAAayG,WAAWhpQ,IAAI4nQ,EAAOE,EAC/C,CACA,cAAMooC,GACC1mT,KAAK2gD,aACF3gD,KAAKkmT,eAEb,MAAMvlQ,EAAQ3gD,KAAK2gD,MAEnB,OADA3gD,KAAK2gD,MAAQ,KACNA,CACT,CACA,aAAAgmQ,CAAchb,GACZ,OAAO3rS,KAAK8lT,YAAYpa,UAAUC,EACpC,CACA,sBAAOia,CAAgB7rS,GACrB,OAAKA,EAAK,YAGHrW,OAAOoR,OAAOiF,GAAMvP,KAAK,IAFvBuP,EAAK,UAGhB,CACA,wBAAO6sS,CAAkBC,GACvB,IAAKA,GAAoB,iBAAPA,EAChB,OAAO,KAET,IACE,IAAI1jD,EAAO,IAAI4hD,GAAUxC,IAAgB,GAAMj5R,MAAMu9R,GACrD,IAAK,CAAC,OAAQ,SAAS/6S,SAASq3P,EAAK4W,KAAa,CAChD,MAAM+sC,EAAUvE,GAAeC,KAAK,CAAC,GACrCsE,EAAQ3vC,IAAchU,GACtBA,EAAO2jD,CACT,CACA,MAAM94R,EAASm1O,EAAK8X,MACpB,IAAKjtP,EAAO8vP,QACV,OAAO,KAET,MAAM,KACJC,GACE/vP,GACE,WACJ62O,GACEkZ,EAOJ,OANIlZ,IACEA,EAAW8kB,QACb9kB,EAAW8kB,MAAQ9kB,EAAW8kB,MAAMn2P,QAAOuzR,IAASA,EAAK9+S,WAAW,UAEtE48P,EAAW/hQ,IAAM,QAEZ,CACLi7Q,OACArzQ,IAAKy4P,EAAK4X,MAEd,CAAE,MAAOj7Q,GACP0H,EAAK,wDAAwD1H,IAC/D,CACA,OAAO,IACT,EAkBF,MAAMknT,GACJ,oBAAOC,CAAcz9C,GACnB,OAAO92P,QAAQ++O,IAAI,CAAC+X,EAAW09C,cAAc,YAAa19C,EAAW29C,UAAU,eAAgB39C,EAAW09C,cAAc,kBAAmB19C,EAAW09C,cAAc,WAAY19C,EAAW09C,cAAc,iBAAiB5jS,MAAK,EAAEqrP,EAAUy4C,EAAah9C,EAAgBtiQ,EAASqoQ,MACxQ,CACL3G,aACAmF,SAAUA,aAAoBn7P,GAAOm7P,EAAWn7P,GAAK0B,MACrDkyS,cACAh9C,iBACAtiQ,UACAqoQ,kBAED/rP,IACD5c,EAAK,mBAAmB4c,OACjB,OAEX,CACA,mBAAalR,CAAOO,EAAMuC,EAAKqxS,EAAmBpsE,EAAWqsE,EAAeC,EAAcp+C,GACxF,MAAM/pP,EAAYkoS,QAAsBtnT,KAAKwnT,cAAc/zS,EAAMuC,EAAKqxS,EAAkB79C,YAAc,KACtG,OAAO69C,EAAkB79C,WAAWi+C,OAAOznT,KAAM,UAAW,CAACyT,EAAMuC,EAAKqxS,EAAmBpsE,EAAWqsE,EAAeC,EAAcnoS,EAAW+pP,GAChJ,CACA,cAAOu+C,CAAQj0S,EAAMuC,EAAKqxS,EAAmBpsE,EAAWqsE,GAAgB,EAAOC,EAAe,KAAMnoS,EAAY,KAAM+pP,EAAU,MAC9H,MAAM1zP,EAAOhC,EAAK+V,WAAWxT,GAC7B,KAAMP,aAAgBjC,IACpB,OAEF,MAAM,SACJm7P,EAAQ,WACRnF,GACE69C,EACExrR,EAAK7lB,aAAe3B,GAAM2B,EAAIxJ,WAAa,SAASyuO,EAAU8Q,gBACpE,IAAI51B,EAAU1gN,EAAK5R,IAAI,WACvBsyN,EAAUA,aAAmB9iN,GAAO8iN,EAAQzzN,KAAO,KACnD,MAAMilT,EAAa,CACjBl0S,OACAuC,MACAP,OACA0gN,UACAt6L,KACAwrR,oBACAC,gBACAC,eACAK,iBAAkBN,IAAqD,IAApC34C,EAAS9qQ,IAAI,mBAChDub,YACA4uO,iBAAkBwb,EAAWxb,iBAC7Bmb,WAEF,OAAQhzC,GACN,IAAK,OACH,OAAO,IAAI0xF,GAAeF,GAC5B,IAAK,OACH,OAAO,IAAIG,GAAeH,GAC5B,IAAK,SACH,IAAII,EAAY9tS,GAAuB,CACrCxE,OACAjS,IAAK,OAGP,OADAukT,EAAYA,aAAqB10S,GAAO00S,EAAUrlT,KAAO,KACjDqlT,GACN,IAAK,KACH,OAAO,IAAIC,GAAqBL,GAClC,IAAK,MACH,OAAO,IAAIM,GAAuBN,GACpC,IAAK,KACH,OAAO,IAAIO,GAAuBP,GACpC,IAAK,MACH,OAAO,IAAIQ,GAA0BR,GAGzC,OADAngT,EAAK,oCAAoCugT,wCAClC,IAAIK,GAAiBT,GAC9B,IAAK,QACH,OAAO,IAAIU,GAAgBV,GAC7B,IAAK,WACH,OAAO,IAAIW,GAAmBX,GAChC,IAAK,OACH,OAAO,IAAIY,GAAeZ,GAC5B,IAAK,SACH,OAAO,IAAIa,GAAiBb,GAC9B,IAAK,SACH,OAAO,IAAIc,GAAiBd,GAC9B,IAAK,WACH,OAAO,IAAIe,GAAmBf,GAChC,IAAK,UACH,OAAO,IAAIgB,GAAkBhB,GAC/B,IAAK,QACH,OAAO,IAAIiB,GAAgBjB,GAC7B,IAAK,MACH,OAAO,IAAIkB,GAAclB,GAC3B,IAAK,YACH,OAAO,IAAImB,GAAoBnB,GACjC,IAAK,YACH,OAAO,IAAIoB,GAAoBpB,GACjC,IAAK,WACH,OAAO,IAAIqB,GAAmBrB,GAChC,IAAK,YACH,OAAO,IAAIsB,GAAoBtB,GACjC,IAAK,QACH,OAAO,IAAIuB,GAAgBvB,GAC7B,IAAK,iBACH,OAAO,IAAIwB,GAAyBxB,GACtC,QAQE,OAPKL,GAID9/S,EAHG2uN,EAGE,kCAAkCA,uCAFlC,gDAKF,IAAIizF,GAAWzB,GAE5B,CACA,0BAAaH,CAAc/zS,EAAMuC,EAAKwzP,GACpC,IACE,MAAM6/C,QAAkB51S,EAAK61S,gBAAgBtzS,GAC7C,KAAMqzS,aAAqB71S,IACzB,OAAQ,EAEV,MAAM21P,EAAUkgD,EAAU10S,OAAO,KACjC,GAAIw0P,aAAmB90P,GACrB,IAEE,aADwBm1P,EAAW09C,cAAc,eAAgB,CAAC/9C,GAEpE,CAAE,MAAOp4P,GACP3J,EAAK,iDAAiD2J,MACxD,CAEF,GAAIs4S,EAAUr0S,IAAI,QAChB,OAAQ,EAEV,MAAMo6C,QAAiBo6M,EAAW29C,UAAU,YAC5C,IAAK,IAAI/nS,EAAY,EAAGA,EAAYgwC,EAAUhwC,IAAa,CACzD,MAAM8rP,QAAa1B,EAAWG,QAAQvqP,GAChCD,QAAoBqqP,EAAWi+C,OAAOv8C,EAAM,eAClD,IAAK,MAAMq+C,KAAYpqS,EACrB,GAAIoqS,aAAoBl1S,IAAO8C,GAAYoyS,EAAUvzS,GACnD,OAAOoJ,CAGb,CACF,CAAE,MAAOrO,GACPvJ,EAAK,mBAAmBuJ,MAC1B,CACA,OAAQ,CACV,CACA,qBAAOy4S,CAAerqS,EAAa1L,EAAMlI,GACvC,IAAKA,EAEH,OADA/D,EAAK,wGACE,KAET,IAAIiiT,EACJ,IAAK,MAAM,SACTC,EAAQ,OACRlsR,KACGre,EACEqe,IAGLisR,IAAkB,IAAI91S,IACtB81S,EAAc10S,IAAI20S,EAAUR,GAAgBpsE,YAAYt/M,EAAQ/pB,KAElE,OAAOg2S,CACT,CACA,+BAAaE,CAAmB/0E,EAAWkW,EAAM3rO,EAAasqS,EAAe1/C,GAC3E,MAAMt2P,EAAOmhO,EAAUnhO,KACvB,IAAIwuP,EACJ,MAAM2nD,EAAW,IACX,2BACJr+S,GACEqpO,EAAU7sO,QACd,IAAK,MAAM8hT,KAAc1qS,EACvB,IAAI0qS,EAAWC,QAGf,OAAQD,EAAWE,gBACjB,KA92+CI,EA+2+CF,IAAK9nD,EAAa,CAChB,MAAMpG,EAAW,IAAIroP,GAAKC,GAC1BooP,EAAS9mP,IAAI,WAAY1B,GAAKxP,IAAI,cAClCg4P,EAAS9mP,IAAI,OAAQ1B,GAAKxP,IAAI,SAC9Bg4P,EAAS9mP,IAAI,UAAW1B,GAAKxP,IAAI,UACjCg4P,EAAS9mP,IAAI,WAAY1B,GAAKxP,IAAI,oBAClCo+P,EAAcxuP,EAAK02P,qBACnBJ,EAAQxzP,IAAI0rP,EAAa,CACvBloP,KAAM8hP,GAEV,CACA+tD,EAASroT,KAAK+mT,GAAmB0B,oBAAoBv2S,EAAMo2S,EAAY9/C,EAAS,CAC9En1B,YACAkW,OACAmX,iBAEF,MACF,KA/3+CK,EAg4+CC4nD,EAAWI,WACbL,EAASroT,KAAKunT,GAAoBkB,oBAAoBv2S,EAAMo2S,EAAY9/C,IAExE6/C,EAASroT,KAAKsnT,GAAcmB,oBAAoBv2S,EAAMo2S,EAAY9/C,IAEpE,MACF,KAp4+CD,GAq4+CG6/C,EAASroT,KAAKsnT,GAAcmB,oBAAoBv2S,EAAMo2S,EAAY9/C,IAClE,MACF,KAx4+CC,GAy4+CC,MAAM1tN,EAAQ9wC,QAAmCk+S,GAAe5lT,IAAIgmT,EAAWH,WAAY,KAC3F,GAAIrtQ,GAAO4P,YAAa,CACtB,MAAM,YACJA,EAAW,YACXi+P,GACE7tQ,EACJ,GAAI6tQ,EAAa,CACf,MAAMC,EAAW12S,EAAK02P,qBACtBJ,EAAQxzP,IAAI4zS,EAAU,CACpBpwS,KAAMmwS,IAERj+P,EAAYx2C,KAAKV,IAAI,QAASo1S,EAChC,CACA,MAAMv+D,EAAWvvM,EAAMuvM,SAAWn4O,EAAK02P,qBACvCJ,EAAQxzP,IAAIq1O,EAAU,CACpB7xO,KAAMkyC,IAER5P,EAAM4P,YAAc5P,EAAM6tQ,YAAc,IAC1C,CACAN,EAASroT,KAAK2nT,GAAgBc,oBAAoBv2S,EAAMo2S,EAAY9/C,EAAS,CAC3E1tN,WAKR,MAAO,CACLl9B,kBAAmBzM,QAAQ++O,IAAIm4D,GAEnC,CACA,gCAAaQ,CAAoB/C,EAAmBzyE,EAAWkW,EAAM3rO,EAAasqS,GAChF,IAAKtqS,EACH,OAAO,KAET,MAAM,QACJpX,EAAO,KACP0L,GACEmhO,EACEg1E,EAAW,GACjB,IAAK,MAAMC,KAAc1qS,EACvB,IAAI0qS,EAAWC,QAGf,OAAQD,EAAWE,gBACjB,KAt7+CI,EAu7+CFH,EAASroT,KAAK+mT,GAAmB+B,yBAAyBhD,EAAmB5zS,EAAMo2S,EAAY,CAC7Fj1E,YACAkW,OACAkD,iBAAkBjmP,KAEpB,MACF,KA57+CK,EA67+CC8hT,EAAWI,WACbL,EAASroT,KAAKunT,GAAoBuB,yBAAyBhD,EAAmB5zS,EAAMo2S,EAAY,CAC9F77D,iBAAkBjmP,KAGpB6hT,EAASroT,KAAKsnT,GAAcwB,yBAAyBhD,EAAmB5zS,EAAMo2S,EAAY,CACxF77D,iBAAkBjmP,KAGtB,MACF,KAr8+CD,GAs8+CG6hT,EAASroT,KAAKsnT,GAAcwB,yBAAyBhD,EAAmB5zS,EAAMo2S,EAAY,CACxF77D,iBAAkBjmP,KAEpB,MACF,KA38+CC,GA48+CC,MAAMs0C,EAAQt0C,EAAQwD,iCAAmCk+S,GAAe5lT,IAAIgmT,EAAWH,WAAY,KACnG,GAAIrtQ,GAAO4P,YAAa,CACtB,MAAM,YACJA,EAAW,YACXi+P,GACE7tQ,EACA6tQ,GACFj+P,EAAYx2C,KAAKV,IAAI,QAASm1S,GAEhC7tQ,EAAMuvM,SAAW,IAAIpwM,GAAWyQ,EAAaA,EAAY1rD,QACzD87C,EAAM4P,YAAc5P,EAAM6tQ,YAAc,IAC1C,CACAN,EAASroT,KAAK2nT,GAAgBmB,yBAAyBhD,EAAmB5zS,EAAMo2S,EAAY,CAC1FxtQ,QACA2xM,iBAAkBjmP,KAK1B,OAAO2K,QAAQ++O,IAAIm4D,EACrB,EAEF,SAASU,GAAYn8R,EAAOo8R,EAAe,IAAIzkS,kBAAkB,IAC/D,IAAK1kB,MAAMsT,QAAQyZ,GACjB,OAAOo8R,EAET,MAAMxkF,EAAWwkF,GAAgB,IAAIzkS,kBAAkB,GACvD,OAAQqI,EAAM5tB,QACZ,KAAK,EACH,OAAO,KACT,KAAK,EAEH,OADAilB,GAAWiE,WAAWC,KAAK3D,WAAWoI,EAAO,EAAG43M,EAAU,GACnDA,EACT,KAAK,EAEH,OADAvgN,GAAWiE,WAAW5D,IAAIE,WAAWoI,EAAO,EAAG43M,EAAU,GAClDA,EACT,KAAK,EAEH,OADAvgN,GAAWiE,WAAWG,KAAK7D,WAAWoI,EAAO,EAAG43M,EAAU,GACnDA,EACT,QACE,OAAOwkF,EAEb,CACA,SAASC,GAAiBr8R,GACxB,OAAO/sB,MAAMkL,KAAK6hB,GAAO/f,GAAKA,EAAI,KACpC,CACA,SAASq8S,GAAch1S,EAAM9G,GAC3B,MAAMs7S,EAAax0S,EAAKhB,SAAS,cACjC,IAAK4G,GAAc4uS,EAAY,OAA+B,IAAtBA,EAAW1pT,QAAgB0pT,EAAW1pT,OAAS,EAAI,EACzF,OAAO,KAET,MAAMmqT,EAAgB,IAAIp/R,aAAa2+R,EAAW1pT,QAClD,IAAK,IAAIe,EAAI,EAAG0P,EAAKi5S,EAAW1pT,OAAQe,EAAI0P,EAAI1P,GAAK,EAAG,CACtD,MAAO8N,EAAII,EAAIH,EAAII,EAAIH,EAAII,EAAIi7S,EAAIC,GAAMX,EAAWr8S,MAAMtM,EAAGA,EAAI,GAC3D+8B,EAAOj0B,KAAKC,IAAI+E,EAAIC,EAAIC,EAAIq7S,GAC5BrsR,EAAOl0B,KAAK2D,IAAIqB,EAAIC,EAAIC,EAAIq7S,GAC5BpsR,EAAOn0B,KAAKC,IAAImF,EAAIC,EAAIC,EAAIk7S,GAC5B9/E,EAAO1gO,KAAK2D,IAAIyB,EAAIC,EAAIC,EAAIk7S,GAClC,GAAa,OAATj8S,IAAkB0vB,EAAO1vB,EAAK,IAAM2vB,EAAO3vB,EAAK,IAAM4vB,EAAO5vB,EAAK,IAAMm8N,EAAOn8N,EAAK,IACtF,OAAO,KAET+7S,EAAc31S,IAAI,CAACspB,EAAMysM,EAAMxsM,EAAMwsM,EAAMzsM,EAAME,EAAMD,EAAMC,GAAOj9B,EACtE,CACA,OAAOopT,CACT,CACA,SAASG,GAAmBl8S,EAAM+gN,EAAMnlM,GACtC,MAAO8T,EAAME,EAAMD,EAAMwsM,GAAQp+N,EAAKe,2BAA2BiiN,EAAMnlM,GACvE,GAAI8T,IAASC,GAAQC,IAASusM,EAC5B,MAAO,CAAC,EAAG,EAAG,EAAG,EAAGn8N,EAAK,GAAIA,EAAK,IAEpC,MAAMkZ,GAAUlZ,EAAK,GAAKA,EAAK,KAAO2vB,EAAOD,GACvCvW,GAAUnZ,EAAK,GAAKA,EAAK,KAAOm8N,EAAOvsM,GAC7C,MAAO,CAAC1W,EAAQ,EAAG,EAAGC,EAAQnZ,EAAK,GAAK0vB,EAAOxW,EAAQlZ,EAAK,GAAK4vB,EAAOzW,EAC1E,CACA,MAAMshS,GACJ,WAAAngT,CAAYghB,GACV,MAAM,KACJxU,EAAI,KACJhC,EAAI,kBACJ4zS,EAAiB,IACjBrxS,EAAG,aACHuxS,GACEt9R,EACEqiP,EAAYi7C,GAAc1jT,IAAImS,GAChCs2P,GACF72P,EAAKV,IAAI,SAAUu3P,GAErBtsQ,KAAK8qT,SAASr1S,EAAK5R,IAAI,MACvB7D,KAAK+qT,YAAYt1S,EAAK5R,IAAI,aAC1B7D,KAAKgrT,oBAAoBv1S,EAAK5R,IAAI,MAClC7D,KAAKirT,SAASx1S,EAAK5R,IAAI,MACvB7D,KAAKkrT,aAAaz1S,EAAKhB,SAAS,SAChCzU,KAAKmrT,SAAS11S,EAAKhB,SAAS,MAC5BzU,KAAKorT,eAAe31S,GACpBzV,KAAKqrT,cAAc51S,GACnBzV,KAAKsrT,mBAAmB71S,GACxB,MAAM81S,EAAK91S,EAAK5R,IAAI,MACpB7D,KAAKwrT,6BAA6BD,GAClCvrT,KAAKyrT,YAAYF,EAAI91S,GACrBzV,KAAKgW,IAAMiU,EAAOjU,eAAe3B,GAAM4V,EAAOjU,IAAM,KACpDhW,KAAK0rT,SAAW,GACZ1rT,KAAK+iQ,YACP/iQ,KAAK0rT,SAASnqT,KAAKvB,KAAK+iQ,YAE1B,MAAM4oD,KA99+CA,IA89+Cc3rT,KAAK2iC,OACnBipR,KA79+CQ,IA69+Ca5rT,KAAK2iC,OAoBhC,GAnBA3iC,KAAK+Z,KAAO,CACV8xS,gBAAiB7rT,KAAK2iC,MACtBmwP,YAAa9yR,KAAK8yR,YAClB3kQ,MAAOnuB,KAAKmuB,MACZ6uQ,gBAAiBh9R,KAAKg9R,gBACtBhK,YAAahzR,KAAKgzR,YAClBpzQ,SAAU5f,KAAK4f,SACfksS,YAAa9rT,KAAK+rT,UAClBC,gBAAiBhsT,KAAK+iQ,WACtBlnO,GAAI5R,EAAO4R,GACXowR,iBAAkBjsT,KAAKisT,iBACvBt9S,KAAM3O,KAAKolS,UACXjvE,QAASlsM,EAAOksM,QAChB+1F,cAAc,EACdC,YAj/+CM,GAi/+COnsT,KAAK2iC,OAClBypR,OAAQT,GAAYC,EACpBS,YAAY,EACZ1hD,cAAe,GAEb08C,EAAkBj9C,eAAgB,CACpC,IAAIO,EAAel1P,EAAK5R,IAAI,gBAC5B7D,KAAK+Z,KAAK4wP,aAAeA,EAAenwP,OAAOC,UAAUkwP,IAAiBA,GAAgB,EAAIA,GAAgB,EAC9G08C,EAAkBj9C,eAAehB,sBAAsBn/O,EAAOk/O,QAASwB,EACzE,CACA,GAAI1gP,EAAOq9R,cAAe,CACxB,MAAMhkD,EAAO7tP,EAAK5R,IAAI,QACtB,GAAIzC,MAAMsT,QAAQ4uP,GAAO,CACvB,MAAMgpD,EAAS,GACf,IAAK,MAAM/oD,KAAOD,EACZC,aAAelvP,IACjBi4S,EAAO/qT,KAAKgiQ,EAAI/2P,YAGE,IAAlB8/S,EAAO/rT,SACTP,KAAK+Z,KAAKuyS,OAASA,EAEvB,CACAtsT,KAAK+Z,KAAKgD,QAAUF,GAAepJ,EAAMgC,EAAM/P,GAC/C1F,KAAK+Z,KAAKwyS,UAAYvsT,KAAKwsT,oBAAoB/2S,GAC/CzV,KAAK+Z,KAAKqF,UAAY6K,EAAO7K,SAC/B,CACA,MAAMqtS,EAAKh3S,EAAK5R,IAAI,MAChB4oT,aAAcp5S,KAChBrT,KAAK+Z,KAAK0yS,GAAKA,EAAG/pT,MAEpB1C,KAAK0sT,4BAA8BziS,EAAO+jO,iBAAiBziP,2BAC3DvL,KAAK2sT,kBAAoB,KACzB3sT,KAAK4sT,kBAAmB,CAC1B,CACA,QAAAC,CAASlqR,EAAO6lL,GACd,SAAU7lL,EAAQ6lL,EACpB,CACA,WAAAskG,CAAYC,EAAQC,GAClB,IAAI,MACFrqR,GACE3iC,KACJ,QAAeoD,IAAX2pT,EAAsB,CACxB,QAAgB3pT,IAAZ4pT,EACF,OAEF,OAAIA,GACa,EAARrqR,GAEM,EAARA,EApi/CJ,CAqi/CL,CACA,OAAIoqR,GACFpqR,GAvi/CG,EAwi/CCqqR,GACa,GAARrqR,EA1i/CL,GA4i/CW,EAARA,EAAiCn9B,IAE1Cm9B,IAAS,GACLqqR,GACa,EAARrqR,EA/i/CJ,EAij/CEA,EACT,CACA,WAAAsqR,CAAYtqR,GACV,OAAQ3iC,KAAK6sT,SAASlqR,EAtj/Cb,KAsj/CkD3iC,KAAK6sT,SAASlqR,EAAOn9B,EAClF,CACA,YAAA0nT,CAAavqR,GACX,OAAO3iC,KAAK6sT,SAASlqR,EAvj/ChB,KAuj/CiD3iC,KAAK6sT,SAASlqR,EAxj/C9D,KAwj/CgG3iC,KAAK6sT,SAASlqR,EAzj/C3G,EA0j/CX,CACA,YAAAwqR,CAAaluS,EAAmBmuS,GAC9B,MAAML,EAAS9tS,GAAmBpb,IAAI7D,KAAK+Z,KAAK8hB,KAAKkxR,OACrD,YAAe3pT,IAAX2pT,GACMA,EAEH/sT,KAAKqtT,WAAartT,KAAK6sT,SAAS7sT,KAAK2iC,MA/j/CtC,EAgk/CR,CACA,aAAA2qR,CAAcruS,GACZ,MAAM+tS,EAAU/tS,GAAmBpb,IAAI7D,KAAK+Z,KAAK8hB,KAAKmxR,QACtD,YAAgB5pT,IAAZ4pT,GACMA,EAEHhtT,KAAKutT,SACd,CACA,uBAAAC,CAAwBC,EAAWC,EAAc,MAC/C,OAAOD,GAAaztT,KAAK+Z,KAAKsyS,YAAcqB,GAAa14S,IAAIhV,KAAK+Z,KAAK8hB,GACzE,CACA,YAAIwxR,GACF,OAA6B,OAAzBrtT,KAAK+Z,KAAKkwS,aAGK,IAAfjqT,KAAK2iC,OAGF3iC,KAAKitT,YAAYjtT,KAAK2iC,OAC/B,CACA,aAAI4qR,GACF,OAA6B,OAAzBvtT,KAAK+Z,KAAKkwS,YAGK,IAAfjqT,KAAK2iC,OAGF3iC,KAAKktT,aAAaltT,KAAK2iC,MAChC,CACA,kBAAAgrR,CAAmB5zS,GACjB,MAAMrP,EAAsB,iBAATqP,EAAoBxJ,EAAkBwJ,GAAQ,GAEjE,MAAO,CACLrP,MACA5H,IAHU4H,GAAyB,QAAlB+tO,GAAK/tO,GAAK5H,IAAgB,MAAQ,MAKvD,CACA,oBAAA8qT,CAAqB3jS,GACnB,MAAM,KACJxU,EAAI,kBACJ4xS,GACEp9R,EACE4jS,EAAoB5zS,GAAuB,CAC/CxE,OACAjS,IAAK,QACD6jT,EAAkB14C,SAAS9qQ,IAAI,MACrC7D,KAAK8tT,mBAAkD,iBAAtBD,EAAiCA,EAAoB,GACtF7tT,KAAK+Z,KAAKg0S,sBAAwB9sD,GAAuBjhQ,KAAK8tT,mBAChE,CACA,QAAAhD,CAASppT,GACP1B,KAAKguT,OAAShuT,KAAK2tT,mBAAmBjsT,EACxC,CACA,WAAAqpT,CAAYkD,GACVjuT,KAAK+rT,UAAY/rT,KAAK2tT,mBAAmBM,EAC3C,CACA,mBAAAjD,CAAoBiB,GAClBjsT,KAAKisT,iBAA+C,iBAArBA,EAAgCA,EAAmB,IACpF,CACA,QAAAhB,CAAStoR,GACP3iC,KAAK2iC,MAAQnoB,OAAOC,UAAUkoB,IAAUA,EAAQ,EAAIA,EAAQ,EA5n/CnD,EA6n/CL3iC,KAAK2iC,OAA8D,eAA1B3iC,KAAKiJ,YAAYvG,OAC5D1C,KAAK2iC,OA9n/CE,EAgo/CX,CACA,OAAAurR,CAAQ1lG,GACN,OAAOxoN,KAAK6sT,SAAS7sT,KAAK2iC,MAAO6lL,EACnC,CACA,YAAA0iG,CAAa9lB,GACXplS,KAAKolS,UAAYxpR,GAAiBwpR,EAAW,CAAC,EAAG,EAAG,EAAG,GACzD,CACA,QAAA+lB,CAASh9R,GACPnuB,KAAKmuB,MAAQm8R,GAAYn8R,EAC3B,CACA,cAAAggS,CAAeC,GAEb,GADApuT,KAAKouT,YAAc,CAAC,OAAQ,QACxBhtT,MAAMsT,QAAQ05S,IAAuC,IAAvBA,EAAY7tT,OAC5C,IAAK,IAAIe,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMwC,EAAMsqT,EAAY9sT,GACxB,GAAIwC,aAAeuP,GACjB,OAAQvP,EAAIpB,MACV,IAAK,OACH,SACF,IAAK,SACL,IAAK,SACL,IAAK,UACL,IAAK,YACL,IAAK,cACL,IAAK,OACL,IAAK,aACL,IAAK,eACL,IAAK,QACH1C,KAAKouT,YAAY9sT,GAAKwC,EAAIpB,KAC1B,SAGN8E,EAAK,gCAAgC1D,IACvC,CAEJ,CACA,WAAA2nT,CAAY4C,EAAI54S,GACdzV,KAAK4f,SAAW,EAChB,IAAItB,EAAQ+vS,aAAc76S,GAAO66S,EAAGxqT,IAAI,MAAQ,EAAI4R,EAAK5R,IAAI,WAAa,EACtE2W,OAAOC,UAAU6D,IAAoB,IAAVA,IAC7BA,GAAS,IACLA,EAAQ,IACVA,GAAS,KAEPA,EAAQ,IAAO,IACjBte,KAAK4f,SAAWtB,GAGtB,CACA,4BAAAktS,CAA6B6C,GACvBA,aAAc76S,IAChBxT,KAAKgzR,YAAcs3B,GAAY+D,EAAG55S,SAAS,MAAO,MAClDzU,KAAKg9R,gBAAkBstB,GAAY+D,EAAG55S,SAAS,MAAO,OAEtDzU,KAAKgzR,YAAchzR,KAAKg9R,gBAAkB,IAE9C,CACA,cAAAouB,CAAet4B,GAEb,GADA9yR,KAAK8yR,YAAc,IAAIw7B,GACjBx7B,aAAuBt/Q,GAG7B,GAAIs/Q,EAAY99Q,IAAI,MAAO,CACzB,MAAMS,EAAOq9Q,EAAYjvR,IAAI,MAC7B,GAAI4R,aAAgBjC,GAAM,CACxB,MAAM+6S,EAAW94S,EAAK5R,IAAI,QACrB0qT,IAAYx3S,GAAOw3S,EAAU,YAChCvuT,KAAK8yR,YAAY07B,SAAS/4S,EAAK5R,IAAI,KAAM7D,KAAKolS,WAC9CplS,KAAK8yR,YAAY27B,SAASh5S,EAAK5R,IAAI,MACnC7D,KAAK8yR,YAAY47B,aAAaj5S,EAAKhB,SAAS,MAEhD,CACF,MAAO,GAAIq+Q,EAAY99Q,IAAI,UAAW,CACpC,MAAMhU,EAAQ8xR,EAAYr+Q,SAAS,UAC/BrT,MAAMsT,QAAQ1T,IAAUA,EAAMT,QAAU,IAC1CP,KAAK8yR,YAAY67B,0BAA0B3tT,EAAM,IACjDhB,KAAK8yR,YAAY87B,wBAAwB5tT,EAAM,IAC/ChB,KAAK8yR,YAAY07B,SAASxtT,EAAM,GAAIhB,KAAKolS,WACpB,IAAjBpkS,EAAMT,QACRP,KAAK8yR,YAAY47B,aAAa1tT,EAAM,IAAI,GAG9C,MACEhB,KAAK8yR,YAAY07B,SAAS,EAE9B,CACA,aAAAnD,CAAc51S,GACZzV,KAAK+iQ,WAAa,KAClB,MAAM8rD,EAAmBp5S,EAAK5R,IAAI,MAClC,KAAMgrT,aAA4Br7S,IAChC,OAEF,MAAMs7S,EAAwBD,EAAiBhrT,IAAI,KACnD,GAAIirT,aAAiCx3S,GAEnC,YADAtX,KAAK+iQ,WAAa+rD,GAGpB,KAAMA,aAAiCt7S,IACrC,OAEF,MAAM4c,EAAK3a,EAAK5R,IAAI,MACpB,KAAMusB,aAAc/c,IAAUy7S,EAAsB95S,IAAIob,EAAG1tB,OACzD,OAEF,MAAMqgQ,EAAa+rD,EAAsBjrT,IAAIusB,EAAG1tB,MAC5CqgQ,aAAsBzrP,KACxBtX,KAAK+iQ,WAAaA,EAEtB,CACA,kBAAAuoD,CAAmB71S,GACjBzV,KAAK+uT,GAAK,KACV,MAAMA,EAAKt5S,EAAK5R,IAAI,MAChBkrT,aAAc17S,GAChB7L,EAAK,mEACIunT,aAAcv7S,KACvBxT,KAAK+uT,GAAKA,EAEd,CACA,aAAAC,CAAcjkT,EAAMg4P,GAClB,OAAOA,EAAWttP,KAAKlB,SAAS,aAAa+O,MAAK6F,IAChD,GAAKA,EAIL,OADqB,IAAIutP,GAAavtP,EAAWpe,EAAMoe,EAAU1V,MAC7CmjQ,OAAOtzP,MAAK,WAC9B,OAAO6F,CACT,GAAE,GAEN,CACA,qBAAMoiO,CAAgB3W,EAAWkW,EAAM7H,EAAQhkO,GAC7C,MAAM,aACJitS,EAAY,GACZrwR,EAAE,KACFltB,GACE3O,KAAK+Z,KACT,IAAIgpP,EAAa/iQ,KAAK+iQ,WACtB,MAAMksD,KAAsB/C,GA52/CrB,EA42/CqCjpE,GAC5C,GAAIgsE,IAAqBtgT,EAAK,KAAOA,EAAK,IAAMA,EAAK,KAAOA,EAAK,IAE/D,OADA3O,KAAK+Z,KAAKmyS,cAAe,EAClB,CACLjoE,OAAQ,IAAIlB,GACZmsE,cAAc,EACdC,gBAAgB,GAGpB,IAAKpsD,EAAY,CACf,IAAKksD,EACH,MAAO,CACLhrE,OAAQ,IAAIlB,GACZmsE,cAAc,EACdC,gBAAgB,GAGpBpsD,EAAa,IAAI5iP,GAAa,IAC9B4iP,EAAWttP,KAAO,IAAIjC,EACxB,CACA,MAAM47S,EAAiBrsD,EAAWttP,KAC5B0T,QAAkBnpB,KAAKgvT,cAAc,CAAC,YAAa,aAAc,UAAW,UAAW,UAAW,QAASjsD,GAC3GrzC,EAAO/zM,GAAWyzS,EAAe36S,SAAS,QAAS,CAAC,EAAG,EAAG,EAAG,IAC7D8V,EAAS9O,GAAa2zS,EAAe36S,SAAS,UAAWjQ,GACzDwI,EAAY69S,GAAmBl8S,EAAM+gN,EAAMnlM,GAC3C05N,EAAS,IAAIlB,GACnB,IAAIY,EAoBJ,OAnBI3jP,KAAK+uT,KACPprE,QAAwB/O,EAAUqW,wBAAwBjrP,KAAK+uT,GAAI,YAE7C3rT,IAApBugP,GACFM,EAAOT,MAAMv8O,EAA6B,CAAC,KAAM08O,IAEnDM,EAAOT,MApp/CQ,GAop/CmB,CAAC3nN,EAAIltB,EAAM3B,EAAWud,EAAQ0kS,UAC1Dr6E,EAAU2W,gBAAgB,CAC9BvpO,OAAQ+gP,EACRjY,OACA3hO,YACAgiN,aAAc8Y,EACdyJ,iBAAkB1tP,KAAK2sT,oBAEzB1oE,EAAOT,MA3p/CM,GA2p/CmB,SACRpgP,IAApBugP,GACFM,EAAOT,MAAMv8O,EAAsB,IAErCjH,KAAK8Y,QACE,CACLmrO,SACAirE,cAAc,EACdC,eAAgBF,EAEpB,CACA,UAAM/rG,CAAK0xB,EAAWkW,EAAM7rO,EAAmB8qP,GAC7C,OAAO,IACT,CACA,kBAAIslD,GACF,OAAO,CACT,CACA,wBAAMC,CAAmB16E,EAAWkW,EAAMmI,GACxC,IAAKjzP,KAAK+iQ,WACR,OAEF,MAAM55O,QAAkBnpB,KAAKgvT,cAAc,CAAC,YAAa,OAAQ,aAAc,WAAYhvT,KAAK+iQ,YAC1F1L,EAAO,GACPjsP,EAAS,GACf,IAAImkT,EAAgB,KACpB,MAAMx8D,EAAO,CACX0F,YAAaruP,KAAKqlP,SAClB/2N,OAAO,EACP,OAAA4rN,CAAQh6O,EAAO2J,GACb,IAAK,MAAM+F,KAAQ1P,EAAMwM,WACN1T,IAAb4W,EAAKtP,MAGT6kT,IAAkBv1S,EAAKhN,UAAUY,OAAO,GACxCxC,EAAO7J,KAAKyY,EAAKtP,KACbsP,EAAKm6O,SACPkD,EAAK91P,KAAK6J,EAAOZ,KAAK,IAAIglT,WAC1BpkT,EAAO7K,OAAS,GAGtB,GAeF,SAbMq0O,EAAUie,eAAe,CAC7B7wO,OAAQhiB,KAAK+iQ,WACbjY,OACA3hO,YACA2pO,sBAAsB,EACtBO,gBAAgB,EAChBN,OACAE,YAEFjzP,KAAK8Y,QACD1N,EAAO7K,QACT82P,EAAK91P,KAAK6J,EAAOZ,KAAK,IAAIglT,WAExBn4D,EAAK92P,OAAS,GAAK82P,EAAK,GAAI,CAC9B,MAAM+3D,EAAiBpvT,KAAK+iQ,WAAWttP,KACjCi6M,EAAO/zM,GAAWyzS,EAAe36S,SAAS,QAAS,MACnD8V,EAAS9O,GAAa2zS,EAAe36S,SAAS,UAAW,MAC/DzU,KAAK+Z,KAAK01S,aAAezvT,KAAK0vT,gBAAgBH,EAAe7/F,EAAMnlM,GACnEvqB,KAAK+Z,KAAKw5O,YAAc8D,CAC1B,CACF,CACA,eAAAq4D,CAAgBtnF,EAAQ1Y,EAAMnlM,GAC5B,MAAM,KACJ5b,GACE3O,KAAK+Z,KACT21M,IAAS,CAAC,EAAG,EAAG,EAAG,GACnBnlM,IAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAC3B,MAAMvd,EAAY69S,GAAmBl8S,EAAM+gN,EAAMnlM,GAIjD,OAHAvd,EAAU,IAAM2B,EAAK,GACrB3B,EAAU,IAAM2B,EAAK,GACrBy5N,EAAS17N,EAAKW,eAAe+6N,EAAQp7N,GAC9BN,EAAKW,eAAe+6N,EAAQ79M,EACrC,CACA,cAAAolS,GACE,OAAI3vT,KAAK+Z,KAAKuyS,OACL,CACLzwR,GAAI77B,KAAK+Z,KAAK8hB,GACd9e,QAAS/c,KAAK+Z,KAAKgD,QACnBra,KAAM1C,KAAK+Z,KAAKwyS,UAChBqD,YAAa5vT,KAAK+Z,KAAKi5Q,YACvB68B,UAAW7vT,KAAK+Z,KAAKijR,gBACrBz4R,KAAM,GACN+nT,OAAQtsT,KAAK+Z,KAAKuyS,OAClBphD,KAAMlrQ,KAAK+Z,KAAKqF,UAChBQ,SAAU5f,KAAK4f,UAGZ,IACT,CACA,KAAA9G,GACE,IAAK,MAAMkJ,KAAUhiB,KAAK0rT,SACxB1pS,EAAOlJ,OAEX,CACA,mBAAA0zS,CAAoB/2S,GAClB,IAAKA,EAAKT,IAAI,OAASS,EAAKT,IAAI,UAE9B,OADAxN,EAAK,yDACE,GAET,IAAKiO,EAAKT,IAAI,UACZ,OAAOzE,EAAkBkF,EAAK5R,IAAI,MAEpC,MAAM0oT,EAAY,GACd92S,EAAKT,IAAI,MACXu3S,EAAUpnQ,QAAQ50C,EAAkBkF,EAAK5R,IAAI,OAE/C,IAAIisT,EAAWr6S,EACf,MAAM0E,EAAU,IAAIhE,GAIpB,IAHIV,EAAK7B,OACPuG,EAAQ5D,IAAId,EAAK7B,OAEZk8S,EAAS96S,IAAI,YAClB86S,EAAWA,EAASjsT,IAAI,UAClBisT,aAAoBt8S,MAASs8S,EAASl8S,QAASuG,EAAQnF,IAAI86S,EAASl8S,UAGtEk8S,EAASl8S,OACXuG,EAAQ5D,IAAIu5S,EAASl8S,OAEnBk8S,EAAS96S,IAAI,MACfu3S,EAAUpnQ,QAAQ50C,EAAkBu/S,EAASjsT,IAAI,OAGrD,OAAO0oT,EAAU/hT,KAAK,IACxB,EAEF,MAAM8jT,GACJ,WAAArlT,GACEjJ,KAAK6f,MAAQ,EACb7f,KAAK+vT,SAAW,EAChB/vT,KAAKw5O,MAp5/CA,EAq5/CLx5O,KAAKgwT,UAAY,CAAC,GAClBhwT,KAAKiwT,uBAAyB,EAC9BjwT,KAAKkwT,qBAAuB,CAC9B,CACA,QAAA1B,CAAS3uS,EAAOlR,EAAO,CAAC,EAAG,EAAG,EAAG,IAC/B,GAAIkR,aAAiBxM,GACnBrT,KAAK6f,MAAQ,OAGf,GAAqB,iBAAVA,EAAoB,CAC7B,GAAIA,EAAQ,EAAG,CACb7f,KAAK+vT,SAAWlwS,EAChB,MAAMyiB,GAAY3zB,EAAK,GAAKA,EAAK,IAAM,EACjCqvO,GAAarvO,EAAK,GAAKA,EAAK,IAAM,EACpC2zB,EAAW,GAAK07M,EAAY,IAAMn+N,EAAQyiB,GAAYziB,EAAQm+N,KAChEx2O,EAAK,oDAAoDqY,KACzDA,EAAQ,EAEZ,CACA7f,KAAK6f,MAAQA,CACf,CACF,CACA,QAAA4uS,CAASj1E,GACP,GAAMA,aAAiBnmO,GAGvB,OAAQmmO,EAAM92O,MACZ,IAAK,IACH1C,KAAKw5O,MAj7/CJ,EAk7/CD,MACF,IAAK,IACHx5O,KAAKw5O,MAn7/CH,EAo7/CF,MACF,IAAK,IACHx5O,KAAKw5O,MAr7/CF,EAs7/CH,MACF,IAAK,IACHx5O,KAAKw5O,MAv7/CJ,EAw7/CD,MACF,IAAK,IACHx5O,KAAKw5O,MAz7/CA,EA87/CX,CACA,YAAAk1E,CAAasB,EAAWG,GAAa,GACnC,GAAI/uT,MAAMsT,QAAQs7S,GAAY,CAC5B,IAAIjK,GAAU,EACVqK,GAAW,EACf,IAAK,MAAMzzS,KAAWqzS,EAAW,CAE/B,MADqBrzS,GAAW,GACd,CAChBopS,GAAU,EACV,KACF,CAAWppS,EAAU,IACnByzS,GAAW,EAEf,CACyB,IAArBJ,EAAUzvT,QAAgBwlT,IAAYqK,GACxCpwT,KAAKgwT,UAAYA,EACbG,GACFnwT,KAAKyuT,SAASp7S,GAAKxP,IAAI,OAGzB7D,KAAK6f,MAAQ,CAEjB,MAAWmwS,IACThwT,KAAK6f,MAAQ,EAEjB,CACA,yBAAA8uS,CAA0Bh8B,GACpBn4Q,OAAOC,UAAUk4Q,KACnB3yR,KAAKiwT,uBAAyBt9B,EAElC,CACA,uBAAAi8B,CAAwBj8B,GAClBn4Q,OAAOC,UAAUk4Q,KACnB3yR,KAAKkwT,qBAAuBv9B,EAEhC,EAEF,MAAM09B,WAAyBjH,GAC7B,WAAAngT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,GACEwU,EACJ,GAAIxU,EAAKT,IAAI,OAAQ,CACnB,MAAMs7S,EAAS76S,EAAKd,OAAO,OAC3B3U,KAAK+Z,KAAKw2S,UAAYD,aAAkBj8S,GAAMi8S,EAAO9jT,WAAa,KAClE,MAAMgkT,EAAK/6S,EAAK5R,IAAI,MACpB7D,KAAK+Z,KAAK02S,UAAYD,aAAcn9S,GAAOm9S,EAAG9tT,KArhgD3C,GAshgDL,CACA,IAAIguT,EAAW,KACf,GAAI1wT,KAAK+Z,KAAK02S,YAAclrT,EAA2B,CACrD,MAAM6Q,EAASX,EAAK5R,IAAI,OACxB7D,KAAK8qT,SAAS10S,EAAOvS,IAAI,MACzB7D,KAAK+Z,KAAK42S,SAAW3wT,KAAKguT,OAC1BhuT,KAAK+qT,YAAY30S,EAAOvS,IAAI,aAC5B7D,KAAK+Z,KAAK+xS,YAAc9rT,KAAK+rT,UACxB31S,EAAOpB,IAAI,iBAGdhV,KAAK4wT,gBAAgBx6S,EAAOvS,IAAI,iBAChC7D,KAAK+Z,KAAK82S,aAAe7wT,KAAK6wT,cAH9B7wT,KAAK+Z,KAAK82S,aAAe,KAKtBz6S,EAAOpB,IAAI,MAGdhV,KAAKgrT,oBAAoB50S,EAAOvS,IAAI,MACpC7D,KAAK+Z,KAAKkyS,iBAAmBjsT,KAAKisT,kBAHlCjsT,KAAK+Z,KAAKkyS,iBAAmB,KAK/ByE,EAAWt6S,EAAOzB,OAAO,SACpByB,EAAOpB,IAAI,MAGdhV,KAAKmrT,SAAS/0S,EAAO3B,SAAS,MAC9BzU,KAAK+Z,KAAKoU,MAAQnuB,KAAKmuB,OAHvBnuB,KAAK+Z,KAAKoU,MAAQ,IAKtB,MACEnuB,KAAK+Z,KAAK42S,SAAW3wT,KAAKguT,OAC1BhuT,KAAK4wT,gBAAgBn7S,EAAK5R,IAAI,iBAC9B7D,KAAK+Z,KAAK82S,aAAe7wT,KAAK6wT,aAC9BH,EAAWj7S,EAAKd,OAAO,SAClBc,EAAKT,IAAI,OACZhV,KAAK+Z,KAAKoU,MAAQ,MAGtBnuB,KAAK+Z,KAAK22S,SAAWA,aAAoBr8S,GAAMq8S,EAASlkT,WAAa,KACjEiJ,EAAKT,IAAI,QACXhV,KAAK+Z,KAAKunS,SAAWqE,GAAWiB,kBAAkBnxS,EAAK5R,IAAI,OAE/D,CACA,eAAA+sT,CAAgBC,GACd7wT,KAAK6wT,aAAuC,iBAAjBA,EAA4BA,EAAe,IACxE,CACA,qBAAAC,EAAsB,KACpBr9S,EAAI,MACJgnO,EAAK,YACLm1E,EAAW,UACXC,EAAS,UACTkB,EAAS,YACTvuD,EAAW,UACXwuD,EAAS,eACTC,IAEA,IAAI5yR,EAAO7jB,OAAO02S,UACd3yR,EAAO/jB,OAAO02S,UACd5yR,EAAO9jB,OAAO22S,UACdrmF,EAAOtwN,OAAO22S,UAClB,MAAM/lT,EAAS,CAAC,KACZqvO,GACFrvO,EAAO7J,KAAKk5O,GAEVm1E,GACFxkT,EAAO7J,KAAK,GAAGquT,EAAY,MAAMA,EAAY,MAAMA,EAAY,SAE7DC,GACFzkT,EAAO7J,KAAK,GAAGsuT,EAAU,MAAMA,EAAU,MAAMA,EAAU,SAE3D,MAAMuB,EAAcpxT,KAAK+Z,KAAKkwS,YAAc3+R,aAAahf,KAAK,CAACtM,KAAKolS,UAAU,GAAIplS,KAAKolS,UAAU,GAAIplS,KAAKolS,UAAU,GAAIplS,KAAKolS,UAAU,GAAIplS,KAAKolS,UAAU,GAAIplS,KAAKolS,UAAU,GAAIplS,KAAKolS,UAAU,GAAIplS,KAAKolS,UAAU,KACnN,IAAK,IAAI9jS,EAAI,EAAG0P,EAAKogT,EAAY7wT,OAAQe,EAAI0P,EAAI1P,GAAK,EAAG,CACvD,MAAO+vT,EAAIC,EAAIC,EAAIC,GAAMP,EAAe7lT,EAAQgmT,EAAY7mT,SAASjJ,EAAGA,EAAI,IAC5E+8B,EAAOj0B,KAAKC,IAAIg0B,EAAMgzR,GACtB/yR,EAAOl0B,KAAK2D,IAAIuwB,EAAMgzR,GACtB/yR,EAAOn0B,KAAKC,IAAIk0B,EAAMgzR,GACtBzmF,EAAO1gO,KAAK2D,IAAI+8N,EAAM0mF,EACxB,CACApmT,EAAO7J,KAAK,KACZ,MAAMkwT,EAAW,IAAIj+S,GAAKC,GACpBuvP,EAAuB,IAAIxvP,GAAKC,GACtCuvP,EAAqBjuP,IAAI,UAAW1B,GAAKxP,IAAI,SAC7C,MAAM6tT,EAAmB,IAAIvxS,GAAa/U,EAAOZ,KAAK,MACtDknT,EAAiBj8S,KAAOutP,EACxByuD,EAAS18S,IAAI,MAAO28S,GACpB,MAAMC,EAAS,IAAIn+S,GAAKC,GACpBs9S,GACFY,EAAO58S,IAAI,KAAM1B,GAAKxP,IAAIktT,IAED,iBAAhBvuD,GACTmvD,EAAO58S,IAAI,KAAMytP,GAEM,iBAAdwuD,GACTW,EAAO58S,IAAI,KAAMi8S,GAEnB,MAAMY,EAAY,IAAIp+S,GAAKC,GAC3Bm+S,EAAU78S,IAAI,MAAO48S,GACrB,MAAMxoS,EAAY,IAAI3V,GAAKC,GAC3B0V,EAAUpU,IAAI,YAAa68S,GAC3BzoS,EAAUpU,IAAI,UAAW08S,GACzB,MAAMrC,EAAiB,IAAI57S,GAAKC,GAChC27S,EAAer6S,IAAI,YAAaoU,GAChC,MAAMumM,EAAO1vN,KAAK+Z,KAAKpL,KAAO,CAAC0vB,EAAME,EAAMD,EAAMwsM,GACjDskF,EAAer6S,IAAI,OAAQ26M,GAC3B1vN,KAAK+iQ,WAAa,IAAI5iP,GAAa,mBACnCngB,KAAK+iQ,WAAWttP,KAAO25S,EACvBpvT,KAAK0rT,SAASnqT,KAAKvB,KAAK+iQ,WAAY2uD,EACtC,CACA,gCAAa1H,CAAoBv2S,EAAMo2S,EAAY9/C,EAAS9/O,GAC1D,MAAM4nS,EAAgBhI,EAAW7zS,MAAQvC,EAAK02P,qBACxClH,QAAWjjQ,KAAK8xT,0BAA0BjI,EAAYp2S,EAAMwW,GAClE,IAAI8nS,EACJ,GAAI9uD,EAAI,CACN,MAAM+uD,EAAQv+S,EAAK02P,qBACnB4nD,EAAiB/xT,KAAKiyT,cAAcpI,EAAYp2S,EAAM,CACpDu+S,UAEFjoD,EAAQxzP,IAAIy7S,EAAO,CACjBj4S,KAAMkpP,GAEV,MACE8uD,EAAiB/xT,KAAKiyT,cAAcpI,EAAYp2S,EAAM,CAAC,GAQzD,OANI+G,OAAOC,UAAUovS,EAAWhgD,eAC9BkoD,EAAeh9S,IAAI,eAAgB80S,EAAWhgD,cAEhDE,EAAQxzP,IAAIs7S,EAAe,CACzB93S,KAAMg4S,IAED,CACL/7S,IAAK67S,EAET,CACA,qCAAaxH,CAAyBhD,EAAmB5zS,EAAMo2S,EAAY5/R,GACzE,MAAMg5O,QAAWjjQ,KAAK8xT,0BAA0BjI,EAAYp2S,EAAMwW,GAC5D8nS,EAAiB/xT,KAAKiyT,cAAcpI,EAAYp2S,EAAMwvP,EAAK,CAC/DA,MACE,CAAC,GACCivD,EAAgB,IAAIlyT,KAAKwB,UAAUyH,YAAY,CACnDwM,KAAMs8S,EACNt+S,OACA4zS,oBACAr5D,iBAAkB/jO,EAAO+jO,mBAK3B,OAHI67D,EAAW7zS,MACbk8S,EAAcl8S,IAAMk8S,EAAcC,aAAetI,EAAW7zS,KAEvDk8S,CACT,EAEF,MAAM9J,WAAyBgB,GAC7B,WAAAngT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,EAAI,KACJhC,EAAI,kBACJ4zS,GACEp9R,EACElQ,EAAO/Z,KAAK+Z,KAClB/Z,KAAK4sT,iBAAmB3iS,EAAO29R,gBAC/B7tS,EAAKgwS,eA9rgDC,QA+rgDiB3mT,IAAnB2W,EAAKwyS,YACPxyS,EAAKwyS,UAAYvsT,KAAKwsT,oBAAoB/2S,SAEvBrS,IAAjB2W,EAAKgD,UACPhD,EAAKgD,QAAUF,GAAepJ,EAAMgC,EAAM/P,IAE5C,IAAI0sT,EAAan4S,GAAuB,CACtCxE,OACAjS,IAAK,IACLiR,UAAU,IAEZsF,EAAKq4S,WAAapyT,KAAKqyT,iBAAiBD,GACxC,MAAME,EAAoBr4S,GAAuB,CAC/CxE,OACAjS,IAAK,KACLiR,UAAU,IAGZ,GADAsF,EAAKu4S,kBAAoBtyT,KAAKqyT,iBAAiBC,QAC5BlvT,IAAfgvT,GAA4B/K,EAAkBD,YAAa,CAC7D,MAAMtrS,EAAO9b,KAAKguT,OAAOtjT,IACrBoR,IACF9b,KAAKuyT,kBAAmB,EACxBx4S,EAAKq4S,WAAaA,EAAa/K,EAAkBD,YAAYoL,SAAS12S,GAE1E,MACmB1Y,IAAfgvT,GAAuD,OAA3Br4S,EAAKu4S,oBACnCv4S,EAAKq4S,WAAar4S,EAAKu4S,mBAEzBv4S,EAAK04S,gBAAkBliT,EAAkBkF,EAAK5R,IAAI,OAAS,IAC3D7D,KAAK4tT,qBAAqB3jS,GAC1BlQ,EAAKiyS,gBAAkBhsT,KAAK4sT,uBAAwCxpT,IAApB2W,EAAKq4S,YAAgD,OAApBr4S,EAAKq4S,WACtF,MAAMrK,EAAY9tS,GAAuB,CACvCxE,OACAjS,IAAK,OAEPuW,EAAKguS,UAAYA,aAAqB10S,GAAO00S,EAAUrlT,KAAO,KAC9D,MAAMgwT,EAAiBz4S,GAAuB,CAC5CxE,OACAjS,IAAK,OAEDmvT,EAAoBtL,EAAkB14C,SAAS9qQ,IAAI,MACnD+uT,EAAsB5yT,KAAK+iQ,YAAYttP,KAAK5R,IAAI,aACtD7D,KAAK6yT,gBAAkB,CACrBH,iBACAC,oBACAC,sBACAE,gBAAiBt/S,GAAK4B,MAAM,CAC1B3B,OACA4B,UAAW,CAACq9S,EAAgBE,EAAqBD,GACjDr9S,eAAe,KAGnByE,EAAKg5S,WAAa94S,GAAuB,CACvCxE,OACAjS,IAAK,SAEFgX,OAAOC,UAAUV,EAAKg5S,aAAeh5S,EAAKg5S,WAAa,KAC1Dh5S,EAAKg5S,WAAa,GAEpBh5S,EAAKi5S,SAAWhzT,KAAKizT,aAjugDb,GAkugDRl5S,EAAK47Q,SAAW31R,KAAKizT,aAjugDb,GAkugDRl5S,EAAKs8Q,OAASr2R,KAAK6sT,SAAS9yS,EAAK8xS,gBA9ugD3B,IA8ugDsE7rT,KAAK6sT,SAAS9yS,EAAK8xS,gBAAiBrmT,EAClH,CACA,gBAAA6sT,CAAiBa,GACf,OAAI9xT,MAAMsT,QAAQw+S,GACTA,EAAU1/R,QAAOxZ,GAAwB,iBAATA,IAAmBiC,KAAIjC,GAAQzJ,EAAkByJ,KAC/Ek5S,aAAqB7/S,GACvB9C,EAAkB2iT,EAAUxwT,MACL,iBAAdwwT,EACT3iT,EAAkB2iT,GAEpB,IACT,CACA,YAAAD,CAAazqG,GACX,SAAUxoN,KAAK+Z,KAAKg5S,WAAavqG,EACnC,CACA,WAAAykG,CAAYtqR,GACV,OAAO,CACT,CACA,YAAAwqR,CAAaluS,EAAmBk0S,GAC9B,OAAIA,EACKnzT,KAAKqtT,SAEPjkT,MAAM+jT,aAAaluS,EAAmBk0S,KAAiBnzT,KAAK6sT,SAAS7sT,KAAK2iC,MAAOn9B,EAC1F,CACA,iBAAAma,CAAkBV,GAChB,IAAIW,EAAWX,GAAmBpb,IAAI7D,KAAK+Z,KAAK8hB,KAAKjc,SAIrD,YAHiBxc,IAAbwc,IACFA,EAAW5f,KAAK4f,UAED,IAAbA,EACKpb,EAIFmb,GAAkBC,EAFX5f,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GAClC3O,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GAEpD,CACA,iCAAAykT,CAAkCn0S,GAChC,IAAIW,EAAWX,GAAmBpb,IAAI7D,KAAK+Z,KAAK8hB,KAAKjc,SAIrD,QAHiBxc,IAAbwc,IACFA,EAAW5f,KAAK4f,WAEb5f,KAAKg9R,kBAAoBh9R,KAAKgzR,YACjC,MAAO,GAET,MAAMnzQ,EAAQ7f,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GAC3CmR,EAAS9f,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GAC5CA,EAAoB,IAAbiR,GAA+B,MAAbA,EAAmB,OAAOC,KAASC,OAAc,OAAOA,KAAUD,OACjG,IAAInV,EAAM,GAQV,OAPI1K,KAAKg9R,kBACPtyR,EAAM,GAAG22P,GAAYrhQ,KAAKg9R,iBAAiB,MAASruR,QAElD3O,KAAKgzR,cAEPtoR,GAAO,GADa1K,KAAK8yR,YAAYjzQ,OAAS,OACnBwhP,GAAYrhQ,KAAKgzR,aAAa,MAAUrkR,QAE9DjE,CACT,CACA,qBAAM6gP,CAAgB3W,EAAWkW,EAAM7H,EAAQhkO,GAC7C,GA14gDiB,GA04gDbgkO,KAAoDjjP,gBAAgBmoT,MAA+BnoT,KAAK+Z,KAAKqyS,SAAWpsT,KAAK+Z,KAAKmyS,aACpI,MAAO,CACLjoE,OAAQ,IAAIlB,GACZmsE,cAAc,EACdC,gBAAgB,GAGpB,IAAKnvT,KAAKqzT,SACR,OAAOjqT,MAAMmiP,gBAAgB3W,EAAWkW,EAAM7H,EAAQhkO,GAExD,MAAM08M,QAAgB37N,KAAKszT,eAAe1+E,EAAWkW,EAAM7H,EAAQhkO,GACnE,GAAIjf,KAAK+iQ,YAA0B,OAAZpnC,EACrB,OAAOvyN,MAAMmiP,gBAAgB3W,EAAWkW,EAAM7H,EAAQhkO,GAExD,MAAMglO,EAAS,IAAIlB,GACnB,IAAK/iP,KAAK8tT,oBAAkC,OAAZnyF,EAC9B,MAAO,CACLsoB,SACAirE,cAAc,EACdC,gBAAgB,GAGpB,MAAMF,KAAsBjvT,KAAK+Z,KAAKmyS,cAn6gD/B,EAm6gD+CjpE,GAEhDvzB,EAAO,CAAC,EAAG,EAAG1vN,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GAAI3O,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,IACxF3B,EAAY69S,GAAmB7qT,KAAK+Z,KAAKpL,KAAM+gN,EAFtC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAG/B,IAAIi0B,EACA3jP,KAAK+uT,KACPprE,QAAwB/O,EAAUqW,wBAAwBjrP,KAAK+uT,GAAI,YAE7C3rT,IAApBugP,GACFM,EAAOT,MAAMv8O,EAA6B,CAAC,KAAM08O,IAEnDM,EAAOT,MArrgDQ,GAqrgDmB,CAACxjP,KAAK+Z,KAAK8hB,GAAI77B,KAAK+Z,KAAKpL,KAAM3B,EAAWhN,KAAK2f,kBAAkBV,GAAoBgwS,IACvH,MAAMjtS,EAAS,IAAI7B,GAAaw7M,GAWhC,aAVMiZ,EAAU2W,gBAAgB,CAC9BvpO,SACA8oO,OACA3hO,UAAWnpB,KAAK6yT,gBAAgBC,gBAChC3nF,aAAc8Y,IAEhBA,EAAOT,MA5rgDM,GA4rgDmB,SACRpgP,IAApBugP,GACFM,EAAOT,MAAMv8O,EAAsB,IAE9B,CACLg9O,SACAirE,cAAc,EACdC,eAAgBF,EAEpB,CACA,UAAAsE,CAAW3zS,GACT,MAAMyuS,EAAK,IAAI76S,GAAK,MAUpB,OATIoM,GACFyuS,EAAGt5S,IAAI,IAAK6K,GAEV5f,KAAKgzR,aACPq7B,EAAGt5S,IAAI,KAAMy1S,GAAiBxqT,KAAKgzR,cAEjChzR,KAAKg9R,iBACPqxB,EAAGt5S,IAAI,KAAMy1S,GAAiBxqT,KAAKg9R,kBAE9BqxB,EAAGp6S,KAAO,EAAIo6S,EAAK,IAC5B,CACA,cAAAmF,CAAev0S,EAAmBxJ,GAAO,CACzC,QAAAg+S,CAASh+S,EAAM9M,EAAO8K,EAAMs2P,GAC1B,MACEt0P,KAAMojD,EACN7iD,IAAKs2P,GA9z+CX,SAA2B72P,EAAMO,EAAKvC,GACpC,MAAM0G,EAAU,IAAIhE,GACdu9S,EAAYj+S,EACZuY,EAAS,CACbvY,KAAM,KACNO,IAAK,MAEP,KAAOP,aAAgBjC,KAAS2G,EAAQnF,IAAIgB,KAC1CmE,EAAQ5D,IAAIP,IACRP,EAAKT,IAAI,OAFmC,CAMhD,MADAgB,EAAMP,EAAKd,OAAO,qBACGN,IACnB,OAAO2Z,EAETvY,EAAOhC,EAAKa,MAAM0B,EACpB,CAKA,OAJIP,aAAgBjC,IAAQiC,IAASi+S,IACnC1lS,EAAOvY,KAAOA,EACduY,EAAOhY,IAAMA,GAERgY,CACT,CAwy+CQ2lS,CAAkBl+S,EAAMzV,KAAKgW,IAAKvC,GACtC,GAAKolD,GAEE,IAAKkxM,EAAQ/0P,IAAIs3P,GAAY,CAClC,MAAMsnD,EAAgB/6P,EAAWhjD,QAKjC,OAJA+9S,EAAc7+S,IAAI,IAAKpM,GACvBohQ,EAAQxzP,IAAI+1P,EAAW,CACrBvyP,KAAM65S,IAEDA,CACT,OAREn+S,EAAKV,IAAI,IAAKpM,GAShB,OAAO,IACT,CACA,UAAMu6M,CAAK0xB,EAAWkW,EAAM7rO,EAAmB8qP,GAC7C,MAAM6hC,EAAe3sR,GAAmBpb,IAAI7D,KAAK+Z,KAAK8hB,IAChD8G,EAAQ3iC,KAAK8sT,YAAYlhB,GAAcmhB,OAAQnhB,GAAcohB,SACnE,IAAIrkT,EAAQijS,GAAcjjS,MACxBiX,EAAWgsR,GAAchsR,SAC3B,GAAIjX,IAAU3I,KAAK+Z,KAAKq4S,iBAAwBhvT,IAAVuF,EAAqB,CACzD,IAAK3I,KAAKuyT,uBAAiCnvT,IAAbwc,QAAoCxc,IAAVu/B,EACtD,OAEFh6B,IAAU3I,KAAK+Z,KAAKq4S,UACtB,CACA,QAAiBhvT,IAAbwc,IAA2B5f,KAAKuyT,kBAAoBnxT,MAAMsT,QAAQ/L,IAAUvH,MAAMsT,QAAQ1U,KAAK+Z,KAAKq4S,aAAe5gT,GAAa7I,EAAO3I,KAAK+Z,KAAKq4S,kBAAyBhvT,IAAVu/B,EAClK,YAEev/B,IAAbwc,IACFA,EAAW5f,KAAK4f,UAElB,IAAImjP,EAAa,KACjB,IAAK/iQ,KAAK4sT,mBACR7pD,QAAmB/iQ,KAAKszT,eAAe1+E,EAAWkW,EAh/gDhD,EAg/gDgF7rO,GAC/D,OAAf8jP,QAAiC3/P,IAAVu/B,GACzB,OAGJ,IAAIilR,GAAkB,EAClB7kD,GAAY6kD,kBACdA,GAAkB,EAClB7kD,EAAa,MAEf,MAAM,KACJtvP,GACEmhO,EACEi/E,EAAepgT,EAAK+V,WAAWxpB,KAAKgW,KAC1C,KAAM69S,aAAwBrgT,IAC5B,OAEF,MAAMiC,EAAO,IAAIjC,GAAKC,GACtB,IAAK,MAAMjQ,KAAOqwT,EAAaj/S,UACjB,OAARpR,GACFiS,EAAKV,IAAIvR,EAAKqwT,EAAal/S,OAAOnR,IAGtC,QAAcJ,IAAVu/B,IACFltB,EAAKV,IAAI,IAAK4tB,GACK,OAAfogO,IAAwB6kD,GAAiB,CAC3C,MAAM3kD,EAAK4wD,EAAal/S,OAAO,MAC3BsuP,GACFxtP,EAAKV,IAAI,KAAMkuP,EAEnB,CAEF,MAAMijB,EAAM,CACVpqQ,KAAM9b,KAAK+Z,KAAKwyS,UAChB5jT,SAEIirT,EAAgB5zT,KAAKyzT,SAASh+S,EAAMrU,MAAMsT,QAAQ/L,GAASA,EAAMsT,IAAIoD,IAA0BA,GAAuB1W,GAAQ8K,EAAMs2P,GAC1I/pQ,KAAKwzT,eAAev0S,EAAmB20S,GAAiBn+S,GACxD,MAAMq+S,EAAU9zT,KAAKuzT,WAAW3zS,GAShC,GARIk0S,GACFr+S,EAAKV,IAAI,KAAM++S,GAEjB/pD,EAAQxzP,IAAIvW,KAAKgW,IAAK,CACpB+D,KAAMtE,EACNywQ,MACA0hC,oBAEiB,OAAf7kD,EAAqB,CACvB,MAAMgxD,EAAStgT,EAAK02P,qBACd6pD,EAAK,IAAIxgT,GAAKC,GACpBgC,EAAKV,IAAI,KAAMi/S,GACfA,EAAGj/S,IAAI,IAAKg/S,GACZ,MAAM5qS,EAAYnpB,KAAKi0T,uBAAuBxgT,GACxCi+S,EAAmB,IAAIvxS,GAAa4iP,GACpCqsD,EAAiBsC,EAAiBj8S,KAAO,IAAIjC,GAAKC,GACxD27S,EAAer6S,IAAI,UAAW1B,GAAKxP,IAAI,SACvCurT,EAAer6S,IAAI,YAAaoU,GAChCimS,EAAer6S,IAAI,OAAQ,CAAC,EAAG,EAAG/U,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GAAI3O,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,KAC5G,MAAMulT,EAAiBl0T,KAAK2f,kBAAkBV,GAC1Ci1S,IAAmB1vT,GACrB4qT,EAAer6S,IAAI,SAAUm/S,GAE/BnqD,EAAQxzP,IAAIw9S,EAAQ,CAClBh6S,KAAM23S,EACNxrC,IAAK,KACL0hC,iBAAiB,GAErB,CACAnyS,EAAKV,IAAI,IAAK,KAAKpD,OACrB,CACA,oBAAM2hT,CAAe1+E,EAAWkW,EAAM7H,EAAQhkO,GAE5C,GADmBjf,KAAKizT,aAAaxtT,GAEnC,OAAO,KAET,MAAMmmS,EAAe3sR,GAAmBpb,IAAI7D,KAAK+Z,KAAK8hB,IACtD,IAAIlzB,EAAOiX,EAKX,GAJIgsR,IACFjjS,EAAQijS,EAAauoB,gBAAkBvoB,EAAajjS,MACpDiX,EAAWgsR,EAAahsR,eAETxc,IAAbwc,QAAoCxc,IAAVuF,IAAwB3I,KAAK4sT,oBACpD5sT,KAAKuyT,kBAAoBvyT,KAAK+iQ,YACjC,OAAO,KAGX,MAAMh7M,EAAS/nD,KAAKozT,kCAAkCn0S,GACtD,QAAc7b,IAAVuF,IACFA,EAAQ3I,KAAK+Z,KAAKq4S,YACbzpT,GACH,MAAO,aAAao/C,SAQxB,GALI3mD,MAAMsT,QAAQ/L,IAA2B,IAAjBA,EAAMpI,SAChCoI,EAAQA,EAAM,IAEhBjB,EAAwB,iBAAViB,EAAoB,oCAClCA,EAAQA,EAAM6mT,UACVxvT,KAAK+Z,KAAKq6S,MAAO,CACnB,MAAMliK,EAASlyJ,KAAK+Z,KAAKhS,QAAQg3Q,MAAK,EACpCs1C,iBACI1rT,IAAU0rT,IAChB1rT,EAAQupJ,GAAQoiK,cAAgB3rT,CAClC,CACA,GAAc,KAAVA,EACF,MAAO,aAAao/C,cAEL3kD,IAAbwc,IACFA,EAAW5f,KAAK4f,UAElB,IACIktB,EADAynR,GAAa,EAEbv0T,KAAK+Z,KAAKsuR,WACZv7P,EAAQnkC,EAAMqT,MAAM,YAAYC,KAAIuxB,GAAQA,EAAK8pN,UAAU,SAC3Di9D,EAAYznR,EAAMvsC,QAElBusC,EAAQ,CAACnkC,EAAMo1C,QAAQ,WAAY,IAAIu5M,UAAU,QAInD,IAAI3D,EAAc3zP,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GACjDy6B,EAAappC,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GACnC,KAAbiR,GAAgC,MAAbA,KACpBwpB,EAAYuqN,GAAe,CAACA,EAAavqN,IAEvCppC,KAAK8tT,qBACR9tT,KAAK+Z,KAAKg0S,sBAAwB9sD,GAAuBjhQ,KAAK8tT,mBAAqB,wBAErF,IACID,EAAmB57D,EAAUv7B,EAD7BpU,QAAa8lG,GAAiBoM,aAAa5/E,EAAWkW,EAAM9qP,KAAK+Z,KAAKg0S,sBAAuB/tT,KAAK6yT,gBAAgBC,iBAEtH,MAAM2B,EAAe,GACrB,IAAIC,GAAgB,EACpB,IAAK,MAAMlnR,KAAQV,EAAO,CACxB,MAAM6nR,EAAgBryG,EAAKyhB,aAAav2L,GACpCmnR,EAAcp0T,OAAS,IACzBm0T,GAAgB,GAElBD,EAAalzT,KAAKozT,EAAcnqT,KAAK,IACvC,CACA,GAAIkqT,GA3nhDA,EA2nhDiBzxE,EACnB,MAAO,CACL2kE,iBAAiB,GAGrB,GAAI8M,GAAiB10T,KAAK0sT,4BAA6B,CACrD,MAAM/uS,EAAa3d,KAAK+Z,KAAKs9Q,KAAO,YAAc,aAC5Cu9B,EAAkB,IAAIrzD,GAAgB3sB,EAAUnhO,KAAMkK,GACtDwL,EAAYyrS,EAAgBzyD,oBAAoBr1N,EAAMtiC,KAAK,KAC3DqqT,EAAU1rS,EAAUxU,OAAO,QACjC,GAAI3U,KAAK6yT,gBAAgBC,gBAAgB99S,IAAI,QAAS,CACpD,MAAM8/S,EAAU90T,KAAK6yT,gBAAgBC,gBAAgBjvT,IAAI,QACzD,IAAK,MAAML,KAAOqxT,EAAQjgT,UACxBkgT,EAAQ//S,IAAIvR,EAAKqxT,EAAQlgT,OAAOnR,GAEpC,MACExD,KAAK6yT,gBAAgBC,gBAAgB/9S,IAAI,OAAQ8/S,GAEnD,MAAM90G,EAAW60G,EAAgB70G,SAASr9M,KAC1C4/M,QAAa8lG,GAAiBoM,aAAa5/E,EAAWkW,EAAM,CAC1D/qC,WACAkyC,SAAU,GACT9oO,GACH,IAAK,IAAI7nB,EAAI,EAAG0P,EAAKyjT,EAAal0T,OAAQe,EAAI0P,EAAI1P,IAChDmzT,EAAanzT,GAAKie,GAAoButB,EAAMxrC,IAE9C,MAAMyzT,EAAyBrxT,OAAO+5C,OAAO/5C,OAAOwP,OAAO,MAAOlT,KAAK+Z,KAAKg0S,uBAC5E/tT,KAAK+Z,KAAKg0S,sBAAsB97D,SAAW,EAC3CjyP,KAAK+Z,KAAKg0S,sBAAsBhuG,SAAWA,GAC1C8tG,EAAmB57D,EAAUv7B,GAAc12N,KAAKg1T,iBAAiBrhE,EAAc,EAAoBvqN,EAAa,EAAqBzgC,EAAO25M,EAAMiyG,GACnJv0T,KAAK+Z,KAAKg0S,sBAAwBgH,CACpC,MACO/0T,KAAK0sT,6BACRllT,EAAK,2FAENqmT,EAAmB57D,EAAUv7B,GAAc12N,KAAKg1T,iBAAiBrhE,EAAc,EAAoBvqN,EAAa,EAAqBzgC,EAAO25M,EAAMiyG,GAErJ,IAAIj/P,EAAUgtJ,EAAKhtJ,QAEjBA,EADE92C,MAAM82C,GACE3wD,EAAkB+xN,EAElBtsN,KAAK2D,IAAIpJ,EAAkB+xN,EAAYtsN,KAAK6F,IAAIqlD,GAAW28L,GAEvE,MAAMgjE,EAAkB7qT,KAAKC,IAAID,KAAK6W,OAAO0yO,EAAc1B,GAAY,GAhEhD,GAiEjBijE,EAAYl1T,KAAK+Z,KAAKo7S,cAC5B,GAAIn1T,KAAK+Z,KAAKsuR,UACZ,OAAOroS,KAAKo1T,wBAAwBvH,EAAmB4G,EAAcnyG,EAAM2vC,EAAU7oN,EAAYuqN,EAAauhE,EAlExF,EAkEoHD,EAAiB3/P,EAASohK,EAAYz3M,GAElL,GAAIjf,KAAK+Z,KAAKs9Q,KACZ,OAAOr3R,KAAKq1T,mBAAmBxH,EAAmBvrG,EAAMmyG,EAAa,GAAIxiE,EAAU7oN,EAAYuqN,EArEzE,EAqEuGshE,EAAiB3/P,EAASohK,EAAYz3M,GAErK,MAAMq2S,EAAgBL,EAAkB3/P,EACxC,OAAkB,IAAd4/P,GAAmBA,EAAY,EAC1B,aAAantQ,OAAc8lQ,EAAoB,YAAYjvS,GAzE5C,MAyE+EA,GAAe02S,UAAsBh5S,GAAam4S,EAAa,mBAM/J,aAAa1sQ,OAAc8lQ,EAAoB,mBADjC7tT,KAAKu1T,YAAYd,EAAa,GAAInyG,EAAM2vC,EAAU7oN,EAAY8rR,EAHlE,CACfthS,MAAO,GA5Ee,EA8EiG0hS,aAE3H,CACA,yBAAad,CAAa5/E,EAAWkW,EAAM0qE,EAAgBrsS,GACzD,MAAMgiN,EAAe,IAAI4X,GACnBgI,EAAe,CACnBzoC,KAAM,KACN,KAAAzsM,GACE,OAAO7V,IACT,IAEI,SACJ+/M,EAAQ,SACRkyC,GACEujE,EAEJ,aADM5gF,EAAU2Y,cAAcpkO,EAAW,CAAC42L,GAAY1sM,GAAKxP,IAAIk8M,GAAWkyC,GAAW,KAAM9mB,EAAc2f,EAAMC,EAAc,MACtHA,EAAazoC,IACtB,CACA,aAAAmzG,CAAcp+D,EAAM/0C,GAClB,OAAOA,EAAKohB,cAAc2zB,GAAMvwC,QAAO,CAACjnM,EAAO4+C,IAAU5+C,EAAQ4+C,EAAM5+C,OAAO,GAAK,GACrF,CACA,gBAAAm1S,CAAiBl1S,EAAQD,EAAOw3O,EAAM/0C,EAAMiyG,GAC1C,IAAI,SACFtiE,GACEjyP,KAAK+Z,KAAKg0S,sBACVr3F,GAAcu7B,GAAY,IAAMvtP,EAClCgxT,EAAgBtrT,KAAK0U,MAAMgB,EAAS42M,GACtC,IAAKu7B,EAAU,CACb,MAAM0jE,EAAqB5lT,GAAK3F,KAAK6W,MAAU,IAAJlR,GAAW,IACtD,IAAmB,IAAfwkT,EAAkB,CACpB,MAAMqB,EAAY51T,KAAKy1T,cAAcp+D,EAAM/0C,GAC3C2vC,EAAW0jE,EAAmBvrT,KAAKC,IAAIyV,EAASpb,EAAamb,EAAQ+1S,IACrEF,EAAgB,CAClB,KAAO,CACL,MAAM5oR,EAAQuqN,EAAKr7O,MAAM,YACnB65S,EAAc,GACpB,IAAK,MAAMroR,KAAQV,EAAO,CACxB,MAAM89K,EAAUtI,EAAKyhB,aAAav2L,GAAMhjC,KAAK,IACvCw3M,EAASM,EAAKohB,cAAc9Y,GAC5BiZ,EAAYvhB,EAAKshB,iBAAiBhZ,GACxCirG,EAAYt0T,KAAK,CACfisC,KAAMo9K,EACN5I,SACA6hB,aAEJ,CACA,MAAMiyF,EAAWC,IACf,IAAIpiE,EAAc,EAClB,IAAK,MAAM7e,KAAS+gF,EAGlB,GADAliE,GADe3zP,KAAKg2T,WAAW,KAAM1zG,EAAMyzG,EAAOl2S,EAAOi1N,GACnCv0O,OAASw1T,EAC3BpiE,EAAc7zO,EAChB,OAAO,EAGX,OAAO,CAAK,EAGd,IADA41S,EAAgBtrT,KAAK2D,IAAI2nT,EAAenB,GAEtC79F,EAAa52M,EAAS41S,EACtBzjE,EAAW0jE,EAAmBj/F,EAAahyN,GACvCoxT,EAAS7jE,IACXyjE,GAKN,CACA,MAAM,SACJ31G,EAAQ,UACRihD,GACEhhQ,KAAK+Z,KAAKg0S,sBACd/tT,KAAK8tT,mBA/reX,UAAiC,SAC/B77D,EAAQ,SACRlyC,EAAQ,UACRihD,IAEA,MAAO,IAAI7kP,GAAc4jM,MAAakyC,QAAeoP,GAAYL,GAAW,IAC9E,CAyregCi1D,CAAwB,CAChDhkE,WACAlyC,WACAihD,aAEJ,CACA,MAAO,CAAChhQ,KAAK8tT,mBAAoB77D,EAAUnyO,EAAS41S,EACtD,CACA,WAAAH,CAAYl+D,EAAM/0C,EAAM2vC,EAAU7oN,EAAY8rR,EAAWgB,EAAUC,EAAUC,GAC3E,IAAIxiS,EAGFA,EAFgB,IAAdshS,GAEO9rR,EADKppC,KAAKy1T,cAAcp+D,EAAM/0C,GAAQ2vC,GAChB,EACR,IAAdijE,EAED9rR,EADMppC,KAAKy1T,cAAcp+D,EAAM/0C,GAAQ2vC,EAClBkkE,EAErBA,EAEV,MAAME,EAAWz3S,GAAegV,EAAQsiS,EAAStiS,OAGjD,OAFAsiS,EAAStiS,MAAQA,EAEV,GAAGyiS,KADVD,EAAWx3S,GAAew3S,UACY95S,GAAa+6O,QACrD,CACA,sBAAA48D,CAAuBxgT,GACrB,MAAM,eACJi/S,EAAc,oBACdE,EAAmB,kBACnBD,GACE3yT,KAAK6yT,gBACH9yG,EAAW//M,KAAK+Z,KAAKg0S,uBAAuBhuG,SAClD,IAAKA,EACH,OAAO2yG,GAAkBl/S,GAAK0B,MAEhC,IAAK,MAAMiU,IAAa,CAACupS,EAAgBE,GACvC,GAAIzpS,aAAqB3V,GAAM,CAC7B,MAAM8iT,EAAYntS,EAAUtlB,IAAI,QAChC,GAAIyyT,aAAqB9iT,IAAQ8iT,EAAUthT,IAAI+qM,GAC7C,OAAO52L,CAEX,CAEF,GAAIwpS,aAA6Bn/S,GAAM,CACrC,MAAM+iT,EAAe5D,EAAkB9uT,IAAI,QAC3C,GAAI0yT,aAAwB/iT,IAAQ+iT,EAAavhT,IAAI+qM,GAAW,CAC9D,MAAMy2G,EAAc,IAAIhjT,GAAKC,GAC7B+iT,EAAYzhT,IAAIgrM,EAAUw2G,EAAa5hT,OAAOorM,IAC9C,MAAM02G,EAAmB,IAAIjjT,GAAKC,GAElC,OADAgjT,EAAiB1hT,IAAI,OAAQyhT,GACtBhjT,GAAK4B,MAAM,CAChB3B,OACA4B,UAAW,CAACohT,EAAkB/D,GAC9Bp9S,eAAe,GAEnB,CACF,CACA,OAAOo9S,GAAkBl/S,GAAK0B,KAChC,CACA,cAAAy6S,GACE,OAAO,IACT,EAEF,MAAM3H,WAA6BI,GACjC,WAAAn/S,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,GACEwU,EACAxU,EAAKT,IAAI,SACXhV,KAAK2iC,OA/thDD,EAguhDJ3iC,KAAK+Z,KAAKs8Q,QAAS,EACnB7uR,EAAK,+BAEPxH,KAAK+Z,KAAKmyS,aAAelsT,KAAK+Z,KAAKi5S,WAAahzT,KAAK+Z,KAAKqyS,OAC1DpsT,KAAKqzT,UAAW,EACoB,iBAAzBrzT,KAAK+Z,KAAKq4S,aACnBpyT,KAAK+Z,KAAKq4S,WAAa,IAEzB,IAAI8C,EAAYj7S,GAAuB,CACrCxE,OACAjS,IAAK,QAEFgX,OAAOC,UAAUy6S,IAAcA,EAAY,GAAKA,EAAY,KAC/DA,EAAY,MAEdl1T,KAAK+Z,KAAKo7S,cAAgBD,EAC1B,IAAIwB,EAAgBz8S,GAAuB,CACzCxE,OACAjS,IAAK,aAEFgX,OAAOC,UAAUi8S,IAAkBA,EAAgB,KACtDA,EAAgB,GAElB12T,KAAK+Z,KAAKmf,OAASw9R,EACnB12T,KAAK+Z,KAAKsuR,UAAYroS,KAAKizT,aA1uhDlB,MA2uhDTjzT,KAAK+Z,KAAKs9Q,KAAOr3R,KAAKizT,aA/thDlB,YA+thD6DjzT,KAAKizT,aA3uhD7D,QA2uhD6GjzT,KAAKizT,aAAaxtT,KAAkCzF,KAAKizT,aAnuhDrK,UAmuhD0O,IAArBjzT,KAAK+Z,KAAKmf,OACzOl5B,KAAK+Z,KAAK48S,YAAc32T,KAAKizT,aAjuhDlB,QAkuhDb,CACA,kBAAI5D,GACF,QAASrvT,KAAK+iQ,aAAe/iQ,KAAK4sT,gBACpC,CACA,kBAAAyI,CAAmBxH,EAAmBvrG,EAAM+0C,EAAMpF,EAAUpyO,EAAOC,EAAQq2S,EAAUC,EAAU9gQ,EAASohK,EAAYz3M,GAClH,MAAM23S,EAAY/2S,EAAQ7f,KAAK+Z,KAAKmf,OAC9B6uB,EAAS/nD,KAAKozT,kCAAkCn0S,GAChDQ,EAAM,GACNokN,EAAYvhB,EAAKshB,iBAAiByzB,GACxC,IAAK,MAAOp+O,EAAON,KAAQkrN,EACzBpkN,EAAIle,KAAK,IAAI+a,GAAa+6O,EAAKh7O,UAAUpD,EAAON,WAElD,MAAMk+S,EAAep3S,EAAIjV,KAAK,IAAIoU,GAAeg4S,YACjD,MAAO,aAAa7uQ,OAAc8lQ,EAAoB,YAAYjvS,GAAeu3S,MAAav3S,GAAew3S,EAAW9gQ,SAAeuhQ,YACzI,CACA,uBAAAzB,CAAwBvH,EAAmB/gR,EAAOw1K,EAAM2vC,EAAUpyO,EAAOC,EAAQo1S,EAAWiB,EAAUC,EAAU9gQ,EAASohK,EAAYz3M,GACnI,MAAMQ,EAAM,GACN2pB,EAAavpB,EAAQ,EAAIs2S,EACzBD,EAAW,CACftiS,MAAO,GAET,IAAK,IAAItyB,EAAI,EAAG0P,EAAK87B,EAAMvsC,OAAQe,EAAI0P,EAAI1P,IAAK,CAC9C,MAAMksC,EAAOV,EAAMxrC,GACbuf,EAAS7gB,KAAKg2T,WAAWxoR,EAAM80K,EAAM2vC,EAAU7oN,GACrD,IAAK,IAAIhhB,EAAI,EAAG0nB,EAAKjvB,EAAOtgB,OAAQ6nB,EAAI0nB,EAAI1nB,IAAK,CAC/C,MAAM9d,EAAQuW,EAAOuH,GACf06O,EAAe,IAANxhQ,GAAiB,IAAN8mB,GAAWguS,GAAY1/F,EAAaphK,IAAYohK,EAC1Ej3M,EAAIle,KAAKvB,KAAKu1T,YAAYjrT,EAAOg4M,EAAM2vC,EAAUpyO,EAAOq1S,EAAWgB,EAAUC,EAAUrzD,GACzF,CACF,CACA,MAAM/6M,EAAS/nD,KAAKozT,kCAAkCn0S,GAChD63S,EAAer3S,EAAIjV,KAAK,MAC9B,MAAO,aAAau9C,OAAc8lQ,EAAoB,cAAcjvS,GAAekB,SAAcg3S,YACnG,CACA,UAAAd,CAAWxoR,EAAM80K,EAAM2vC,EAAUpyO,EAAOi1N,EAAQ,CAAC,GAC/CtnM,EAAOsnM,EAAMtnM,MAAQA,EACrB,MAAMw0K,EAAS8yB,EAAM9yB,QAAUM,EAAKohB,cAAcl2L,GAClD,GAAIw0K,EAAOzhN,QAAU,EACnB,MAAO,CAACitC,GAEV,MAAMq2L,EAAYiR,EAAMjR,WAAavhB,EAAKshB,iBAAiBp2L,GACrDjiB,EAAQ0mO,EAAW,IACnBpxO,EAAS,GACf,IAAIk2S,GAA6B,EAC/BC,GAA2B,EAC3B91C,GAAgB,EAChB+1C,EAAa,EACb9tR,EAAe,EACjB,IAAK,IAAI7nC,EAAI,EAAG0P,EAAKgxM,EAAOzhN,OAAQe,EAAI0P,EAAI1P,IAAK,CAC/C,MAAO2X,EAAON,GAAOkrN,EAAUviO,GACzBm9D,EAAQujJ,EAAO1gN,GACf40P,EAAaz3L,EAAM5+C,MAAQ0L,EACX,MAAlBkzC,EAAM24I,QACJjuK,EAAe+sN,EAAar2O,GAC9BgB,EAAOtf,KAAKisC,EAAKnxB,UAAU46S,EAAYh+S,IACvCg+S,EAAah+S,EACbkwB,EAAe+sN,EACf6gE,GAA6B,EAC7B71C,GAAgB,IAEhB/3O,GAAgB+sN,EAChB6gE,EAA4B99S,EAC5B+9S,EAA0Br+S,EAC1BuoQ,EAAe5/Q,GAER6nC,EAAe+sN,EAAar2O,GACF,IAA/Bk3S,GACFl2S,EAAOtf,KAAKisC,EAAKnxB,UAAU46S,EAAYD,IACvCC,EAAaD,EACb11T,EAAI4/Q,EAAe,EACnB61C,GAA6B,EAC7B5tR,EAAe,IAEftoB,EAAOtf,KAAKisC,EAAKnxB,UAAU46S,EAAYh+S,IACvCg+S,EAAah+S,EACbkwB,EAAe+sN,GAGjB/sN,GAAgB+sN,CAEpB,CAIA,OAHI+gE,EAAazpR,EAAKjtC,QACpBsgB,EAAOtf,KAAKisC,EAAKnxB,UAAU46S,EAAYzpR,EAAKjtC,SAEvCsgB,CACT,CACA,wBAAMyuS,CAAmB16E,EAAWkW,EAAMmI,SAClC7pP,MAAMkmT,mBAAmB16E,EAAWkW,EAAMmI,GAChD,MAAMoE,EAAOr3P,KAAK+Z,KAAKw5O,YACvB,IAAK8D,EACH,OAEF,MAAM6/D,EAAU7/D,EAAK7sP,KAAK,MAC1B,GAAI0sT,IAAYl3T,KAAK+Z,KAAKq4S,WACxB,OAEF,MAAM+E,EAAQD,EAAQpmT,WAAW,+BAA+B,CAACsmT,EAAI1pT,IAAOA,EAAK,KAAKA,IAAO,SACzF,IAAImQ,OAAO,QAAQs5S,UAAcr5S,KAAK9d,KAAK+Z,KAAKq4S,cAClDpyT,KAAK+Z,KAAKw5O,YAAcvzP,KAAK+Z,KAAKq4S,WAAWp2S,MAAM,MAEvD,CACA,cAAA2zS,GACE,MAAO,CACL9zR,GAAI77B,KAAK+Z,KAAK8hB,GACdlzB,MAAO3I,KAAK+Z,KAAKq4S,WACjBx1C,aAAc58Q,KAAK+Z,KAAKu4S,mBAAqB,GAC7C+E,UAAWr3T,KAAK+Z,KAAKsuR,UACrBivB,SAAUt3T,KAAKizT,aAAaxtT,GAC5B8xT,UAAWv3T,KAAK+Z,KAAKmf,OACrBm+P,KAAMr3R,KAAK+Z,KAAKs9Q,KAChBmgC,UAAWx3T,KAAK+Z,KAAKi5S,SACrB38B,OAAQr2R,KAAK+Z,KAAKs8Q,OAClB3zR,KAAM1C,KAAK+Z,KAAKwyS,UAChB59S,KAAM3O,KAAK+Z,KAAKpL,KAChBoO,QAAS/c,KAAK+Z,KAAKgD,QACnBmuP,KAAMlrQ,KAAK+Z,KAAKqF,UAChBwwS,YAAa5vT,KAAK+Z,KAAKi5Q,YACvB68B,UAAW7vT,KAAK+Z,KAAKijR,gBACrBp9Q,SAAU5f,KAAK4f,SACfrb,KAAM,OAEV,EAEF,MAAM0jT,WAA+BG,GACnC,WAAAn/S,CAAYghB,GACV7gB,MAAM6gB,GACNjqB,KAAKy3T,kBAAoB,KACzBz3T,KAAK03T,oBAAsB,KAC3B13T,KAAK+Z,KAAK49S,UAAY33T,KAAKizT,aA12hDtB,SA02hDkEjzT,KAAKizT,aAAaxtT,GACzFzF,KAAK+Z,KAAK69S,YAAc53T,KAAKizT,aA32hDxB,SA22hDoEjzT,KAAKizT,aAAaxtT,GAC3FzF,KAAK+Z,KAAK89S,WAAa73T,KAAKizT,aAAaxtT,GACzCzF,KAAK+Z,KAAK+9S,eAAgB,EACtB93T,KAAK+Z,KAAK49S,SACZ33T,KAAK+3T,iBAAiB9tS,GACbjqB,KAAK+Z,KAAK69S,YACnB53T,KAAKg4T,oBAAoB/tS,GAChBjqB,KAAK+Z,KAAK89S,YACnB73T,KAAK+Z,KAAKmyS,cAAe,EACzBlsT,KAAK+Z,KAAKqyS,QAAS,EACnBpsT,KAAKi4T,mBAAmBhuS,IAExBziB,EAAK,mDAET,CACA,qBAAM+jP,CAAgB3W,EAAWkW,EAAM7H,EAAQhkO,GAC7C,GAAIjf,KAAK+Z,KAAK89S,WACZ,OAAOzuT,MAAMmiP,gBAAgB3W,EAAWkW,EAAM7H,GAAQ,EAAOhkO,GAE/D,IAAItW,EAAQ,KACRiX,EAAW,KACf,GAAIX,EAAmB,CACrB,MAAM2sR,EAAe3sR,EAAkBpb,IAAI7D,KAAK+Z,KAAK8hB,IACrDlzB,EAAQijS,EAAeA,EAAajjS,MAAQ,KAC5CiX,EAAWgsR,EAAeA,EAAahsR,SAAW,IACpD,CACA,GAAc,OAAVjX,GAAkB3I,KAAK+iQ,WACzB,OAAO35P,MAAMmiP,gBAAgB3W,EAAWkW,EAAM7H,EAAQhkO,GAEpDtW,UACFA,EAAQ3I,KAAK+Z,KAAK49S,SAAW33T,KAAK+Z,KAAKq4S,aAAepyT,KAAK+Z,KAAKs6S,YAAcr0T,KAAK+Z,KAAKq4S,aAAepyT,KAAK+Z,KAAKm+S,aAEnH,MAAMn1D,EAAap6P,EAAQ3I,KAAKy3T,kBAAoBz3T,KAAK03T,oBACzD,GAAI30D,EAAY,CACd,MAAMo1D,EAAkBn4T,KAAK+iQ,WACvBq1D,EAAc38S,GAAasnP,EAAWttP,KAAKhB,SAAS,UAAWjQ,GACjEob,GACFmjP,EAAWttP,KAAKV,IAAI,SAAU/U,KAAK2f,kBAAkBV,IAEvDjf,KAAK+iQ,WAAaA,EAClB,MAAM53B,EAAe/hO,MAAMmiP,gBAAgB3W,EAAWkW,EAAM7H,EAAQhkO,GAGpE,OAFAjf,KAAK+iQ,WAAao1D,EAClBp1D,EAAWttP,KAAKV,IAAI,SAAUqjT,GACvBjtF,CACT,CACA,MAAO,CACL8Y,OAAQ,IAAIlB,GACZmsE,cAAc,EACdC,gBAAgB,EAEpB,CACA,UAAMjsG,CAAK0xB,EAAWkW,EAAM7rO,EAAmB8qP,GACzC/pQ,KAAK+Z,KAAK49S,SACZ33T,KAAKq4T,cAAczjF,EAAWkW,EAAM7rO,EAAmB8qP,GAGrD/pQ,KAAK+Z,KAAK69S,aACZ53T,KAAKs4T,iBAAiB1jF,EAAWkW,EAAM7rO,EAAmB8qP,EAE9D,CACA,mBAAMsuD,CAAczjF,EAAWkW,EAAM7rO,EAAmB8qP,GACtD,IAAK9qP,EACH,OAEF,MAAM2sR,EAAe3sR,EAAkBpb,IAAI7D,KAAK+Z,KAAK8hB,IAC/C8G,EAAQ3iC,KAAK8sT,YAAYlhB,GAAcmhB,OAAQnhB,GAAcohB,SACnE,IAAIptS,EAAWgsR,GAAchsR,SAC3BjX,EAAQijS,GAAcjjS,MACxB,QAAiBvF,IAAbwc,QAAoCxc,IAAVu/B,EAAqB,CACjD,QAAcv/B,IAAVuF,EACF,OAGF,GADqB3I,KAAK+Z,KAAKq4S,aAAepyT,KAAK+Z,KAAKs6S,cACnC1rT,EACnB,MAEJ,CACA,IAAI8M,EAAOm/N,EAAUnhO,KAAK+V,WAAWxpB,KAAKgW,KAC1C,KAAMP,aAAgBjC,IACpB,OAEFiC,EAAOA,EAAKI,aACKzS,IAAbwc,IACFA,EAAW5f,KAAK4f,eAEJxc,IAAVuF,IACFA,EAAQ3I,KAAK+Z,KAAKq4S,aAAepyT,KAAK+Z,KAAKs6S,aAE7C,MAAMnuC,EAAM,CACVpqQ,KAAM9b,KAAK+Z,KAAKwyS,UAChB5jT,MAAOA,EAAQ3I,KAAK+Z,KAAKs6S,YAAc,IAEnC3xT,EAAO2Q,GAAKxP,IAAI8E,EAAQ3I,KAAK+Z,KAAKs6S,YAAc,OACtDr0T,KAAKyzT,SAASh+S,EAAM/S,EAAMkyO,EAAUnhO,KAAMs2P,GAC1Ct0P,EAAKV,IAAI,KAAMrS,GACf+S,EAAKV,IAAI,IAAK,KAAKpD,aACLvO,IAAVu/B,GACFltB,EAAKV,IAAI,IAAK4tB,GAEhB,MAAMmxR,EAAU9zT,KAAKuzT,WAAW3zS,GAC5Bk0S,GACFr+S,EAAKV,IAAI,KAAM++S,GAEjB/pD,EAAQxzP,IAAIvW,KAAKgW,IAAK,CACpB+D,KAAMtE,EACNywQ,MACA0hC,iBAAiB,GAErB,CACA,sBAAM0Q,CAAiB1jF,EAAWkW,EAAM7rO,EAAmB8qP,GACzD,IAAK9qP,EACH,OAEF,MAAM2sR,EAAe3sR,EAAkBpb,IAAI7D,KAAK+Z,KAAK8hB,IAC/C8G,EAAQ3iC,KAAK8sT,YAAYlhB,GAAcmhB,OAAQnhB,GAAcohB,SACnE,IAAIptS,EAAWgsR,GAAchsR,SAC3BjX,EAAQijS,GAAcjjS,MACxB,QAAiBvF,IAAbwc,QAAoCxc,IAAVu/B,EAAqB,CACjD,QAAcv/B,IAAVuF,EACF,OAGF,GADqB3I,KAAK+Z,KAAKq4S,aAAepyT,KAAK+Z,KAAKm+S,cACnCvvT,EACnB,MAEJ,CACA,IAAI8M,EAAOm/N,EAAUnhO,KAAK+V,WAAWxpB,KAAKgW,KAC1C,KAAMP,aAAgBjC,IACpB,OAEFiC,EAAOA,EAAKI,aACEzS,IAAVuF,IACFA,EAAQ3I,KAAK+Z,KAAKq4S,aAAepyT,KAAK+Z,KAAKm+S,kBAE5B90T,IAAbwc,IACFA,EAAW5f,KAAK4f,UAElB,MAAMsmQ,EAAM,CACVpqQ,KAAM9b,KAAK+Z,KAAKwyS,UAChB5jT,MAAOA,EAAQ3I,KAAK+Z,KAAKm+S,YAAc,IAEnCx1T,EAAO2Q,GAAKxP,IAAI8E,EAAQ3I,KAAK+Z,KAAKm+S,YAAc,OAClDvvT,GACF3I,KAAKyzT,SAASh+S,EAAM/S,EAAMkyO,EAAUnhO,KAAMs2P,GAE5Ct0P,EAAKV,IAAI,KAAMrS,GACf+S,EAAKV,IAAI,IAAK,KAAKpD,aACLvO,IAAVu/B,GACFltB,EAAKV,IAAI,IAAK4tB,GAEhB,MAAMmxR,EAAU9zT,KAAKuzT,WAAW3zS,GAC5Bk0S,GACFr+S,EAAKV,IAAI,KAAM++S,GAEjB/pD,EAAQxzP,IAAIvW,KAAKgW,IAAK,CACpB+D,KAAMtE,EACNywQ,MACA0hC,iBAAiB,GAErB,CACA,4BAAA2Q,CAA6BtuS,EAAQ1lB,GACnC,MAAMsb,EAAQ7f,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GAC3CmR,EAAS9f,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GAC5C+gN,EAAO,CAAC,EAAG,EAAG7vM,EAAOC,GAErBmyO,EADa,GACF7nP,KAAKC,IAAIwV,EAAOC,GACjC,IAAIk4M,EAAS57M,EACA,UAAT7X,GACFyzN,EAAU,CACRn4M,MAAO,KAAQoyO,EACfnyO,OAAQ,KAAQmyO,GAElB71O,EAAO,KACW,SAAT7X,GACTyzN,EAAU,CACRn4M,MAAO,KAAQoyO,EACfnyO,OAAQ,KAAQmyO,GAElB71O,EAAO,KAEP3U,EAAY,oDAAoDlD,KAElE,MAEMw+P,EAAa,mBAAmB9Q,YAFvBrzO,IAAgBiB,EAAQm4M,EAAQn4M,OAAS,MACzCjB,IAAgBkB,EAASk4M,EAAQl4M,QAAU,UACuB1D,aAC3E4mP,EAAuB,IAAIxvP,GAAKyW,EAAOxW,MAC7CuvP,EAAqBjuP,IAAI,WAAY,GACrCiuP,EAAqBjuP,IAAI,UAAW1B,GAAKxP,IAAI,SAC7Cm/P,EAAqBjuP,IAAI,OAAQ1B,GAAKxP,IAAI,YAC1Cm/P,EAAqBjuP,IAAI,OAAQ26M,GACjCszC,EAAqBjuP,IAAI,SAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IACnDiuP,EAAqBjuP,IAAI,SAAUguP,EAAWxiQ,QAC9C,MAAM4oB,EAAY,IAAI3V,GAAKyW,EAAOxW,MAC5B6uM,EAAO,IAAI9uM,GAAKyW,EAAOxW,MAC7B6uM,EAAKvtM,IAAI,YAAa/U,KAAK0tP,kBAC3BvkO,EAAUpU,IAAI,OAAQutM,GACtB0gD,EAAqBjuP,IAAI,YAAaoU,GACtCnpB,KAAKy3T,kBAAoB,IAAIt3S,GAAa4iP,GAC1C/iQ,KAAKy3T,kBAAkBhiT,KAAOutP,EAC9BhjQ,KAAK0rT,SAASnqT,KAAKvB,KAAKy3T,kBAC1B,CACA,gBAAAM,CAAiB9tS,GACf,MAAMuuS,EAAmBvuS,EAAOxU,KAAK5R,IAAI,MACzC,KAAM20T,aAA4BhlT,IAChC,OAEF,MAAMilT,EAAmBD,EAAiB30T,IAAI,KAC9C,KAAM40T,aAA4BjlT,IAChC,OAEF,MAAMklT,EAAU14T,KAAKqyT,iBAAiBpoS,EAAOxU,KAAK5R,IAAI,OAC/B,iBAAZ60T,IACT14T,KAAK+Z,KAAKq4S,WAAasG,GAEzB,MAAMC,EAA+B,OAAzB34T,KAAK+Z,KAAKq4S,YAAgD,QAAzBpyT,KAAK+Z,KAAKq4S,WAAuBpyT,KAAK+Z,KAAKq4S,WAAa,MAC/FwG,EAAeH,EAAiB7jT,UACtC,GAA4B,IAAxBgkT,EAAar4T,OACfq4T,EAAar3T,KAAK,MAAOo3T,QACpB,GAA4B,IAAxBC,EAAar4T,OACE,QAApBq4T,EAAa,GACfA,EAAar3T,KAAKo3T,GAElBC,EAAazzQ,QAAQ,YAElB,GAAIyzQ,EAAa9sT,SAAS6sT,GAC/BC,EAAar4T,OAAS,EACtBq4T,EAAar3T,KAAK,MAAOo3T,OACpB,CACL,MAAME,EAAWD,EAAa75C,MAAK/nQ,GAAW,QAANA,IACxC4hT,EAAar4T,OAAS,EACtBq4T,EAAar3T,KAAK,MAAOs3T,EAC3B,CACKD,EAAa9sT,SAAS9L,KAAK+Z,KAAKq4S,cACnCpyT,KAAK+Z,KAAKq4S,WAAa,OAEzBpyT,KAAK+Z,KAAKs6S,YAAcuE,EAAa,GACrC,MAAMnB,EAAoBgB,EAAiB50T,IAAI7D,KAAK+Z,KAAKs6S,aACzDr0T,KAAKy3T,kBAAoBA,aAA6BngT,GAAamgT,EAAoB,KACvF,MAAMC,EAAsBe,EAAiB50T,IAAI,OACjD7D,KAAK03T,oBAAsBA,aAA+BpgT,GAAaogT,EAAsB,KACzF13T,KAAKy3T,kBACPz3T,KAAK0rT,SAASnqT,KAAKvB,KAAKy3T,mBAExBz3T,KAAKu4T,6BAA6BtuS,EAAQ,SAExCjqB,KAAK03T,qBACP13T,KAAK0rT,SAASnqT,KAAKvB,KAAK03T,qBAE1B13T,KAAK2sT,kBAAoB3sT,KAAK0tP,iBACM,OAAhC1tP,KAAK+Z,KAAKu4S,oBACZtyT,KAAK+Z,KAAKu4S,kBAAoB,MAElC,CACA,mBAAA0F,CAAoB/tS,GAClBjqB,KAAK+Z,KAAKm+S,YAAc,KACxB,MAAMY,EAAc7uS,EAAOxU,KAAK5R,IAAI,UACpC,GAAIi1T,aAAuBtlT,GAAM,CAC/BxT,KAAKoW,OAAS6T,EAAOxU,KAAKd,OAAO,UACjC,MAAMokT,EAAmBD,EAAYj1T,IAAI,KACrCk1T,aAA4B1lT,KAC9BrT,KAAK+Z,KAAKq4S,WAAapyT,KAAKqyT,iBAAiB0G,GAEjD,CACA,MAAMlK,EAAmB5kS,EAAOxU,KAAK5R,IAAI,MACzC,KAAMgrT,aAA4Br7S,IAChC,OAEF,MAAMilT,EAAmB5J,EAAiBhrT,IAAI,KAC9C,KAAM40T,aAA4BjlT,IAChC,OAEF,IAAK,MAAMhQ,KAAOi1T,EAAiB7jT,UACjC,GAAY,QAARpR,EAAe,CACjBxD,KAAK+Z,KAAKm+S,YAAcl4T,KAAKqyT,iBAAiB7uT,GAC9C,KACF,CAEF,MAAMi0T,EAAoBgB,EAAiB50T,IAAI7D,KAAK+Z,KAAKm+S,aACzDl4T,KAAKy3T,kBAAoBA,aAA6BngT,GAAamgT,EAAoB,KACvF,MAAMC,EAAsBe,EAAiB50T,IAAI,OACjD7D,KAAK03T,oBAAsBA,aAA+BpgT,GAAaogT,EAAsB,KACzF13T,KAAKy3T,kBACPz3T,KAAK0rT,SAASnqT,KAAKvB,KAAKy3T,mBAExBz3T,KAAKu4T,6BAA6BtuS,EAAQ,QAExCjqB,KAAK03T,qBACP13T,KAAK0rT,SAASnqT,KAAKvB,KAAK03T,qBAE1B13T,KAAK2sT,kBAAoB3sT,KAAK0tP,iBACM,OAAhC1tP,KAAK+Z,KAAKu4S,oBACZtyT,KAAK+Z,KAAKu4S,kBAAoB,MAElC,CACA,kBAAA2F,CAAmBhuS,GACjB,MAAM,KACJxU,EAAI,kBACJ4xS,GACEp9R,EACCxU,EAAKT,IAAI,MAASS,EAAKT,IAAI,OAAUhV,KAAK+Z,KAAK04S,iBAIpDzyT,KAAK+Z,KAAK+9S,eAAiBriT,EAAKT,IAAI,OAASS,EAAKT,IAAI,MACtDi5P,GAAQ6B,oBAAoB,CAC1BC,SAAUt6P,EACVu6P,UAAWhwQ,KAAK+Z,KAChBk2P,WAAYo3C,EAAkBv/S,QAC9BooQ,eAAgBm3C,EAAkBl3C,eARlC3oQ,EAAK,6DAUT,CACA,cAAAmoT,GACE,IACIiJ,EADAr0T,EAAO,SASX,OAPIvE,KAAK+Z,KAAK49S,UACZpzT,EAAO,WACPq0T,EAAe54T,KAAK+Z,KAAKs6S,aAChBr0T,KAAK+Z,KAAK69S,cACnBrzT,EAAO,cACPq0T,EAAe54T,KAAK+Z,KAAKm+S,aAEpB,CACLr8R,GAAI77B,KAAK+Z,KAAK8hB,GACdlzB,MAAO3I,KAAK+Z,KAAKq4S,YAAc,MAC/Bx1C,aAAc58Q,KAAK+Z,KAAKu4S,kBACxBsG,eACApB,UAAWx3T,KAAK+Z,KAAKi5S,SACrBtwT,KAAM1C,KAAK+Z,KAAKwyS,UAChB59S,KAAM3O,KAAK+Z,KAAKpL,KAChB0nR,OAAQr2R,KAAK+Z,KAAKs8Q,OAClBt5Q,QAAS/c,KAAK+Z,KAAKgD,QACnBmuP,KAAMlrQ,KAAK+Z,KAAKqF,UAChBwwS,YAAa5vT,KAAK+Z,KAAKi5Q,YACvB68B,UAAW7vT,KAAK+Z,KAAKijR,gBACrBp9Q,SAAU5f,KAAK4f,SACfrb,OAEJ,CACA,oBAAImpP,GACF,MAAMj4O,EAAO,IAAIjC,GAKjB,OAJAiC,EAAKV,IAAI,WAAY1B,GAAKxP,IAAI,iBAC9B4R,EAAKV,IAAI,OAAQ1B,GAAKxP,IAAI,iBAC1B4R,EAAKV,IAAI,UAAW1B,GAAKxP,IAAI,iBAC7B4R,EAAKV,IAAI,WAAY1B,GAAKxP,IAAI,yBACvB6E,EAAO1I,KAAM,mBAAoByV,EAC1C,EAEF,MAAMyyS,WAA+BE,GACnC,WAAAn/S,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,EAAI,KACJhC,GACEwW,EACJjqB,KAAKg5T,QAAUvjT,EAAKhB,SAAS,KAC7BzU,KAAKi5T,WAAa73T,MAAMsT,QAAQ1U,KAAKg5T,UAAYh5T,KAAKg5T,QAAQz4T,OAAS,EACvEP,KAAK+Z,KAAKhS,QAAU,GACpB,MAAMA,EAAUkS,GAAuB,CACrCxE,OACAjS,IAAK,QAEP,GAAIpC,MAAMsT,QAAQ3M,GAChB,IAAK,IAAIzG,EAAI,EAAG0P,EAAKjJ,EAAQxH,OAAQe,EAAI0P,EAAI1P,IAAK,CAChD,MAAM4wJ,EAASz+I,EAAK+V,WAAWzhB,EAAQzG,IACjC43T,EAAgB93T,MAAMsT,QAAQw9I,GACpClyJ,KAAK+Z,KAAKhS,QAAQzG,GAAK,CACrB+yT,YAAar0T,KAAKqyT,iBAAiB6G,EAAgBzlT,EAAK+V,WAAW0oI,EAAO,IAAMA,GAChFoiK,aAAct0T,KAAKqyT,iBAAiB6G,EAAgBzlT,EAAK+V,WAAW0oI,EAAO,IAAMA,GAErF,CAEF,GAAKlyJ,KAAKi5T,WAMH,CACLj5T,KAAK+Z,KAAKq4S,WAAa,GACvB,MAAMphT,EAAKhR,KAAK+Z,KAAKhS,QAAQxH,OAC7B,IAAK,MAAMe,KAAKtB,KAAKg5T,QACfx+S,OAAOC,UAAUnZ,IAAMA,GAAK,GAAKA,EAAI0P,GACvChR,KAAK+Z,KAAKq4S,WAAW7wT,KAAKvB,KAAK+Z,KAAKhS,QAAQzG,GAAG+yT,YAGrD,KAbsC,iBAAzBr0T,KAAK+Z,KAAKq4S,WACnBpyT,KAAK+Z,KAAKq4S,WAAa,CAACpyT,KAAK+Z,KAAKq4S,YACxBpyT,KAAK+Z,KAAKq4S,aACpBpyT,KAAK+Z,KAAKq4S,WAAa,IAWM,IAA7BpyT,KAAK+Z,KAAKhS,QAAQxH,QAAgBP,KAAK+Z,KAAKq4S,WAAW7xT,OAAS,IAClEP,KAAK+Z,KAAKhS,QAAU/H,KAAK+Z,KAAKq4S,WAAWn2S,KAAItT,IAAS,CACpD0rT,YAAa1rT,EACb2rT,aAAc3rT,OAGlB3I,KAAK+Z,KAAKq6S,MAAQp0T,KAAKizT,aAjviDlB,QAkviDLjzT,KAAK+Z,KAAKo/S,YAAcn5T,KAAKizT,aA9uiDlB,SA+uiDXjzT,KAAKqzT,UAAW,CAClB,CACA,cAAA1D,GACE,MAAMprT,EAAOvE,KAAK+Z,KAAKq6S,MAAQ,WAAa,UACtCzrT,EAAQ3I,KAAK+Z,KAAKq4S,WAAW7xT,OAAS,EAAIP,KAAK+Z,KAAKq4S,WAAW,GAAK,KAC1E,MAAO,CACLv2R,GAAI77B,KAAK+Z,KAAK8hB,GACdlzB,QACAi0Q,aAAc58Q,KAAK+Z,KAAKu4S,kBACxBkF,UAAWx3T,KAAK+Z,KAAKi5S,SACrBtwT,KAAM1C,KAAK+Z,KAAKwyS,UAChB59S,KAAM3O,KAAK+Z,KAAKpL,KAChByqT,SAAUp5T,KAAK+Z,KAAKq4S,WAAW7xT,OAC/B84T,kBAAmBr5T,KAAK+Z,KAAKo/S,YAC7B9iC,OAAQr2R,KAAK+Z,KAAKs8Q,OAClBt5Q,QAAS/c,KAAK+Z,KAAKgD,QACnBjG,MAAO9W,KAAK+Z,KAAKhS,QACjBmjQ,KAAMlrQ,KAAK+Z,KAAKqF,UAChBwwS,YAAa5vT,KAAK+Z,KAAKi5Q,YACvB68B,UAAW7vT,KAAK+Z,KAAKijR,gBACrBp9Q,SAAU5f,KAAK4f,SACfrb,OAEJ,CACA,cAAAivT,CAAev0S,EAAmBxJ,GAChC,IAAKzV,KAAKi5T,WACR,OAEF,IAAInkT,EAASmK,GAAmBpb,IAAI7D,KAAK+Z,KAAK8hB,KAAKlzB,MAC9CvH,MAAMsT,QAAQI,KACjBA,EAAS,CAACA,IAEZ,MAAMkkT,EAAU,IACV,QACJjxT,GACE/H,KAAK+Z,KACT,IAAK,IAAIzY,EAAI,EAAG8mB,EAAI,EAAGpX,EAAKjJ,EAAQxH,OAAQe,EAAI0P,EAAI1P,IAC9CyG,EAAQzG,GAAG+yT,cAAgBv/S,EAAOsT,KACpC4wS,EAAQz3T,KAAKD,GACb8mB,GAAK,GAGT3S,EAAKV,IAAI,IAAKikT,EAChB,CACA,oBAAM1F,CAAe1+E,EAAWkW,EAAM7H,EAAQhkO,GAC5C,GAAIjf,KAAK+Z,KAAKq6S,MACZ,OAAOhrT,MAAMkqT,eAAe1+E,EAAWkW,EAAM7H,EAAQhkO,GAEvD,IAAIo2Q,EAAez1Q,EACnB,MAAMgsR,EAAe3sR,GAAmBpb,IAAI7D,KAAK+Z,KAAK8hB,IAKtD,GAJI+vQ,IACFhsR,EAAWgsR,EAAahsR,SACxBy1Q,EAAgBuW,EAAajjS,YAEdvF,IAAbwc,QAA4Cxc,IAAlBiyR,IAAgCr1R,KAAK4sT,iBACjE,OAAO,UAEaxpT,IAAlBiyR,EACFA,EAAgBr1R,KAAK+Z,KAAKq4S,WAChBhxT,MAAMsT,QAAQ2gR,KACxBA,EAAgB,CAACA,IAInB,IAAI1hC,EAAc3zP,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GACjDy6B,EAAappC,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GACnC,KAAbiR,GAAgC,MAAbA,KACpBwpB,EAAYuqN,GAAe,CAACA,EAAavqN,IAE5C,MAAMmrR,EAAYv0T,KAAK+Z,KAAKhS,QAAQxH,OAC9B+4T,EAAe,GACrB,IAAK,IAAIh4T,EAAI,EAAGA,EAAIizT,EAAWjzT,IAAK,CAClC,MAAM,YACJ+yT,GACEr0T,KAAK+Z,KAAKhS,QAAQzG,GAClB+zR,EAAcvpR,SAASuoT,IACzBiF,EAAa/3T,KAAKD,EAEtB,CACKtB,KAAK8tT,qBACR9tT,KAAK+Z,KAAKg0S,sBAAwB9sD,GAAuBjhQ,KAAK8tT,mBAAqB,wBAErF,MAAMxrG,QAAa8lG,GAAiBoM,aAAa5/E,EAAWkW,EAAM9qP,KAAK+Z,KAAKg0S,sBAAuB/tT,KAAK6yT,gBAAgBC,iBACxH,IAAIjF,GACA,SACF57D,GACEjyP,KAAK+Z,KAAKg0S,sBACd,GAAK97D,EAeH47D,EAAoB7tT,KAAK8tT,uBAfZ,CACb,MAAMp3F,GAAci9B,EA1BC,GA0B+B4gE,EACpD,IACI5rT,EADA85P,GAAa,EAEjB,IAAK,MAAM,aACT6xD,KACGt0T,KAAK+Z,KAAKhS,QAAS,CACtB,MAAM8X,EAAQ7f,KAAKy1T,cAAcnB,EAAchyG,GAC3CziM,EAAQ4iP,IACVA,EAAY5iP,EACZlX,EAAQ2rT,EAEZ,EACCzG,EAAmB57D,GAAYjyP,KAAKg1T,iBAAiBt+F,EAAYttL,EAAa,EAAqBzgC,EAAO25M,GAAO,EACpH,CAGA,MAAMoU,EAAau7B,EAAWvtP,EACxB0xT,GAAY1/F,EAAau7B,GAAY,EACrCsnE,EAAuBnvT,KAAK6W,MAAM0yO,EAAcj9B,GACtD,IAAI8iG,EAAa,EACjB,GAAIF,EAAa/4T,OAAS,EAAG,CAC3B,MAAMk5T,EAAWrvT,KAAKC,OAAOivT,GACvBI,EAAWtvT,KAAK2D,OAAOurT,GAC7BE,EAAapvT,KAAK2D,IAAI,EAAG2rT,EAAWH,EAAuB,GACvDC,EAAaC,IACfD,EAAaC,EAEjB,CACA,MAAM9gT,EAAMvO,KAAKC,IAAImvT,EAAaD,EAAuB,EAAGhF,GACtD90S,EAAM,CAAC,YAAa,OAAO2pB,KAAcuqN,YAC/C,GAAI2lE,EAAa/4T,OAAQ,CACvBkf,EAAIle,KAAK,iCACT,IAAK,MAAMqtC,KAAS0qR,EACdE,GAAc5qR,GAASA,EAAQj2B,GACjC8G,EAAIle,KAAK,KAAKoyP,GAAe/kN,EAAQ4qR,EAAa,GAAK9iG,KAActtL,KAAcstL,SAGzF,CACAj3M,EAAIle,KAAK,KAAMssT,EAAmB,aAAal6D,QAC/C,MAAMuiE,EAAW,CACftiS,MAAO,GAET,IAAK,IAAItyB,EAAIk4T,EAAYl4T,EAAIqX,EAAKrX,IAAK,CACrC,MAAM,aACJgzT,GACEt0T,KAAK+Z,KAAKhS,QAAQzG,GAChBq4T,EAAWr4T,IAAMk4T,EAAapD,EAAW,EAC/C32S,EAAIle,KAAKvB,KAAKu1T,YAAYjB,EAAchyG,EAAM2vC,EAAU7oN,EAAY,EAAG8sR,EAxEjD,GAwE6Ex/F,EAAaijG,GAClH,CAEA,OADAl6S,EAAIle,KAAK,YACFke,EAAIjV,KAAK,KAClB,EAEF,MAAM29S,WAAkCC,GACtC,WAAAn/S,CAAYghB,GACV7gB,MAAM6gB,GACNjqB,KAAK+Z,KAAKq4S,WAAa,KACvBpyT,KAAK+Z,KAAKmyS,aAAelsT,KAAK+Z,KAAKoyS,SACnCnsT,KAAK+Z,KAAKqyS,QAAUpsT,KAAK+Z,KAAKmyS,YAChC,CACA,cAAAyD,GACE,MAAO,CACL9zR,GAAI77B,KAAK+Z,KAAK8hB,GACdlzB,MAAO,KACPuiQ,KAAMlrQ,KAAK+Z,KAAKqF,UAChB7a,KAAM,YAEV,EAEF,MAAMujT,WAAuBuI,GAC3B,WAAApnT,CAAYghB,GAEV7gB,MAAM6gB,GACNjqB,KAAK+Z,KAAKoyS,UAAW,EACrBnsT,KAAK+Z,KAAKmyS,aAAelsT,KAAK+Z,KAAKoyS,SACnCnsT,KAAK+Z,KAAKqyS,QAAS,EACnB,MAAM,KACJ32S,GACEwU,EACJjqB,KAAK+Z,KAAKgwS,eA98iDN,EA+8iDA/pT,KAAK+Z,KAAKiyS,cACZhsT,KAAK+Z,KAAKrX,KAAO,UAEjB1C,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GAZX,GAaxB3O,KAAK+Z,KAAKpL,KAAK,GAAK3O,KAAK+Z,KAAKpL,KAAK,GAbX,GAcxB3O,KAAK+Z,KAAKrX,KAAO+S,EAAKT,IAAI,QAAUS,EAAK5R,IAAI,QAAQnB,KAAO,QAE1D+S,EAAKT,IAAI,UACXhV,KAAK+Z,KAAKwwC,MAAQ90C,EAAK5R,IAAI,UAAY,KACvC7D,KAAK+Z,KAAK6/S,WAAankT,EAAK5R,IAAI,eAAiB,OAEjD7D,KAAK+Z,KAAKwwC,MAAQ,KAClBvqD,KAAK+Z,KAAK6/S,WAAa,KAE3B,EAEF,MAAM/R,WAAuBuB,GAC3B,WAAAngT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,EAAI,kBACJ4xS,GACEp9R,EACJjqB,KAAK+Z,KAAKgwS,eAr+iDN,EAs+iDJ/pT,KAAK+Z,KAAKqyS,QAAS,EACnB,MAAMnC,EAAaQ,GAAch1S,EAAMzV,KAAKolS,WACxC6kB,IACFjqT,KAAK+Z,KAAKkwS,WAAaA,GAEzBjqT,KAAK+Z,KAAKi5Q,cAAgBhzR,KAAK+Z,KAAKoU,MACpC8/O,GAAQ6B,oBAAoB,CAC1BC,SAAUt6P,EACVu6P,UAAWhwQ,KAAK+Z,KAChBk2P,WAAYo3C,EAAkBv/S,QAC9BooQ,eAAgBm3C,EAAkBl3C,aAEtC,EAEF,MAAMk4C,WAAwBe,GAC5B,WAAAngT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,GACEwU,EACJjqB,KAAK+Z,KAAKgwS,eA5+iDL,GA6+iDL/pT,KAAK+Z,KAAKqyS,QAAS,EACfpsT,KAAK+Z,KAAKpL,KAAK,KAAO3O,KAAK+Z,KAAKpL,KAAK,IAAM3O,KAAK+Z,KAAKpL,KAAK,KAAO3O,KAAK+Z,KAAKpL,KAAK,KAClF3O,KAAK+Z,KAAKpL,KAAO,MAEnB,IAAIkrT,EAAapkT,EAAK5R,IAAI,UAC1B,GAAKg2T,EAAL,CAqBA,GAjBA75T,KAAK+Z,KAAK+/S,WAAal+S,GAAiBi+S,EAAWplT,SAAS,QAAS,MAEjEsC,GADO8iT,EAAWh2T,IAAI,MACX0B,KACbs0T,EAAaA,EAAWh2T,IAAI,QAEzBg2T,EAAW7kT,IAAI,MAGlBhV,KAAKgrT,oBAAoB6O,EAAWh2T,IAAI,MACxC7D,KAAK+Z,KAAKkyS,iBAAmBjsT,KAAKisT,kBAHlCjsT,KAAK+Z,KAAKkyS,iBAAmB,KAK1B4N,EAAW7kT,IAAI,MAGlBhV,KAAKmrT,SAAS0O,EAAWplT,SAAS,MAClCzU,KAAK+Z,KAAKoU,MAAQnuB,KAAKmuB,OAHvBnuB,KAAK+Z,KAAKoU,MAAQ,MAKfnuB,KAAKqtT,SAAU,CAClB,MAAM0M,EAAcF,EAAWh2T,IAAI,KAC/B7D,KAAKitT,YAAY8M,IACnB/5T,KAAKirT,SAAS8O,EAElB,CACA/5T,KAAK8qT,SAAS+O,EAAWh2T,IAAI,MAC7B7D,KAAK+Z,KAAK42S,SAAW3wT,KAAKguT,OAC1BhuT,KAAK+qT,YAAY8O,EAAWh2T,IAAI,aAChC7D,KAAK+Z,KAAK+xS,YAAc9rT,KAAK+rT,UACzB8N,EAAW7kT,IAAI,QACjBhV,KAAK+Z,KAAKunS,SAAWqE,GAAWiB,kBAAkBiT,EAAWh2T,IAAI,QAEnE7D,KAAK+Z,KAAK+7Q,OAASrgR,EAAK5R,IAAI,OA/B5B,MAFE2D,EAAK,+DAkCT,EAEF,MAAM8gT,WAA2B+H,GAC/B,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACNjqB,KAAK+Z,KAAKmyS,aAAelsT,KAAK+Z,KAAKoyS,SACnCnsT,KAAK+Z,KAAKsyS,YAAcrsT,KAAK+Z,KAAKqyS,OAClCpsT,KAAK+Z,KAAKqyS,QAAS,EACnB,MAAM,iBACJp+D,EAAgB,KAChBv6O,GACEwW,EAIJ,GAHAjqB,KAAK+Z,KAAKgwS,eA9ijDF,EA+ijDR/pT,KAAK4tT,qBAAqB3jS,GAC1BjqB,KAAKg6T,iBAAmBh6T,KAAK+iQ,WACzB/iQ,KAAKg6T,eAAgB,CACvB,MAAM,UACJh5D,EAAS,SACT/O,GApkgBR,SAA+BjwO,EAAQgsO,EAAkBv6O,GACvD,OAAO,IAAIytP,GAA0Bl/O,EAAQgsO,EAAkBv6O,GAAM6V,OACvE,CAmkgBU2wS,CAAsBj6T,KAAK+iQ,WAAY/U,EAAkBv6O,GAC7DzT,KAAK+Z,KAAKg0S,sBAAsB/sD,UAAYA,EAC5ChhQ,KAAK+Z,KAAKg0S,sBAAsB97D,SAAWA,GAAY,EACzD,KAAO,CACLjyP,KAAK+Z,KAAKg0S,sBAAsB97D,WAAa,GAC7C,MAAM,UACJ+O,EAAS,SACT/O,GACEjyP,KAAK+Z,KAAKg0S,sBACd,GAAI/tT,KAAK+rT,UAAUrhT,IAAK,CACtB1K,KAAK+Z,KAAKw5O,YAAcvzP,KAAK+rT,UAAUrhT,IAAIsR,MAAM,YAAYC,KAAIuxB,GAAQA,EAAKgiR,YAC9E,MAAM,OACJpnF,EAAM,KACN1Y,EAAI,OACJnlM,GACEg3O,GAAgBc,qBAAqBriQ,KAAKolS,UAAWplS,KAAK4f,SAAUqyO,GACxEjyP,KAAK+Z,KAAK01S,aAAezvT,KAAK0vT,gBAAgBtnF,EAAQ1Y,EAAMnlM,EAC9D,CACA,GAAIvqB,KAAK0sT,4BAA6B,CACpC,MAAMlqD,EAAcv4O,EAAOxU,KAAK5R,IAAI,MAC9B+wT,EAAkB,IAAIrzD,GAAgB9tP,EAAM,cAClDzT,KAAK+iQ,WAAa6xD,EAAgBtyD,iBAAiBtiQ,KAAK+rT,UAAUrhT,IAAK1K,KAAKolS,UAAWplS,KAAK4f,SAAUqyO,EAAU+O,EAAWwB,GAC3HxiQ,KAAK0rT,SAASnqT,KAAKvB,KAAK+iQ,WAC1B,MACEv7P,EAAK,6FAET,CACF,CACA,kBAAI6nT,GACF,OAAOrvT,KAAKg6T,cACd,CACA,oBAAO/H,CAAcpI,EAAYp2S,GAAM,MACrCu+S,EAAK,GACL/uD,IAEA,MAAM,MACJ90O,EAAK,SACL8jO,EAAQ,cACRioE,EAAa,KACbvrT,EAAI,SACJiR,EAAQ,KACRu6S,EAAI,MACJxxT,GACEkhT,EACEuQ,EAAWF,GAAiB,IAAI1mT,GAAKC,GAC3C2mT,EAASrlT,IAAI,OAAQ1B,GAAKxP,IAAI,UAC9Bu2T,EAASrlT,IAAI,UAAW1B,GAAKxP,IAAI,aAC7Bq2T,GACFE,EAASrlT,IAAI,IAAK,KAAKpD,QACvByoT,EAAS1jT,OAAO,OAEhB0jT,EAASrlT,IAAI,eAAgB,KAAKpD,QAEpCyoT,EAASrlT,IAAI,OAAQpG,GACrB,MAAM0rT,EAAK,SAASpoE,QAAeoP,GAAYlzO,GAAO,KAStD,GARAisS,EAASrlT,IAAI,KAAMslT,GACnBD,EAASrlT,IAAI,WAAYsK,GAAuB1W,IAChDyxT,EAASrlT,IAAI,IAAK,GAClBqlT,EAASrlT,IAAI,SAAU,CAAC,EAAG,EAAG,IAC9BqlT,EAASrlT,IAAI,SAAU6K,GACnBu6S,GACFC,EAASrlT,IAAI,IAAKsK,GAAuB86S,IAEvCnI,GAAS/uD,EAAI,CACf,MAAM12P,EAAI,IAAIiH,GAAKC,GACnB2mT,EAASrlT,IAAI,KAAMxI,GACfylT,EACFzlT,EAAEwI,IAAI,IAAKi9S,GAEXzlT,EAAEwI,IAAI,IAAKkuP,EAEf,CACA,OAAOm3D,CACT,CACA,sCAAatI,CAA0BjI,EAAYp2S,EAAMwW,GACvD,MAAM,YACJg4O,EAAW,UACXrtB,EAAS,KACTkW,GACE7gO,GACE,MACJkE,EAAK,SACL8jO,EAAQ,KACRtjP,EAAI,SACJiR,EAAQ,MACRjX,GACEkhT,EACE1gS,EAAY,IAAI3V,GAAKC,GACrB6uM,EAAO,IAAI9uM,GAAKC,GACtB,GAAIwuP,EACF3/C,EAAKvtM,IAAI,OAAQktP,OACZ,CACL,MAAMpG,EAAW,IAAIroP,GAAKC,GAC1BooP,EAAS9mP,IAAI,WAAY1B,GAAKxP,IAAI,cAClCg4P,EAAS9mP,IAAI,OAAQ1B,GAAKxP,IAAI,SAC9Bg4P,EAAS9mP,IAAI,UAAW1B,GAAKxP,IAAI,UACjCg4P,EAAS9mP,IAAI,WAAY1B,GAAKxP,IAAI,oBAClCy+M,EAAKvtM,IAAI,OAAQ8mP,EACnB,CACA1yO,EAAUpU,IAAI,OAAQutM,GACtB,MAAMg4G,QAAalS,GAAiBoM,aAAa5/E,EAAWkW,EAAM,CAChE/qC,SAAU,OACVkyC,YACC9oO,IACI/Z,EAAII,EAAIH,EAAII,GAAMd,EACzB,IAAIolL,EAAI1kL,EAAKD,EACTmkC,EAAI9jC,EAAKD,EACToQ,EAAW,KAAQ,KACpBm0K,EAAGxgJ,GAAK,CAACA,EAAGwgJ,IAEf,MAAMjnJ,EAAQnkC,EAAMqT,MAAM,MACpBuP,EAAQ0mO,EAAW,IACzB,IAAI7oN,GAAa,IACjB,MAAMqrR,EAAe,GACrB,IAAK,IAAIjnR,KAAQV,EAAO,CACtB,MAAM89K,EAAU0vG,EAAKv2F,aAAav2L,GAClC,GAAIo9K,EAAQrqN,OAAS,EACnB,OAAO,KAETitC,EAAOo9K,EAAQpgN,KAAK,IACpBiqT,EAAalzT,KAAKisC,GAClB,IAAIi1N,EAAY,EAChB,MAAMzgD,EAASs4G,EAAK52F,cAAcl2L,GAClC,IAAK,MAAMixB,KAASujJ,EAClBygD,GAAahkM,EAAM5+C,MAAQ0L,EAE7B6d,EAAah/B,KAAK2D,IAAIq7B,EAAYq5N,EACpC,CACA,IAAIC,EAAS,EACTt5N,EAAa2qJ,IACf2uE,EAAS3uE,EAAI3qJ,GAEf,IAAIu5N,EAAS,EACb,MAAMjsC,EAAahyN,EAAcutP,EAC3BsoE,EAAa,EAAsCtoE,EACnD0B,EAAcj9B,EAAa5pL,EAAMvsC,OACnCozP,EAAcpgN,IAChBovN,EAASpvN,EAAIogN,GAEf,MACMkP,EAAc5Q,EADL7nP,KAAKC,IAAIq4P,EAAQC,GAEhC,IAAI63D,EAAYC,EAASlwS,EACzB,OAAQ3K,GACN,KAAK,EACH2K,EAAS,CAAC,EAAG,EAAG,EAAG,GACnBkwS,EAAU,CAAC9rT,EAAK,GAAIA,EAAK,GAAIolL,EAAGxgJ,GAChCinR,EAAa,CAAC7rT,EAAK,GAAIA,EAAK,GAAK4rT,GACjC,MACF,KAAK,GACHhwS,EAAS,CAAC,EAAG,GAAI,EAAG,GACpBkwS,EAAU,CAAC9rT,EAAK,IAAKA,EAAK,GAAIolL,EAAGxgJ,GACjCinR,EAAa,CAAC7rT,EAAK,IAAKA,EAAK,GAAK4rT,GAClC,MACF,KAAK,IACHhwS,EAAS,EAAE,EAAG,EAAG,GAAI,GACrBkwS,EAAU,EAAE9rT,EAAK,IAAKA,EAAK,GAAIolL,EAAGxgJ,GAClCinR,EAAa,EAAE7rT,EAAK,IAAKA,EAAK,GAAK4rT,GACnC,MACF,KAAK,IACHhwS,EAAS,CAAC,GAAI,EAAG,EAAG,GACpBkwS,EAAU,EAAE9rT,EAAK,GAAIA,EAAK,GAAIolL,EAAGxgJ,GACjCinR,EAAa,EAAE7rT,EAAK,GAAIA,EAAK,GAAK4rT,GAGtC,MAAMnvT,EAAS,CAAC,IAAK,GAAGmf,EAAO/f,KAAK,cAAe,GAAGiwT,EAAQjwT,KAAK,cAAe,KAAM,GAAG62P,GAAYlzO,GAAO,KAAS,cAAcvP,GAAeikP,SACpJz3P,EAAO7J,KAAK,GAAGi5T,EAAWhwT,KAAK,YAAY8R,GAAam4S,EAAa,WACrE,MAAM3xD,EAASlkP,GAAe83M,GAC9B,IAAK,IAAIp1N,EAAI,EAAG0P,EAAKyjT,EAAal0T,OAAQe,EAAI0P,EAAI1P,IAAK,CACrD,MAAMksC,EAAOinR,EAAanzT,GAC1B8J,EAAO7J,KAAK,MAAMuhQ,SAAcxmP,GAAakxB,SAC/C,CACApiC,EAAO7J,KAAK,KAAM,KAClB,MAAMwhQ,EAAa33P,EAAOZ,KAAK,MACzBw4P,EAAuB,IAAIxvP,GAAKC,GACtCuvP,EAAqBjuP,IAAI,WAAY,GACrCiuP,EAAqBjuP,IAAI,UAAW1B,GAAKxP,IAAI,SAC7Cm/P,EAAqBjuP,IAAI,OAAQ1B,GAAKxP,IAAI,YAC1Cm/P,EAAqBjuP,IAAI,OAAQpG,GACjCq0P,EAAqBjuP,IAAI,YAAaoU,GACtC65O,EAAqBjuP,IAAI,SAAU,CAAC,EAAG,EAAG,EAAG,GAAIpG,EAAK,IAAKA,EAAK,KAChE,MAAMs0P,EAAK,IAAI9iP,GAAa4iP,GAE5B,OADAE,EAAGxtP,KAAOutP,EACHC,CACT,EAEF,MAAMslD,WAAuB8H,GAC3B,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,EAAI,KACJhC,GACEwW,EACJjqB,KAAK+Z,KAAKgwS,eApvjDN,EAqvjDJ/pT,KAAK+Z,KAAKmyS,aAAelsT,KAAK+Z,KAAKoyS,SACnCnsT,KAAK+Z,KAAKqyS,QAAS,EACnB,MAAMsO,EAAkB/+S,GAAWlG,EAAKhB,SAAS,KAAM,CAAC,EAAG,EAAG,EAAG,IAIjE,GAHAzU,KAAK+Z,KAAK2gT,gBAAkBhuT,EAAKgC,cAAcgsT,GAC/C16T,KAAKmuT,eAAe14S,EAAKhB,SAAS,OAClCzU,KAAK+Z,KAAKq0S,YAAcpuT,KAAKouT,aACxBpuT,KAAK+iQ,WAAY,CACpB,MAAM6sD,EAAc5vT,KAAKmuB,MAAQq8R,GAAiBxqT,KAAKmuB,OAAS,CAAC,EAAG,EAAG,GACjEq0O,EAAc/sP,EAAK5R,IAAI,MACvB82T,EAAgBrQ,GAAY70S,EAAKhB,SAAS,MAAO,MACjDo7S,EAAY8K,EAAgBnQ,GAAiBmQ,GAAiB,KAC9D3J,EAAYnB,EAAYrtD,EAAc,KACtCuwB,EAAc/yR,KAAK8yR,YAAYjzQ,OAAS,EAC5C+6S,EAAe,EAAI7nC,EACfrjE,EAAO,CAAC1vN,KAAK+Z,KAAK2gT,gBAAgB,GAAKE,EAAc56T,KAAK+Z,KAAK2gT,gBAAgB,GAAKE,EAAc56T,KAAK+Z,KAAK2gT,gBAAgB,GAAKE,EAAc56T,KAAK+Z,KAAK2gT,gBAAgB,GAAKE,GAC/KluT,EAAKkC,UAAU5O,KAAKolS,UAAW11E,KAClC1vN,KAAKolS,UAAY11E,GAEnB1vN,KAAK8wT,sBAAsB,CACzBr9S,OACAgnO,MAAO,GAAGs4C,MACV68B,cACAC,YACArtD,cACAwuD,YACAC,eAAgB,CAAC7lT,EAAQk4M,KACvBl4M,EAAO7J,KAAK,GAAGm5T,EAAgB,MAAMA,EAAgB,OAAQ,GAAGA,EAAgB,MAAMA,EAAgB,OAAQ,KACvG,CAACp3G,EAAO,GAAKyvE,EAAazvE,EAAO,GAAKyvE,EAAazvE,EAAO,GAAKyvE,EAAazvE,EAAO,GAAKyvE,KAGrG,CACF,EAEF,MAAMy1B,WAAyB6H,GAC7B,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,EAAI,KACJhC,GACEwW,EAIJ,GAHAjqB,KAAK+Z,KAAKgwS,eA5xjDJ,EA6xjDN/pT,KAAK+Z,KAAKmyS,aAAelsT,KAAK+Z,KAAKoyS,SACnCnsT,KAAK+Z,KAAKqyS,QAAS,GACdpsT,KAAK+iQ,WAAY,CACpB,MAAM6sD,EAAc5vT,KAAKmuB,MAAQq8R,GAAiBxqT,KAAKmuB,OAAS,CAAC,EAAG,EAAG,GACjEq0O,EAAc/sP,EAAK5R,IAAI,MACvB82T,EAAgBrQ,GAAY70S,EAAKhB,SAAS,MAAO,MACjDo7S,EAAY8K,EAAgBnQ,GAAiBmQ,GAAiB,KAC9D3J,EAAYnB,EAAYrtD,EAAc,KAC5C,GAA+B,IAA3BxiQ,KAAK8yR,YAAYjzQ,QAAgBgwS,EACnC,OAEF7vT,KAAK8wT,sBAAsB,CACzBr9S,OACAgnO,MAAO,GAAGz6O,KAAK8yR,YAAYjzQ,UAC3B+vS,cACAC,YACArtD,cACAwuD,YACAC,eAAgB,CAAC7lT,EAAQk4M,KACvB,MAAMvzM,EAAIuzM,EAAO,GAAKtjN,KAAK8yR,YAAYjzQ,MAAQ,EACzC7P,EAAIszM,EAAO,GAAKtjN,KAAK8yR,YAAYjzQ,MAAQ,EACzCA,EAAQyjM,EAAO,GAAKA,EAAO,GAAKtjN,KAAK8yR,YAAYjzQ,MACjDC,EAASwjM,EAAO,GAAKA,EAAO,GAAKtjN,KAAK8yR,YAAYjzQ,MAOxD,OANAzU,EAAO7J,KAAK,GAAGwO,KAAKC,KAAK6P,KAASC,QAC9B+vS,EACFzkT,EAAO7J,KAAK,KAEZ6J,EAAO7J,KAAK,KAEP,CAAC+hN,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAG,GAGzD,CACF,EAEF,MAAMmlG,WAAyB4H,GAC7B,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,EAAI,KACJhC,GACEwW,EAEJ,GADAjqB,KAAK+Z,KAAKgwS,eAt0jDJ,GAu0jDD/pT,KAAK+iQ,WAAY,CACpB,MAAM6sD,EAAc5vT,KAAKmuB,MAAQq8R,GAAiBxqT,KAAKmuB,OAAS,CAAC,EAAG,EAAG,GACjEq0O,EAAc/sP,EAAK5R,IAAI,MACvB82T,EAAgBrQ,GAAY70S,EAAKhB,SAAS,MAAO,MACjDo7S,EAAY8K,EAAgBnQ,GAAiBmQ,GAAiB,KAC9D3J,EAAYnB,EAAYrtD,EAAc,KAC5C,GAA+B,IAA3BxiQ,KAAK8yR,YAAYjzQ,QAAgBgwS,EACnC,OAEF,MAAMgL,EAAwB,EAAI,EAAIzwT,KAAK84N,IAAI94N,KAAKhE,GAAK,GACzDpG,KAAK8wT,sBAAsB,CACzBr9S,OACAgnO,MAAO,GAAGz6O,KAAK8yR,YAAYjzQ,UAC3B+vS,cACAC,YACArtD,cACAwuD,YACAC,eAAgB,CAAC7lT,EAAQk4M,KACvB,MAAMn0M,EAAKm0M,EAAO,GAAKtjN,KAAK8yR,YAAYjzQ,MAAQ,EAC1CtQ,EAAK+zM,EAAO,GAAKtjN,KAAK8yR,YAAYjzQ,MAAQ,EAC1CzQ,EAAKk0M,EAAO,GAAKtjN,KAAK8yR,YAAYjzQ,MAAQ,EAC1CrQ,EAAK8zM,EAAO,GAAKtjN,KAAK8yR,YAAYjzQ,MAAQ,EAC1Ci7S,EAAO3rT,GAAMC,EAAKD,GAAM,EACxB4rT,EAAOxrT,GAAMC,EAAKD,GAAM,EACxByrT,GAAW5rT,EAAKD,GAAM,EAAI0rT,EAC1BI,GAAWzrT,EAAKD,GAAM,EAAIsrT,EAOhC,OANAzvT,EAAO7J,KAAK,GAAGu5T,KAAQtrT,MAAQ,GAAGsrT,EAAOE,KAAWxrT,KAAMJ,KAAM2rT,EAAOE,KAAW7rT,KAAM2rT,MAAU,GAAG3rT,KAAM2rT,EAAOE,KAAWH,EAAOE,KAAWzrT,KAAMurT,KAAQvrT,MAAQ,GAAGurT,EAAOE,KAAWzrT,KAAMJ,KAAM4rT,EAAOE,KAAW9rT,KAAM4rT,MAAU,GAAG5rT,KAAM4rT,EAAOE,KAAWH,EAAOE,KAAWxrT,KAAMsrT,KAAQtrT,MAAQ,KACvSqgT,EACFzkT,EAAO7J,KAAK,KAEZ6J,EAAO7J,KAAK,KAEP,CAAC+hN,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAG,GAGzD,CACF,EAEF,MAAMolG,WAA2B2H,GAC/B,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,EAAI,KACJhC,GACEwW,EACJjqB,KAAK+Z,KAAKgwS,eAl3jDF,EAm3jDR/pT,KAAK+Z,KAAKmyS,aAAelsT,KAAK+Z,KAAKoyS,SACnCnsT,KAAK+Z,KAAKqyS,QAAS,EACnBpsT,KAAK+Z,KAAKmhT,SAAW,KACfl7T,gBAAgB2oT,KACpB3oT,KAAKmuT,eAAe14S,EAAKhB,SAAS,OAClCzU,KAAK+Z,KAAKq0S,YAAcpuT,KAAKouT,aAE/B,MAAM+M,EAAc1lT,EAAKhB,SAAS,YAClC,IAAK4G,GAAc8/S,EAAa,MAC9B,OAEF,MAAMD,EAAWl7T,KAAK+Z,KAAKmhT,SAAW5vS,aAAahf,KAAK6uT,GACxD,IAAKn7T,KAAK+iQ,WAAY,CACpB,MAAM6sD,EAAc5vT,KAAKmuB,MAAQq8R,GAAiBxqT,KAAKmuB,OAAS,CAAC,EAAG,EAAG,GACjEq0O,EAAc/sP,EAAK5R,IAAI,MACvBkvR,EAAc/yR,KAAK8yR,YAAYjzQ,OAAS,EAC5C+6S,EAAe,EAAI7nC,EACfrjE,EAAO,CAAC+/B,IAAUA,KAAU,KAAW,KAC7C,IAAK,IAAInuP,EAAI,EAAG0P,EAAKkqT,EAAS36T,OAAQe,EAAI0P,EAAI1P,GAAK,EACjDouN,EAAK,GAAKtlN,KAAKC,IAAIqlN,EAAK,GAAIwrG,EAAS55T,GAAKs5T,GAC1ClrG,EAAK,GAAKtlN,KAAKC,IAAIqlN,EAAK,GAAIwrG,EAAS55T,EAAI,GAAKs5T,GAC9ClrG,EAAK,GAAKtlN,KAAK2D,IAAI2hN,EAAK,GAAIwrG,EAAS55T,GAAKs5T,GAC1ClrG,EAAK,GAAKtlN,KAAK2D,IAAI2hN,EAAK,GAAIwrG,EAAS55T,EAAI,GAAKs5T,GAE3CluT,EAAKkC,UAAU5O,KAAKolS,UAAW11E,KAClC1vN,KAAKolS,UAAY11E,GAEnB1vN,KAAK8wT,sBAAsB,CACzBr9S,OACAgnO,MAAO,GAAGs4C,MACV68B,cACAptD,cACAyuD,eAAgB,CAAC7lT,EAAQk4M,KACvB,IAAK,IAAIhiN,EAAI,EAAG0P,EAAKkqT,EAAS36T,OAAQe,EAAI0P,EAAI1P,GAAK,EACjD8J,EAAO7J,KAAK,GAAG25T,EAAS55T,MAAM45T,EAAS55T,EAAI,MAAY,IAANA,EAAU,IAAM,OAGnE,OADA8J,EAAO7J,KAAK,KACL,CAAC+hN,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAG,GAGzD,CACF,EAEF,MAAMqlG,WAA0BD,GAC9B,WAAAz/S,CAAYghB,GACV7gB,MAAM6gB,GACNjqB,KAAK+Z,KAAKgwS,eAl6jDH,CAm6jDT,EAEF,MAAMnB,WAAwByH,GAC5B,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACNjqB,KAAK+Z,KAAKgwS,eAj6jDL,EAk6jDP,EAEF,MAAMlB,WAAsBwH,GAC1B,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACNjqB,KAAK+Z,KAAKmyS,aAAelsT,KAAK+Z,KAAKoyS,SACnCnsT,KAAK+Z,KAAKqyS,QAAS,EACnB,MAAM,KACJ32S,EAAI,KACJhC,GACEwW,EACJjqB,KAAK+Z,KAAKgwS,eA56jDP,GA66jDH/pT,KAAK+Z,KAAKqhT,SAAW,GACrBp7T,KAAK+Z,KAAKsyS,YAAcrsT,KAAK+Z,KAAKqyS,OAClCpsT,KAAK+Z,KAAKqyS,QAAS,EACnBpsT,KAAK+Z,KAAK2iO,QAAUjnO,EAAK5R,IAAI,OAAS,EACtC,MAAMw3T,EAAc5lT,EAAKhB,SAAS,WAClC,GAAKrT,MAAMsT,QAAQ2mT,GAAnB,CAGA,IAAK,IAAI/5T,EAAI,EAAG0P,EAAKqqT,EAAY96T,OAAQe,EAAI0P,IAAM1P,EAAG,CACpD,IAAKF,MAAMsT,QAAQ2mT,EAAY/5T,IAC7B,SAEF,MAAMg6T,EAAU,IAAIhwS,aAAa+vS,EAAY/5T,GAAGf,QAChDP,KAAK+Z,KAAKqhT,SAAS75T,KAAK+5T,GACxB,IAAK,IAAIlzS,EAAI,EAAG0nB,EAAKurR,EAAY/5T,GAAGf,OAAQ6nB,EAAI0nB,EAAI1nB,GAAK,EAAG,CAC1D,MAAMrY,EAAI0D,EAAK+V,WAAW6xS,EAAY/5T,GAAG8mB,IACvCpY,EAAIyD,EAAK+V,WAAW6xS,EAAY/5T,GAAG8mB,EAAI,IACxB,iBAANrY,GAA+B,iBAANC,IAClCsrT,EAAQlzS,GAAKrY,EACburT,EAAQlzS,EAAI,GAAKpY,EAErB,CACF,CACA,IAAKhQ,KAAK+iQ,WAAY,CACpB,MAAM6sD,EAAc5vT,KAAKmuB,MAAQq8R,GAAiBxqT,KAAKmuB,OAAS,CAAC,EAAG,EAAG,GACjEq0O,EAAc/sP,EAAK5R,IAAI,MACvBkvR,EAAc/yR,KAAK8yR,YAAYjzQ,OAAS,EAC5C+6S,EAAe,EAAI7nC,EACfrjE,EAAO,CAAC+/B,IAAUA,KAAU,KAAW,KAC7C,IAAK,MAAM6rE,KAAWt7T,KAAK+Z,KAAKqhT,SAC9B,IAAK,IAAI95T,EAAI,EAAG0P,EAAKsqT,EAAQ/6T,OAAQe,EAAI0P,EAAI1P,GAAK,EAChDouN,EAAK,GAAKtlN,KAAKC,IAAIqlN,EAAK,GAAI4rG,EAAQh6T,GAAKs5T,GACzClrG,EAAK,GAAKtlN,KAAKC,IAAIqlN,EAAK,GAAI4rG,EAAQh6T,EAAI,GAAKs5T,GAC7ClrG,EAAK,GAAKtlN,KAAK2D,IAAI2hN,EAAK,GAAI4rG,EAAQh6T,GAAKs5T,GACzClrG,EAAK,GAAKtlN,KAAK2D,IAAI2hN,EAAK,GAAI4rG,EAAQh6T,EAAI,GAAKs5T,GAG5CluT,EAAKkC,UAAU5O,KAAKolS,UAAW11E,KAClC1vN,KAAKolS,UAAY11E,GAEnB1vN,KAAK8wT,sBAAsB,CACzBr9S,OACAgnO,MAAO,GAAGs4C,MACV68B,cACAptD,cACAyuD,eAAgB,CAAC7lT,EAAQk4M,KACvB,IAAK,MAAMg4G,KAAWt7T,KAAK+Z,KAAKqhT,SAAU,CACxC,IAAK,IAAI95T,EAAI,EAAG0P,EAAKsqT,EAAQ/6T,OAAQe,EAAI0P,EAAI1P,GAAK,EAChD8J,EAAO7J,KAAK,GAAG+5T,EAAQh6T,MAAMg6T,EAAQh6T,EAAI,MAAY,IAANA,EAAU,IAAM,OAEjE8J,EAAO7J,KAAK,IACd,CACA,MAAO,CAAC+hN,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAG,GAGzD,CAhDA,CAiDF,CACA,oBAAO2uG,CAAcpI,EAAYp2S,GAAM,MACrCu+S,EAAK,GACL/uD,IAEA,MAAM,cACJi3D,EAAa,MACb/rS,EAAK,QACLuuN,EAAO,MACPkqB,EAAK,SACL20D,EAAQ,KACR5sT,EAAI,SACJiR,EAAQ,UACR2vQ,EAAS,KACT4qC,GACEtQ,EACE2R,EAAMtB,GAAiB,IAAI1mT,GAAKC,GACtC+nT,EAAIzmT,IAAI,OAAQ1B,GAAKxP,IAAI,UACzB23T,EAAIzmT,IAAI,UAAW1B,GAAKxP,IAAI,QAC5B23T,EAAIzmT,IAAImlT,EAAgB,IAAM,eAAgB,KAAKvoT,QACnD6pT,EAAIzmT,IAAI,OAAQpG,GAChB6sT,EAAIzmT,IAAI,UAAWwmT,GAAUj4G,QAAUsjD,EAAMtjD,QAC7Ck4G,EAAIzmT,IAAI,IAAK,GACbymT,EAAIzmT,IAAI,SAAU6K,GACdu6S,GACFqB,EAAIzmT,IAAI,IAAKsK,GAAuB86S,IAElCoB,GACFC,EAAIzmT,IAAI,KAAM1B,GAAKxP,IAAI,iBAEzB,MAAMwsB,EAAK,IAAI7c,GAAKC,GACpB+nT,EAAIzmT,IAAI,KAAMsb,GACdA,EAAGtb,IAAI,IAAKw6Q,GACZisC,EAAIzmT,IAAI,IAAK3T,MAAMkL,KAAK6hB,GAAO/f,GAAKA,EAAI,OACxCotT,EAAIzmT,IAAI,KAAM2nO,GACd,MAAMnwO,EAAI,IAAIiH,GAAKC,GAOnB,OANA+nT,EAAIzmT,IAAI,KAAMxI,GACVylT,EACFzlT,EAAEwI,IAAI,IAAKi9S,GAEXzlT,EAAEwI,IAAI,IAAKkuP,GAENu4D,CACT,CACA,sCAAa1J,CAA0BjI,EAAYp2S,EAAMwW,GACvD,GAAI4/R,EAAW0R,SACb,OAAOv7T,KAAKy7T,sCAAsC5R,EAAYp2S,EAAMwW,GAEtE,MAAM,MACJkE,EAAK,KACLxf,EAAI,MACJi4P,EAAK,UACL2oB,EAAS,QACT7yC,GACEmtE,EACE6R,EAAmB,CAAC,GAAGnsC,cAAuB,GAAGluB,GAAYlzO,GAAO,MAC1D,IAAZuuN,GACFg/E,EAAiBn6T,KAAK,UAExB,IAAK,MAAMo6T,KAAW/0D,EAAM95N,MAAO,CACjC4uR,EAAiBn6T,KAAK,GAAGqd,GAAe+8S,EAAQ,OAAO/8S,GAAe+8S,EAAQ,SAC9E,IAAK,IAAIr6T,EAAI,EAAG0P,EAAK2qT,EAAQp7T,OAAQe,EAAI0P,EAAI1P,GAAK,EAChD,GAAIkd,MAAMm9S,EAAQr6T,IAChBo6T,EAAiBn6T,KAAK,GAAGqd,GAAe+8S,EAAQr6T,EAAI,OAAOsd,GAAe+8S,EAAQr6T,EAAI,aACjF,CACL,MAAOs6T,EAAKC,EAAKC,EAAKC,EAAKhsT,EAAGC,GAAK2rT,EAAQ/tT,MAAMtM,EAAGA,EAAI,GACxDo6T,EAAiBn6T,KAAK,CAACq6T,EAAKC,EAAKC,EAAKC,EAAKhsT,EAAGC,GAAGiM,IAAI2C,IAAgBpU,KAAK,KAAO,KACnF,CAEqB,IAAnBmxT,EAAQp7T,QACVm7T,EAAiBn6T,KAAK,GAAGqd,GAAe+8S,EAAQ,OAAO/8S,GAAe+8S,EAAQ,QAElF,CACAD,EAAiBn6T,KAAK,KACtB,MAAMwhQ,EAAa24D,EAAiBlxT,KAAK,MACnCw4P,EAAuB,IAAIxvP,GAAKC,GAMtC,GALAuvP,EAAqBjuP,IAAI,WAAY,GACrCiuP,EAAqBjuP,IAAI,UAAW1B,GAAKxP,IAAI,SAC7Cm/P,EAAqBjuP,IAAI,OAAQ1B,GAAKxP,IAAI,YAC1Cm/P,EAAqBjuP,IAAI,OAAQpG,GACjCq0P,EAAqBjuP,IAAI,SAAUguP,EAAWxiQ,QAC9B,IAAZm8O,EAAe,CACjB,MAAMvzN,EAAY,IAAI3V,GAAKC,GACrBm/O,EAAY,IAAIp/O,GAAKC,GACrBqzN,EAAK,IAAItzN,GAAKC,GACpBqzN,EAAG/xN,IAAI,KAAM2nO,GACb5V,EAAG/xN,IAAI,OAAQ1B,GAAKxP,IAAI,cACxB+uP,EAAU79O,IAAI,KAAM+xN,GACpB39M,EAAUpU,IAAI,YAAa69O,GAC3BoQ,EAAqBjuP,IAAI,YAAaoU,EACxC,CACA,MAAM85O,EAAK,IAAI9iP,GAAa4iP,GAE5B,OADAE,EAAGxtP,KAAOutP,EACHC,CACT,CACA,kDAAaw4D,CAAsC5R,EAAYp2S,EAAMwW,GACnE,MAAM,MACJkE,EAAK,KACLxf,EACA4sT,UAAU,QACRI,GACD,QACDj/E,GACEmtE,EACE6R,EAAmB,CAAC,GAAGr6D,GAAYlzO,GAAO,KAAS,UACzDutS,EAAiBn6T,KAAK,GAAGqd,GAAe+8S,EAAQ,OAAO/8S,GAAe+8S,EAAQ,SAC9E,IAAK,IAAIr6T,EAAI,EAAG0P,EAAK2qT,EAAQp7T,OAAQe,EAAI0P,EAAI1P,GAAK,EAChD,GAAIkd,MAAMm9S,EAAQr6T,IAChBo6T,EAAiBn6T,KAAK,GAAGqd,GAAe+8S,EAAQr6T,EAAI,OAAOsd,GAAe+8S,EAAQr6T,EAAI,aACjF,CACL,MAAOs6T,EAAKC,EAAKC,EAAKC,EAAKhsT,EAAGC,GAAK2rT,EAAQ/tT,MAAMtM,EAAGA,EAAI,GACxDo6T,EAAiBn6T,KAAK,CAACq6T,EAAKC,EAAKC,EAAKC,EAAKhsT,EAAGC,GAAGiM,IAAI2C,IAAgBpU,KAAK,KAAO,KACnF,CAEFkxT,EAAiBn6T,KAAK,OACtB,MAAMwhQ,EAAa24D,EAAiBlxT,KAAK,MACnCw4P,EAAuB,IAAIxvP,GAAKC,GACtCuvP,EAAqBjuP,IAAI,WAAY,GACrCiuP,EAAqBjuP,IAAI,UAAW1B,GAAKxP,IAAI,SAC7Cm/P,EAAqBjuP,IAAI,OAAQ1B,GAAKxP,IAAI,YAC1Cm/P,EAAqBjuP,IAAI,OAAQpG,GACjCq0P,EAAqBjuP,IAAI,SAAUguP,EAAWxiQ,QAC9C,MAAM4oB,EAAY,IAAI3V,GAAKC,GACrBm/O,EAAY,IAAIp/O,GAAKC,GAC3B0V,EAAUpU,IAAI,YAAa69O,GAC3BoQ,EAAqBjuP,IAAI,YAAaoU,GACtC,MAAM29M,EAAK,IAAItzN,GAAKC,GACpBm/O,EAAU79O,IAAI,KAAM+xN,GACpBA,EAAG/xN,IAAI,KAAM1B,GAAKxP,IAAI,aACN,IAAZ64O,IACF5V,EAAG/xN,IAAI,KAAM2nO,GACb5V,EAAG/xN,IAAI,OAAQ1B,GAAKxP,IAAI,eAE1B,MAAMo/P,EAAK,IAAI9iP,GAAa4iP,GAE5B,OADAE,EAAGxtP,KAAOutP,EACHC,CACT,EAEF,MAAM6lD,WAA4BuH,GAChC,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,EAAI,KACJhC,GACEwW,EAMJ,GALAjqB,KAAK+Z,KAAKgwS,eA5nkDD,EA6nkDT/pT,KAAK+Z,KAAKsyS,YAAcrsT,KAAK+Z,KAAKqyS,OAClCpsT,KAAK+Z,KAAKqyS,QAAS,EACnBpsT,KAAK+Z,KAAK2iO,QAAUjnO,EAAK5R,IAAI,OAAS,EACnB7D,KAAK+Z,KAAKkwS,WAAaQ,GAAch1S,EAAM,MAC9C,CACd,MAAM0T,EAAYnpB,KAAK+iQ,YAAYttP,KAAK5R,IAAI,aAC5C,IAAK7D,KAAK+iQ,aAAe55O,GAAWnU,IAAI,aAAc,CAChDhV,KAAK+iQ,YACPv7P,EAAK,8DAEP,MAAMqoT,EAAY7vT,KAAKmuB,MAAQq8R,GAAiBxqT,KAAKmuB,OAAS,CAAC,EAAG,EAAG,GAC/D6iS,EAAYv7S,EAAK5R,IAAI,MAC3B7D,KAAK8wT,sBAAsB,CACzBr9S,OACAo8S,YACAkB,UAAW,WACXC,YACAC,eAAgB,CAAC7lT,EAAQk4M,KACvBl4M,EAAO7J,KAAK,GAAG+hN,EAAO,MAAMA,EAAO,OAAQ,GAAGA,EAAO,MAAMA,EAAO,OAAQ,GAAGA,EAAO,MAAMA,EAAO,OAAQ,GAAGA,EAAO,MAAMA,EAAO,OAAQ,KACjI,CAACA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,MAGtD,CACF,MACEtjN,KAAK+Z,KAAK22S,SAAW,IAEzB,CACA,oBAAOuB,CAAcpI,EAAYp2S,GAAM,MACrCu+S,EAAK,GACL/uD,IAEA,MAAM,MACJ90O,EAAK,cACL+rS,EAAa,QACbx9E,EAAO,KACP/tO,EAAI,SACJiR,EAAQ,KACRu6S,EAAI,WACJlQ,GACEJ,EACEh2B,EAAYqmC,GAAiB,IAAI1mT,GAAKC,GAe5C,GAdAogR,EAAU9+Q,IAAI,OAAQ1B,GAAKxP,IAAI,UAC/BgwR,EAAU9+Q,IAAI,UAAW1B,GAAKxP,IAAI,cAClCgwR,EAAU9+Q,IAAImlT,EAAgB,IAAM,eAAgB,KAAKvoT,QACzDkiR,EAAU9+Q,IAAI,eAAgB,KAAKpD,QACnCkiR,EAAU9+Q,IAAI,OAAQpG,GACtBklR,EAAU9+Q,IAAI,IAAK,GACnB8+Q,EAAU9+Q,IAAI,SAAU,CAAC,EAAG,EAAG,IAC/B8+Q,EAAU9+Q,IAAI,SAAU6K,GACxBi0Q,EAAU9+Q,IAAI,aAAck1S,GAC5Bp2B,EAAU9+Q,IAAI,IAAK3T,MAAMkL,KAAK6hB,GAAO/f,GAAKA,EAAI,OAC9CylR,EAAU9+Q,IAAI,KAAM2nO,GAChBy9E,GACFtmC,EAAU9+Q,IAAI,IAAKsK,GAAuB86S,IAExCnI,GAAS/uD,EAAI,CACf,MAAM12P,EAAI,IAAIiH,GAAKC,GACnBogR,EAAU9+Q,IAAI,KAAMxI,GACpBA,EAAEwI,IAAI,IAAKi9S,GAAS/uD,EACtB,CACA,OAAO4wB,CACT,CACA,sCAAai+B,CAA0BjI,EAAYp2S,EAAMwW,GACvD,MAAM,MACJkE,EAAK,KACLxf,EAAI,SACJ4sT,EAAQ,QACR7+E,GACEmtE,EACE6R,EAAmB,CAAC,GAAGr6D,GAAYlzO,GAAO,KAAS,UACnD/iB,EAAS,GACf,IAAK,MAAMuwT,KAAWJ,EAAU,CAC9BnwT,EAAO7K,OAAS,EAChB6K,EAAO7J,KAAK,GAAGqd,GAAe+8S,EAAQ,OAAO/8S,GAAe+8S,EAAQ,SACpE,IAAK,IAAIr6T,EAAI,EAAG0P,EAAK2qT,EAAQp7T,OAAQe,EAAI0P,EAAI1P,GAAK,EAChD8J,EAAO7J,KAAK,GAAGqd,GAAe+8S,EAAQr6T,OAAOsd,GAAe+8S,EAAQr6T,EAAI,SAE1E8J,EAAO7J,KAAK,KACZm6T,EAAiBn6T,KAAK6J,EAAOZ,KAAK,MACpC,CACAkxT,EAAiBn6T,KAAK,MACtB,MAAMwhQ,EAAa24D,EAAiBlxT,KAAK,MACnCw4P,EAAuB,IAAIxvP,GAAKC,GACtCuvP,EAAqBjuP,IAAI,WAAY,GACrCiuP,EAAqBjuP,IAAI,UAAW1B,GAAKxP,IAAI,SAC7Cm/P,EAAqBjuP,IAAI,OAAQ1B,GAAKxP,IAAI,YAC1Cm/P,EAAqBjuP,IAAI,OAAQpG,GACjCq0P,EAAqBjuP,IAAI,SAAUguP,EAAWxiQ,QAC9C,MAAM4oB,EAAY,IAAI3V,GAAKC,GACrBm/O,EAAY,IAAIp/O,GAAKC,GAC3B0V,EAAUpU,IAAI,YAAa69O,GAC3BoQ,EAAqBjuP,IAAI,YAAaoU,GACtC,MAAM29M,EAAK,IAAItzN,GAAKC,GACpBm/O,EAAU79O,IAAI,KAAM+xN,GACpBA,EAAG/xN,IAAI,KAAM1B,GAAKxP,IAAI,aACN,IAAZ64O,IACF5V,EAAG/xN,IAAI,KAAM2nO,GACb5V,EAAG/xN,IAAI,OAAQ1B,GAAKxP,IAAI,eAE1B,MAAMo/P,EAAK,IAAI9iP,GAAa4iP,GAE5B,OADAE,EAAGxtP,KAAOutP,EACHC,CACT,EAEF,MAAM8lD,WAA4BsH,GAChC,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,EAAI,KACJhC,GACEwW,EAGJ,GAFAjqB,KAAK+Z,KAAKgwS,eA3ukDD,GA4ukDU/pT,KAAK+Z,KAAKkwS,WAAaQ,GAAch1S,EAAM,OAE5D,IAAKzV,KAAK+iQ,WAAY,CACpB,MAAM6sD,EAAc5vT,KAAKmuB,MAAQq8R,GAAiBxqT,KAAKmuB,OAAS,CAAC,EAAG,EAAG,GACjEq0O,EAAc/sP,EAAK5R,IAAI,MAC7B7D,KAAK8wT,sBAAsB,CACzBr9S,OACAgnO,MAAO,iBACPm1E,cACAptD,cACAyuD,eAAgB,CAAC7lT,EAAQk4M,KACvBl4M,EAAO7J,KAAK,GAAG+hN,EAAO,MAAMA,EAAO,GAAK,QAAS,GAAGA,EAAO,MAAMA,EAAO,GAAK,QAAS,KAC/E,CAACA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,MAGtD,OAEAtjN,KAAK+Z,KAAK22S,SAAW,IAEzB,EAEF,MAAM1H,WAA2BqH,GAC/B,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,EAAI,KACJhC,GACEwW,EAGJ,GAFAjqB,KAAK+Z,KAAKgwS,eAvwkDF,GAwwkDW/pT,KAAK+Z,KAAKkwS,WAAaQ,GAAch1S,EAAM,OAE5D,IAAKzV,KAAK+iQ,WAAY,CACpB,MAAM6sD,EAAc5vT,KAAKmuB,MAAQq8R,GAAiBxqT,KAAKmuB,OAAS,CAAC,EAAG,EAAG,GACjEq0O,EAAc/sP,EAAK5R,IAAI,MAC7B7D,KAAK8wT,sBAAsB,CACzBr9S,OACAgnO,MAAO,aACPm1E,cACAptD,cACAyuD,eAAgB,CAAC7lT,EAAQk4M,KACvB,MAAMyH,GAAMzH,EAAO,GAAKA,EAAO,IAAM,EACrC,IAAI1vL,EAAQm3L,EACRh7M,EAAIuzM,EAAO,GACf,MAAMtzM,EAAIszM,EAAO,GACX04G,EAAO14G,EAAO,GACpBl4M,EAAO7J,KAAK,GAAGwO,KAAKC,EAAI4jB,OACxB,GACE7jB,GAAK,EACL6jB,EAAkB,IAAVA,EAAcm3L,EAAK,EAC3B3/M,EAAO7J,KAAK,GAAGwO,KAAKC,EAAI4jB,aACjB7jB,EAAIisT,GAEb,OADA5wT,EAAO7J,KAAK,KACL,CAAC+hN,EAAO,GAAI04G,EAAMhsT,EAAI,EAAI+6M,EAAI/6M,EAAI,EAAI+6M,EAAG,GAGtD,OAEA/qN,KAAK+Z,KAAK22S,SAAW,IAEzB,EAEF,MAAMzH,WAA4BoH,GAChC,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,EAAI,KACJhC,GACEwW,EAGJ,GAFAjqB,KAAK+Z,KAAKgwS,eA9ykDD,GA+ykDU/pT,KAAK+Z,KAAKkwS,WAAaQ,GAAch1S,EAAM,OAE5D,IAAKzV,KAAK+iQ,WAAY,CACpB,MAAM6sD,EAAc5vT,KAAKmuB,MAAQq8R,GAAiBxqT,KAAKmuB,OAAS,CAAC,EAAG,EAAG,GACjEq0O,EAAc/sP,EAAK5R,IAAI,MAC7B7D,KAAK8wT,sBAAsB,CACzBr9S,OACAgnO,MAAO,aACPm1E,cACAptD,cACAyuD,eAAgB,CAAC7lT,EAAQk4M,KACvBl4M,EAAO7J,MAAS+hN,EAAO,GAAKA,EAAO,IAAM,EAA7B,KAAwCA,EAAO,GAAKA,EAAO,IAAM,EAA7B,MAAwCA,EAAO,GAAKA,EAAO,IAAM,EAA7B,KAAwCA,EAAO,GAAKA,EAAO,IAAM,EAA7B,KAAoC,KACrJ,CAACA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,MAGtD,OAEAtjN,KAAK+Z,KAAK22S,SAAW,IAEzB,EAEF,MAAMxH,WAAwBmH,GAC5B,GACA,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACNjqB,KAAK+Z,KAAKgwS,eAv0kDL,GAw0kDL/pT,MAAK,EAAqBA,KAAK+Z,KAAKmyS,aAAelsT,KAAK+Z,KAAKoyS,SAC7DnsT,KAAK+Z,KAAKsyS,YAAcrsT,KAAK+Z,KAAKqyS,OAClCpsT,KAAK+Z,KAAKqyS,QAAS,CACrB,CACA,uBAAAoB,CAAwBC,EAAWC,EAAc,MAC/C,OAAID,IACGztT,KAAK+Z,KAAKsyS,aAGfrsT,MAAK,EAAqBA,KAAK+Z,KAAKmyS,aACpClsT,KAAK+Z,KAAKmyS,cAAe,GAClB,IAETlsT,KAAK+Z,KAAKmyS,aAAelsT,MAAK,GACtB0tT,GAAa14S,IAAIhV,KAAK+Z,KAAK8hB,IACrC,CACA,wBAAaihN,CAAYt/M,EAAQ/pB,GAC/B,MAAM,MACJoM,EAAK,OACLC,GACE0d,EACE8+M,EAAS,IAAI9wO,gBAAgBqU,EAAOC,GACpCy8N,EAAMD,EAAOE,WAAW,KAAM,CAClCp7I,OAAO,IAETm7I,EAAIsB,UAAUrgN,EAAQ,EAAG,GACzB,MAAMzjB,EAAOwiO,EAAI5kO,aAAa,EAAG,EAAGkI,EAAOC,GAAQ/F,KAC7CkiT,EAAQ,IAAI9wT,YAAY4O,EAAK3O,QAC7B8wT,EAAWD,EAAMl5C,KAAK/3Q,EAAYC,eAAiB8E,GAAKA,IAAM,IAAO,IAAOA,MAAoB,KAAdA,IACpFmsT,IACF3/E,EAAI4/E,UAAY,QAChB5/E,EAAIE,SAAS,EAAG,EAAG58N,EAAOC,GAC1By8N,EAAIsB,UAAUrgN,EAAQ,EAAG,IAE3B,MAAM4+R,EAAoB9/E,EAAO+/E,cAAc,CAC7C93T,KAAM,aACN+3T,QAAS,IACRh5S,MAAKm8Q,GAAQA,EAAKx/Q,gBACfs8S,EAAclpT,GAAKxP,IAAI,WACvB24T,EAAYnpT,GAAKxP,IAAI,SACrBw4C,EAAQ,IAAI7oC,GAAKC,GACvB4oC,EAAMtnC,IAAI,OAAQwnT,GAClBlgR,EAAMtnC,IAAI,UAAWynT,GACrBngR,EAAMtnC,IAAI,mBAAoB,GAC9BsnC,EAAMtnC,IAAI,aAAc1B,GAAKxP,IAAI,cACjCw4C,EAAMtnC,IAAI,SAAU1B,GAAKxP,IAAI,cAC7Bw4C,EAAMtnC,IAAI,OAAQ,CAAC,EAAG,EAAG8K,EAAOC,IAChCu8B,EAAMtnC,IAAI,QAAS8K,GACnBw8B,EAAMtnC,IAAI,SAAU+K,GACpB,IAAIoqS,EAAc,KAClB,GAAIgS,EAAU,CACZ,MAAMO,EAAc,IAAI9xT,WAAWsxT,EAAM17T,QACzC,GAAIyK,EAAYC,eACd,IAAK,IAAI3J,EAAI,EAAG0P,EAAKirT,EAAM17T,OAAQe,EAAI0P,EAAI1P,IACzCm7T,EAAYn7T,GAAK26T,EAAM36T,KAAO,QAGhC,IAAK,IAAIA,EAAI,EAAG0P,EAAKirT,EAAM17T,OAAQe,EAAI0P,EAAI1P,IACzCm7T,EAAYn7T,GAAgB,IAAX26T,EAAM36T,GAG3B,MAAMujP,EAAQ,IAAIrxO,GAAKC,GACvBoxO,EAAM9vO,IAAI,OAAQwnT,GAClB13E,EAAM9vO,IAAI,UAAWynT,GACrB33E,EAAM9vO,IAAI,mBAAoB,GAC9B8vO,EAAM9vO,IAAI,aAAc1B,GAAKxP,IAAI,eACjCghP,EAAM9vO,IAAI,QAAS8K,GACnBglO,EAAM9vO,IAAI,SAAU+K,GACpBoqS,EAAc,IAAIlqS,GAAOy8S,EAAa,EAAG,EAAG53E,EAC9C,CAEA,MAAO,CACL54L,YAFkB,IAAIjsC,SAAao8S,EAAmB,EAAG,EAAG//Q,GAG5D6tQ,cACArqS,QACAC,SAEJ,CACA,oBAAOmyS,CAAcpI,EAAYp2S,GAAM,MACrCu+S,EAAK,GACL/uD,IAEA,MAAM,cACJi3D,EAAa,KACbvrT,EAAI,SACJiR,EAAQ,KACRu6S,GACEtQ,EACE6S,EAAQxC,GAAiB,IAAI1mT,GAAKC,GAWxC,GAVAipT,EAAM3nT,IAAI,OAAQ1B,GAAKxP,IAAI,UAC3B64T,EAAM3nT,IAAI,UAAW1B,GAAKxP,IAAI,UAC9B64T,EAAM3nT,IAAImlT,EAAgB,IAAM,eAAgB,KAAKvoT,QACrD+qT,EAAM3nT,IAAI,OAAQpG,GAClB+tT,EAAM3nT,IAAI,IAAK,GACf2nT,EAAM3nT,IAAI,SAAU,CAAC,EAAG,EAAG,IAC3B2nT,EAAM3nT,IAAI,SAAU6K,GAChBu6S,GACFuC,EAAM3nT,IAAI,IAAKsK,GAAuB86S,IAEpCnI,GAAS/uD,EAAI,CACf,MAAM12P,EAAI,IAAIiH,GAAKC,GACnBipT,EAAM3nT,IAAI,KAAMxI,GACZylT,EACFzlT,EAAEwI,IAAI,IAAKi9S,GAEXzlT,EAAEwI,IAAI,IAAKkuP,EAEf,CACA,OAAOy5D,CACT,CACA,sCAAa5K,CAA0BjI,EAAYp2S,EAAMwW,GACvD,GAAI4/R,EAAWqQ,cACb,OAAO,KAET,MAAM,SACJt6S,GACEiqS,GACE,SACJj+D,EAAQ,MACR/rO,EAAK,OACLC,GACEmK,EAAOoyB,MACLlzB,EAAY,IAAI3V,GAAKC,GACrBkpT,EAAU,IAAInpT,GAAKC,GACzB0V,EAAUpU,IAAI,UAAW4nT,GACzBA,EAAQ5nT,IAAI,MAAO62O,GACnB,MAAMmX,EAAa,KAAKljP,SAAaC,qBAC/BkjP,EAAuB,IAAIxvP,GAAKC,GAMtC,GALAuvP,EAAqBjuP,IAAI,WAAY,GACrCiuP,EAAqBjuP,IAAI,UAAW1B,GAAKxP,IAAI,SAC7Cm/P,EAAqBjuP,IAAI,OAAQ1B,GAAKxP,IAAI,YAC1Cm/P,EAAqBjuP,IAAI,OAAQ,CAAC,EAAG,EAAG8K,EAAOC,IAC/CkjP,EAAqBjuP,IAAI,YAAaoU,GAClCvJ,EAAU,CACZ,MAAM2K,EAAS5K,GAAkBC,EAAUC,EAAOC,GAClDkjP,EAAqBjuP,IAAI,SAAUwV,EACrC,CACA,MAAM04O,EAAK,IAAI9iP,GAAa4iP,GAE5B,OADAE,EAAGxtP,KAAOutP,EACHC,CACT,EAEF,MAAMkmD,WAAiCkH,GACrC,WAAApnT,CAAYghB,GACV7gB,MAAM6gB,GACN,MAAM,KACJxU,EAAI,KACJhC,GACEwW,EACEo1B,EAAO,IAAI2kN,GAASvuP,EAAK5R,IAAI,MAAO4P,GAC1CzT,KAAK+Z,KAAKgwS,eA19kDI,GA29kDd/pT,KAAK+Z,KAAKmyS,aAAelsT,KAAK+Z,KAAKoyS,SACnCnsT,KAAK+Z,KAAKqyS,QAAS,EACnBpsT,KAAK+Z,KAAKslC,KAAOA,EAAKklN,aACtB,MAAM7hQ,EAAO+S,EAAK5R,IAAI,QACtB7D,KAAK+Z,KAAKrX,KAAOA,aAAgB2Q,GAAO9C,EAAkB7N,EAAKA,MAAQ,UACvE,MAAMsuT,EAAYv7S,EAAK5R,IAAI,MAC3B7D,KAAK+Z,KAAKi3S,UAAiC,iBAAdA,GAA0BA,GAAa,GAAKA,GAAa,EAAIA,EAAY,IACxG,EAMF,MAAM4L,WAAsBlqS,GAC1B,WAAAzpB,CAAYyB,EAAKgpB,EAAak4L,GAC5BxiN,MAAMsqB,GACN1zB,KAAK0K,IAAMA,EACX1K,KAAKyV,KAAO/K,EAAI+K,KAChBzV,KAAK4rN,QAAUA,EACf5rN,KAAK68T,UAAY,KACjB78T,KAAK0zP,aAAc,CACrB,CACA,SAAA1gO,GACE,IAAI1oB,EAOJ,GANItK,KAAK0zP,YACPppP,EAAQtK,KAAK68T,WAEbvyT,EAAQtK,KAAK0K,IAAIgN,SAfL,KAgBZ1X,KAAK0zP,aAAc,IAEhBppP,GAAO/J,OAEV,YADAP,KAAK8yB,KAAM,GAGb9yB,KAAK68T,UAAY78T,KAAK0K,IAAIgN,SAtBZ,KAuBd,MAAMolT,EAAc98T,KAAK68T,WAAWt8T,OAAS,EAE7C+J,GAAQshN,EADQ5rN,KAAK4rN,SACLthN,GAAQwyT,GACxB,MAAMjqS,EAAe7yB,KAAK6yB,aACxBgB,EAAYhB,EAAevoB,EAAM/J,OACxBP,KAAKizB,aAAaY,GACtB9e,IAAIzK,EAAOuoB,GAClB7yB,KAAK6yB,aAAegB,CACtB,EAOF,MAAMkpS,GACJ,WAAA9zT,CAAYzF,GACVxD,KAAKmO,EAAI,EACTnO,KAAK8M,EAAI,EACT,MAAM2mB,EAAI,IAAI9oB,WAAW,KACnBqyT,EAAYx5T,EAAIjD,OACtB,IAAK,IAAIe,EAAI,EAAGA,EAAI,MAAOA,EACzBmyB,EAAEnyB,GAAKA,EAET,IAAK,IAAIA,EAAI,EAAG8mB,EAAI,EAAG9mB,EAAI,MAAOA,EAAG,CACnC,MAAM0wB,EAAMyB,EAAEnyB,GACd8mB,EAAIA,EAAI4J,EAAMxuB,EAAIlC,EAAI07T,GAAa,IACnCvpS,EAAEnyB,GAAKmyB,EAAErL,GACTqL,EAAErL,GAAK4J,CACT,CACAhyB,KAAKyzB,EAAIA,CACX,CACA,YAAAwpS,CAAaljT,GACX,IAAI5L,EAAInO,KAAKmO,EACXrB,EAAI9M,KAAK8M,EACX,MAAM2mB,EAAIzzB,KAAKyzB,EACTlnB,EAAIwN,EAAKxZ,OACTq5C,EAAS,IAAIjvC,WAAW4B,GAC9B,IAAK,IAAIjL,EAAI,EAAGA,EAAIiL,IAAKjL,EAAG,CAC1B6M,EAAIA,EAAI,EAAI,IACZ,MAAM6jB,EAAMyB,EAAEtlB,GACdrB,EAAIA,EAAIklB,EAAM,IACd,MAAMq3M,EAAO51M,EAAE3mB,GACf2mB,EAAEtlB,GAAKk7N,EACP51M,EAAE3mB,GAAKklB,EACP4nB,EAAOt4C,GAAKyY,EAAKzY,GAAKmyB,EAAEzB,EAAMq3M,EAAO,IACvC,CAGA,OAFArpO,KAAKmO,EAAIA,EACTnO,KAAK8M,EAAIA,EACF8sC,CACT,CACA,YAAAsjR,CAAanjT,GACX,OAAO/Z,KAAKi9T,aAAaljT,EAC3B,CACA,OAAAg1P,CAAQh1P,GACN,OAAO/Z,KAAKi9T,aAAaljT,EAC3B,EAEF,MAAMojT,GAAe,WACnB,MAAMvwT,EAAI,IAAIjC,WAAW,CAAC,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,KAC5P6hB,EAAI,IAAImL,WAAW,EAAE,WAAY,UAAW,WAAY,YAAa,UAAW,YAAa,YAAa,SAAU,YAAa,YAAa,OAAQ,WAAY,YAAa,UAAW,WAAY,YAAa,WAAY,WAAY,WAAY,WAAY,UAAW,UAAW,WAAY,UAAW,WAAY,YAAa,UAAW,YAAa,YAAa,SAAU,YAAa,YAAa,QAAS,WAAY,YAAa,UAAW,WAAY,YAAa,WAAY,WAAY,WAAY,WAAY,UAAW,UAAW,WAAY,UAAW,WAAY,WAAY,UAAW,YAAa,YAAa,SAAU,YAAa,YAAa,SAAU,WAAY,YAAa,UAAW,WAAY,YAAa,WAAY,WAAY,WAAY,YAiEvwB,OAhEA,SAAc5d,EAAMiB,EAAQza,GAC1B,IAAI68T,EAAK,WACP11S,GAAM,UACNE,GAAM,WACNy1S,EAAK,UACP,MAAMC,EAAe/8T,EAAS,IAAK,GAC7Bg9T,EAAS,IAAI5yT,WAAW2yT,GAC9B,IAAIh8T,EAAG8mB,EACP,IAAK9mB,EAAI,EAAGA,EAAIf,IAAUe,EACxBi8T,EAAOj8T,GAAKyY,EAAKiB,KAEnBuiT,EAAOj8T,KAAO,IACd,MAAMiL,EAAI+wT,EAAe,EACzB,KAAOh8T,EAAIiL,GACTgxT,EAAOj8T,KAAO,EAEhBi8T,EAAOj8T,KAAOf,GAAU,EAAI,IAC5Bg9T,EAAOj8T,KAAOf,GAAU,EAAI,IAC5Bg9T,EAAOj8T,KAAOf,GAAU,GAAK,IAC7Bg9T,EAAOj8T,KAAOf,GAAU,GAAK,IAC7Bg9T,EAAOj8T,KAAOf,IAAW,GAAK,IAC9Bg9T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACd,MAAMyyL,EAAI,IAAIp8J,WAAW,IACzB,IAAKr2B,EAAI,EAAGA,EAAIg8T,GAAe,CAC7B,IAAKl1S,EAAI,EAAGA,EAAI,KAAMA,EAAG9mB,GAAK,EAC5ByyL,EAAE3rK,GAAKm1S,EAAOj8T,GAAKi8T,EAAOj8T,EAAI,IAAM,EAAIi8T,EAAOj8T,EAAI,IAAM,GAAKi8T,EAAOj8T,EAAI,IAAM,GAEjF,IAIE2hD,EACAp2C,EALEsB,EAAIivT,EACNtwT,EAAI4a,EACJtZ,EAAIwZ,EACJtkB,EAAI+5T,EAGN,IAAKj1S,EAAI,EAAGA,EAAI,KAAMA,EAAG,CACnBA,EAAI,IACN66B,EAAIn2C,EAAIsB,GAAKtB,EAAIxJ,EACjBuJ,EAAIub,GACKA,EAAI,IACb66B,EAAI3/C,EAAIwJ,GAAKxJ,EAAI8K,EACjBvB,EAAI,EAAIub,EAAI,EAAI,IACPA,EAAI,IACb66B,EAAIn2C,EAAIsB,EAAI9K,EACZuJ,EAAI,EAAIub,EAAI,EAAI,KAEhB66B,EAAI70C,GAAKtB,GAAKxJ,GACduJ,EAAI,EAAIub,EAAI,IAEd,MAAM4J,EAAM1uB,EACVk6T,EAAYrvT,EAAI80C,EAAIz2B,EAAEpE,GAAK2rK,EAAElnL,GAAK,EAClC0pP,EAAS3pP,EAAEwb,GACb9kB,EAAI8K,EACJA,EAAItB,EACJA,EAAIA,GAAK0wT,GAAajnE,EAASinE,IAAc,GAAKjnE,GAAU,EAC5DpoP,EAAI6jB,CACN,CACAorS,EAAKA,EAAKjvT,EAAI,EACduZ,EAAKA,EAAK5a,EAAI,EACd8a,EAAKA,EAAKxZ,EAAI,EACdivT,EAAKA,EAAK/5T,EAAI,CAChB,CACA,OAAO,IAAIqH,WAAW,CAAM,IAALyyT,EAAWA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,IAAO,GAAK,IAAW,IAAL11S,EAAWA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,IAAO,GAAK,IAAW,IAALE,EAAWA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,IAAO,GAAK,IAAW,IAALy1S,EAAWA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,IAAO,GAAK,KAC3Q,CAEF,CApEqB,GAqErB,MAAMI,GACJ,WAAAx0T,CAAYy0T,EAAaC,GACvB39T,KAAK8vD,KAAqB,EAAd4tQ,EACZ19T,KAAK6vD,IAAmB,EAAb8tQ,CACb,CACA,GAAAC,CAAIC,GACF79T,KAAK8vD,MAAQ+tQ,EAAK/tQ,KAClB9vD,KAAK6vD,KAAOguQ,EAAKhuQ,GACnB,CACA,GAAAiuQ,CAAID,GACF79T,KAAK8vD,MAAQ+tQ,EAAK/tQ,KAClB9vD,KAAK6vD,KAAOguQ,EAAKhuQ,GACnB,CACA,EAAAkuQ,CAAGF,GACD79T,KAAK8vD,MAAQ+tQ,EAAK/tQ,KAClB9vD,KAAK6vD,KAAOguQ,EAAKhuQ,GACnB,CACA,UAAAmuQ,CAAWC,GACLA,GAAU,IACZj+T,KAAK6vD,IAAM7vD,KAAK8vD,OAASmuQ,EAAS,GAAK,EACvCj+T,KAAK8vD,KAAO,IAEZ9vD,KAAK6vD,IAAM7vD,KAAK6vD,MAAQouQ,EAASj+T,KAAK8vD,MAAQ,GAAKmuQ,EACnDj+T,KAAK8vD,KAAO9vD,KAAK8vD,OAASmuQ,EAAS,EAEvC,CACA,SAAAC,CAAUD,GACJA,GAAU,IACZj+T,KAAK8vD,KAAO9vD,KAAK6vD,KAAOouQ,EAAS,GACjCj+T,KAAK6vD,IAAM,IAEX7vD,KAAK8vD,KAAO9vD,KAAK8vD,MAAQmuQ,EAASj+T,KAAK6vD,MAAQ,GAAKouQ,EACpDj+T,KAAK6vD,MAAQouQ,EAEjB,CACA,WAAAE,CAAYF,GACV,IAAIpuQ,EAAKC,EACI,GAATmuQ,GACFnuQ,EAAO9vD,KAAK6vD,IACZA,EAAM7vD,KAAK8vD,OAEXD,EAAM7vD,KAAK6vD,IACXC,EAAO9vD,KAAK8vD,MAEdmuQ,GAAU,GACVj+T,KAAK6vD,IAAMA,IAAQouQ,EAASnuQ,GAAQ,GAAKmuQ,EACzCj+T,KAAK8vD,KAAOA,IAASmuQ,EAASpuQ,GAAO,GAAKouQ,CAC5C,CACA,GAAAG,GACEp+T,KAAK8vD,MAAQ9vD,KAAK8vD,KAClB9vD,KAAK6vD,KAAO7vD,KAAK6vD,GACnB,CACA,GAAAr5C,CAAIqnT,GACF,MAAMQ,GAAUr+T,KAAK6vD,MAAQ,IAAMguQ,EAAKhuQ,MAAQ,GAChD,IAAIyuQ,GAAWt+T,KAAK8vD,OAAS,IAAM+tQ,EAAK/tQ,OAAS,GAC7CuuQ,EAAS,aACXC,GAAW,GAEbt+T,KAAK6vD,IAAe,EAATwuQ,EACXr+T,KAAK8vD,KAAiB,EAAVwuQ,CACd,CACA,MAAAC,CAAOz0T,EAAOkR,GACZlR,EAAMkR,GAAUhb,KAAK8vD,OAAS,GAAK,IACnChmD,EAAMkR,EAAS,GAAKhb,KAAK8vD,MAAQ,GAAK,IACtChmD,EAAMkR,EAAS,GAAKhb,KAAK8vD,MAAQ,EAAI,IACrChmD,EAAMkR,EAAS,GAAiB,IAAZhb,KAAK8vD,KACzBhmD,EAAMkR,EAAS,GAAKhb,KAAK6vD,MAAQ,GAAK,IACtC/lD,EAAMkR,EAAS,GAAKhb,KAAK6vD,KAAO,GAAK,IACrC/lD,EAAMkR,EAAS,GAAKhb,KAAK6vD,KAAO,EAAI,IACpC/lD,EAAMkR,EAAS,GAAgB,IAAXhb,KAAK6vD,GAC3B,CACA,MAAApS,CAAOogR,GACL79T,KAAK8vD,KAAO+tQ,EAAK/tQ,KACjB9vD,KAAK6vD,IAAMguQ,EAAKhuQ,GAClB,EAEF,MAAM2uQ,GAAkB,WACtB,SAASC,EAAK1uT,EAAGxD,GACf,OAAOwD,IAAMxD,EAAIwD,GAAK,GAAKxD,CAC7B,CACA,SAAS6O,EAAGrL,EAAGC,EAAGkkC,GAChB,OAAOnkC,EAAIC,GAAKD,EAAImkC,CACtB,CACA,SAASwqR,EAAI3uT,EAAGC,EAAGkkC,GACjB,OAAOnkC,EAAIC,EAAID,EAAImkC,EAAIlkC,EAAIkkC,CAC7B,CACA,SAAS2/H,EAAM9jK,GACb,OAAO0uT,EAAK1uT,EAAG,GAAK0uT,EAAK1uT,EAAG,IAAM0uT,EAAK1uT,EAAG,GAC5C,CACA,SAAS4uT,EAAW5uT,GAClB,OAAO0uT,EAAK1uT,EAAG,GAAK0uT,EAAK1uT,EAAG,IAAM0uT,EAAK1uT,EAAG,GAC5C,CACA,SAAS6uT,EAAY7uT,GACnB,OAAO0uT,EAAK1uT,EAAG,GAAK0uT,EAAK1uT,EAAG,IAAMA,IAAM,CAC1C,CAIA,MAAMyc,EAAI,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAuE/vB,OAtEA,SAAczS,EAAMiB,EAAQza,GAC1B,IAAI68T,EAAK,WACP11S,EAAK,WACLE,EAAK,WACLy1S,EAAK,WACLwB,EAAK,WACLC,EAAK,WACLC,EAAK,UACLC,EAAK,WACP,MAAM1B,EAA8C,GAA/BlzT,KAAK0Q,MAAMva,EAAS,GAAK,IACxCg9T,EAAS,IAAI5yT,WAAW2yT,GAC9B,IAAIh8T,EAAG8mB,EACP,IAAK9mB,EAAI,EAAGA,EAAIf,IAAUe,EACxBi8T,EAAOj8T,GAAKyY,EAAKiB,KAEnBuiT,EAAOj8T,KAAO,IACd,MAAMiL,EAAI+wT,EAAe,EACzB,KAAOh8T,EAAIiL,GACTgxT,EAAOj8T,KAAO,EAEhBi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAOf,IAAW,GAAK,IAC9Bg9T,EAAOj8T,KAAOf,GAAU,GAAK,IAC7Bg9T,EAAOj8T,KAAOf,GAAU,GAAK,IAC7Bg9T,EAAOj8T,KAAOf,GAAU,EAAI,IAC5Bg9T,EAAOj8T,KAAOf,GAAU,EAAI,IAC5B,MAAMwzL,EAAI,IAAI5oL,YAAY,IAC1B,IAAK7J,EAAI,EAAGA,EAAIg8T,GAAe,CAC7B,IAAKl1S,EAAI,EAAGA,EAAI,KAAMA,EACpB2rK,EAAE3rK,GAAKm1S,EAAOj8T,IAAM,GAAKi8T,EAAOj8T,EAAI,IAAM,GAAKi8T,EAAOj8T,EAAI,IAAM,EAAIi8T,EAAOj8T,EAAI,GAC/EA,GAAK,EAEP,IAAK8mB,EAAI,GAAIA,EAAI,KAAMA,EACrB2rK,EAAE3rK,GAAkF,GAtCjFq2S,EADiB1uT,EAuCIgkL,EAAE3rK,EAAI,GAtCnB,IAAMq2S,EAAK1uT,EAAG,IAAMA,IAAM,IAsCDgkL,EAAE3rK,EAAI,GAAKw2S,EAAY7qI,EAAE3rK,EAAI,KAAO2rK,EAAE3rK,EAAI,IAEhF,IAQE88M,EACA9iM,EATEj0B,EAAIivT,EACNtwT,EAAI4a,EACJtZ,EAAIwZ,EACJtkB,EAAI+5T,EACJv9T,EAAI++T,EACJ57Q,EAAI67Q,EACJjyT,EAAIkyT,EACJxrR,EAAIyrR,EAGN,IAAK52S,EAAI,EAAGA,EAAI,KAAMA,EACpB88M,EAAK3xL,EAAIorR,EAAW7+T,GAAKsb,EAAGtb,EAAGmjD,EAAGp2C,GAAK2f,EAAEpE,GAAK2rK,EAAE3rK,GAChDga,EAAKyxI,EAAM1lK,GAAKuwT,EAAIvwT,EAAGrB,EAAGsB,GAC1BmlC,EAAI1mC,EACJA,EAAIo2C,EACJA,EAAInjD,EACJA,EAAIwD,EAAI4hO,EAAK,EACb5hO,EAAI8K,EACJA,EAAItB,EACJA,EAAIqB,EACJA,EAAI+2N,EAAK9iM,EAAK,EAEhBg7R,EAAKA,EAAKjvT,EAAI,EACduZ,EAAKA,EAAK5a,EAAI,EACd8a,EAAKA,EAAKxZ,EAAI,EACdivT,EAAKA,EAAK/5T,EAAI,EACdu7T,EAAKA,EAAK/+T,EAAI,EACdg/T,EAAKA,EAAK77Q,EAAI,EACd87Q,EAAKA,EAAKlyT,EAAI,EACdmyT,EAAKA,EAAKzrR,EAAI,CAChB,CAvEF,IAA0BxjC,EAwExB,OAAO,IAAIpF,WAAW,CAACyyT,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAW,IAALA,EAAW11S,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAW,IAALA,EAAWE,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAW,IAALA,EAAWy1S,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAW,IAALA,EAAWwB,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAW,IAALA,EAAWC,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAW,IAALA,EAAWC,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAW,IAALA,EAAWC,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAW,IAALA,GACtf,CAEF,CA9FwB,GA+FlBC,GAAkB,WACtB,SAAS7jT,EAAG4S,EAAQje,EAAGC,EAAGkkC,EAAGliB,GAC3BhE,EAAOyvB,OAAO1tC,GACdie,EAAO4vS,IAAI5tT,GACXgiB,EAAIyrB,OAAO1tC,GACXiiB,EAAIosS,MACJpsS,EAAI4rS,IAAI1pR,GACRlmB,EAAO8vS,IAAI9rS,EACb,CACA,SAAS0sS,EAAI1wS,EAAQje,EAAGC,EAAGkkC,EAAGliB,GAC5BhE,EAAOyvB,OAAO1tC,GACdie,EAAO4vS,IAAI5tT,GACXgiB,EAAIyrB,OAAO1tC,GACXiiB,EAAI4rS,IAAI1pR,GACRlmB,EAAO8vS,IAAI9rS,GACXA,EAAIyrB,OAAOztC,GACXgiB,EAAI4rS,IAAI1pR,GACRlmB,EAAO8vS,IAAI9rS,EACb,CACA,SAAS6hJ,EAAM7lJ,EAAQje,EAAGiiB,GACxBhE,EAAOyvB,OAAO1tC,GACdie,EAAOmwS,YAAY,IACnBnsS,EAAIyrB,OAAO1tC,GACXiiB,EAAImsS,YAAY,IAChBnwS,EAAO8vS,IAAI9rS,GACXA,EAAIyrB,OAAO1tC,GACXiiB,EAAImsS,YAAY,IAChBnwS,EAAO8vS,IAAI9rS,EACb,CACA,SAAS2sS,EAAW3wS,EAAQje,EAAGiiB,GAC7BhE,EAAOyvB,OAAO1tC,GACdie,EAAOmwS,YAAY,IACnBnsS,EAAIyrB,OAAO1tC,GACXiiB,EAAImsS,YAAY,IAChBnwS,EAAO8vS,IAAI9rS,GACXA,EAAIyrB,OAAO1tC,GACXiiB,EAAImsS,YAAY,IAChBnwS,EAAO8vS,IAAI9rS,EACb,CACA,SAAS4sS,EAAY5wS,EAAQje,EAAGiiB,GAC9BhE,EAAOyvB,OAAO1tC,GACdie,EAAOmwS,YAAY,GACnBnsS,EAAIyrB,OAAO1tC,GACXiiB,EAAImsS,YAAY,GAChBnwS,EAAO8vS,IAAI9rS,GACXA,EAAIyrB,OAAO1tC,GACXiiB,EAAIgsS,WAAW,GACfhwS,EAAO8vS,IAAI9rS,EACb,CACA,SAASktS,EAAiBlxS,EAAQje,EAAGiiB,GACnChE,EAAOyvB,OAAO1tC,GACdie,EAAOmwS,YAAY,IACnBnsS,EAAIyrB,OAAO1tC,GACXiiB,EAAImsS,YAAY,IAChBnwS,EAAO8vS,IAAI9rS,GACXA,EAAIyrB,OAAO1tC,GACXiiB,EAAIgsS,WAAW,GACfhwS,EAAO8vS,IAAI9rS,EACb,CACA,MAAMxF,EAAI,CAAC,IAAIixS,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,WAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,UAAY,WAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,WAAa,IAAIA,GAAO,UAAY,WAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,aA+I9zF,OA9IA,SAAc1jT,EAAMiB,EAAQza,EAAQ4+T,GAAU,GAC5C,IAAI/B,EAAI11S,EAAIE,EAAIy1S,EAAIwB,EAAIC,EAAIC,EAAIC,EAC3BG,GAUH/B,EAAK,IAAIK,GAAO,WAAY,YAC5B/1S,EAAK,IAAI+1S,GAAO,WAAY,WAC5B71S,EAAK,IAAI61S,GAAO,WAAY,WAC5BJ,EAAK,IAAII,GAAO,UAAY,YAC5BoB,EAAK,IAAIpB,GAAO,WAAY,YAC5BqB,EAAK,IAAIrB,GAAO,WAAY,YAC5BsB,EAAK,IAAItB,GAAO,WAAY,YAC5BuB,EAAK,IAAIvB,GAAO,WAAY,cAhB5BL,EAAK,IAAIK,GAAO,WAAY,YAC5B/1S,EAAK,IAAI+1S,GAAO,WAAY,YAC5B71S,EAAK,IAAI61S,GAAO,WAAY,YAC5BJ,EAAK,IAAII,GAAO,WAAY,YAC5BoB,EAAK,IAAIpB,GAAO,WAAY,YAC5BqB,EAAK,IAAIrB,GAAO,WAAY,WAC5BsB,EAAK,IAAItB,GAAO,UAAY,YAC5BuB,EAAK,IAAIvB,GAAO,WAAY,YAW9B,MAAMH,EAAgD,IAAjClzT,KAAK0Q,MAAMva,EAAS,IAAM,KACzCg9T,EAAS,IAAI5yT,WAAW2yT,GAC9B,IAAIh8T,EAAG8mB,EACP,IAAK9mB,EAAI,EAAGA,EAAIf,IAAUe,EACxBi8T,EAAOj8T,GAAKyY,EAAKiB,KAEnBuiT,EAAOj8T,KAAO,IACd,MAAMiL,EAAI+wT,EAAe,GACzB,KAAOh8T,EAAIiL,GACTgxT,EAAOj8T,KAAO,EAEhBi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAO,EACdi8T,EAAOj8T,KAAOf,IAAW,GAAK,IAC9Bg9T,EAAOj8T,KAAOf,GAAU,GAAK,IAC7Bg9T,EAAOj8T,KAAOf,GAAU,GAAK,IAC7Bg9T,EAAOj8T,KAAOf,GAAU,EAAI,IAC5Bg9T,EAAOj8T,KAAOf,GAAU,EAAI,IAC5B,MAAMwzL,EAAI,IAAI3yL,MAAM,IACpB,IAAKE,EAAI,EAAGA,EAAI,GAAIA,IAClByyL,EAAEzyL,GAAK,IAAIm8T,GAAO,EAAG,GAEvB,IAAItvT,EAAI,IAAIsvT,GAAO,EAAG,GACpB3wT,EAAI,IAAI2wT,GAAO,EAAG,GAClBrvT,EAAI,IAAIqvT,GAAO,EAAG,GAChBn6T,EAAI,IAAIm6T,GAAO,EAAG,GACpB39T,EAAI,IAAI29T,GAAO,EAAG,GAClBx6Q,EAAI,IAAIw6Q,GAAO,EAAG,GAChB5wT,EAAI,IAAI4wT,GAAO,EAAG,GACpBlqR,EAAI,IAAIkqR,GAAO,EAAG,GACpB,MAAMv4F,EAAK,IAAIu4F,GAAO,EAAG,GACvBr7R,EAAK,IAAIq7R,GAAO,EAAG,GACfr0F,EAAO,IAAIq0F,GAAO,EAAG,GACzBp0F,EAAO,IAAIo0F,GAAO,EAAG,GACvB,IAAIn0F,EAwDAt7M,EAvDJ,IAAK1sB,EAAI,EAAGA,EAAIg8T,GAAe,CAC7B,IAAKl1S,EAAI,EAAGA,EAAI,KAAMA,EACpB2rK,EAAE3rK,GAAG0nC,KAAOytQ,EAAOj8T,IAAM,GAAKi8T,EAAOj8T,EAAI,IAAM,GAAKi8T,EAAOj8T,EAAI,IAAM,EAAIi8T,EAAOj8T,EAAI,GACpFyyL,EAAE3rK,GAAGynC,IAAM0tQ,EAAOj8T,EAAI,IAAM,GAAKi8T,EAAOj8T,EAAI,IAAM,GAAKi8T,EAAOj8T,EAAI,IAAM,EAAIi8T,EAAOj8T,EAAI,GACvFA,GAAK,EAEP,IAAK8mB,EAAI,GAAIA,EAAI,KAAMA,EACrBkhN,EAAOv1C,EAAE3rK,GACT82S,EAAiB51F,EAAMv1C,EAAE3rK,EAAI,GAAIihN,GACjCC,EAAK9yN,IAAIu9K,EAAE3rK,EAAI,IACfw2S,EAAYx1F,EAAMr1C,EAAE3rK,EAAI,IAAKihN,GAC7BC,EAAK9yN,IAAI4yN,GACTE,EAAK9yN,IAAIu9K,EAAE3rK,EAAI,KAUjB,IARAja,EAAEsvC,OAAO2/Q,GACTtwT,EAAE2wC,OAAO/1B,GACTtZ,EAAEqvC,OAAO71B,GACTtkB,EAAEm6C,OAAO4/Q,GACTv9T,EAAE29C,OAAOohR,GACT57Q,EAAExF,OAAOqhR,GACTjyT,EAAE4wC,OAAOshR,GACTxrR,EAAEkK,OAAOuhR,GACJ52S,EAAI,EAAGA,EAAI,KAAMA,EACpB88M,EAAGznL,OAAOlK,GACVorR,EAAWv1F,EAAMtpO,EAAGupO,GACpBnE,EAAG1uN,IAAI4yN,GACPhuN,EAAGguN,EAAMtpO,EAAGmjD,EAAGp2C,EAAGw8N,GAClBnE,EAAG1uN,IAAI4yN,GACPlE,EAAG1uN,IAAIgW,EAAEpE,IACT88M,EAAG1uN,IAAIu9K,EAAE3rK,IACTyrJ,EAAMzxI,EAAIj0B,EAAGk7N,GACbq1F,EAAIt1F,EAAMj7N,EAAGrB,EAAGsB,EAAGi7N,GACnBjnM,EAAG5rB,IAAI4yN,GACPE,EAAO/1L,EACPA,EAAI1mC,EACJA,EAAIo2C,EACJA,EAAInjD,EACJwD,EAAEkT,IAAI0uN,GACNplO,EAAIwD,EACJA,EAAI8K,EACJA,EAAItB,EACJA,EAAIqB,EACJm7N,EAAK7rL,OAAOynL,GACZoE,EAAK9yN,IAAI4rB,GACTj0B,EAAIm7N,EAEN8zF,EAAG5mT,IAAIrI,GACPuZ,EAAGlR,IAAI1J,GACP8a,EAAGpR,IAAIpI,GACPivT,EAAG7mT,IAAIlT,GACPu7T,EAAGroT,IAAI1W,GACPg/T,EAAGtoT,IAAIysC,GACP87Q,EAAGvoT,IAAI3J,GACPmyT,EAAGxoT,IAAI+8B,EACT,CAqBA,OAnBK4rR,GAWHnxS,EAAS,IAAIrjB,WAAW,IACxByyT,EAAGmB,OAAOvwS,EAAQ,GAClBtG,EAAG62S,OAAOvwS,EAAQ,GAClBpG,EAAG22S,OAAOvwS,EAAQ,IAClBqvS,EAAGkB,OAAOvwS,EAAQ,IAClB6wS,EAAGN,OAAOvwS,EAAQ,IAClB8wS,EAAGP,OAAOvwS,EAAQ,MAhBlBA,EAAS,IAAIrjB,WAAW,IACxByyT,EAAGmB,OAAOvwS,EAAQ,GAClBtG,EAAG62S,OAAOvwS,EAAQ,GAClBpG,EAAG22S,OAAOvwS,EAAQ,IAClBqvS,EAAGkB,OAAOvwS,EAAQ,IAClB6wS,EAAGN,OAAOvwS,EAAQ,IAClB8wS,EAAGP,OAAOvwS,EAAQ,IAClB+wS,EAAGR,OAAOvwS,EAAQ,IAClBgxS,EAAGT,OAAOvwS,EAAQ,KAUbA,CACT,CAEF,CA3MwB,GA+MxB,MAAMoxS,GACJ,YAAAlC,CAAanjT,GACX,OAAOA,CACT,CACA,OAAAg1P,CAAQh1P,GACN,OAAOA,CACT,EAEF,MAAMslT,GACJ,WAAAp2T,GACEjJ,KAAKs/T,GAAK,IAAI30T,WAAW,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,KACphD3K,KAAKu/T,OAAS,IAAI50T,WAAW,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,MACxhD3K,KAAKw/T,KAAO,IAAIr0T,YAAY,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,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","sources":["webpack:///./node_modules/process/browser.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./node_modules/pdfjs-dist/build/pdf.worker.mjs"],"sourcesContent":["// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_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, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 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 * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = globalThis.pdfjsWorker = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n WorkerMessageHandler: () => (/* reexport */ WorkerMessageHandler)\n});\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35,\n DRAW_STEP: 41\n};\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};\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};\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\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};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\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};\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};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\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};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\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 beginAnnotation: 80,\n endAnnotation: 81,\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 setStrokeTransparent: 92,\n setFillTransparent: 93\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\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}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {}\n return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\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}\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}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\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}\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}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get platform() {\n if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n return shadow(this, \"platform\", {\n isMac: navigator.platform.includes(\"Mac\"),\n isWindows: navigator.platform.includes(\"Win\"),\n isFirefox: typeof navigator?.userAgent === \"string\" && navigator.userAgent.includes(\"Firefox\")\n });\n }\n return shadow(this, \"platform\", {\n isMac: false,\n isWindows: false,\n isFirefox: false\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\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 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 static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\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 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 return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\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 static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n if (minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n } else {\n minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n }\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n return minMax;\n }\n}\nconst PDFStringTranslateTable = [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, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (!decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\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}\nfunction getModificationDate(date = new Date()) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\nif (typeof Promise.try !== \"function\") {\n Promise.try = function (fn, ...args) {\n return new Promise(resolve => {\n resolve(fn(...args));\n });\n };\n}\n\n;// ./src/core/primitives.js\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\nlet CmdCache = Object.create(null);\nlet NameCache = Object.create(null);\nlet RefCache = Object.create(null);\nfunction clearPrimitiveCaches() {\n CmdCache = Object.create(null);\n NameCache = Object.create(null);\n RefCache = Object.create(null);\n}\nclass Name {\n constructor(name) {\n this.name = name;\n }\n static get(name) {\n return NameCache[name] ||= new Name(name);\n }\n}\nclass Cmd {\n constructor(cmd) {\n this.cmd = cmd;\n }\n static get(cmd) {\n return CmdCache[cmd] ||= new Cmd(cmd);\n }\n}\nconst nonSerializable = function nonSerializableClosure() {\n return nonSerializable;\n};\nclass Dict {\n constructor(xref = null) {\n this._map = new Map();\n this.xref = xref;\n this.objId = null;\n this.suppressEncryption = false;\n this.__nonSerializable__ = nonSerializable;\n }\n assignXref(newXref) {\n this.xref = newXref;\n }\n get size() {\n return this._map.size;\n }\n get(key1, key2, key3) {\n let value = this._map.get(key1);\n if (value === undefined && key2 !== undefined) {\n value = this._map.get(key2);\n if (value === undefined && key3 !== undefined) {\n value = this._map.get(key3);\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetch(value, this.suppressEncryption);\n }\n return value;\n }\n async getAsync(key1, key2, key3) {\n let value = this._map.get(key1);\n if (value === undefined && key2 !== undefined) {\n value = this._map.get(key2);\n if (value === undefined && key3 !== undefined) {\n value = this._map.get(key3);\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetchAsync(value, this.suppressEncryption);\n }\n return value;\n }\n getArray(key1, key2, key3) {\n let value = this._map.get(key1);\n if (value === undefined && key2 !== undefined) {\n value = this._map.get(key2);\n if (value === undefined && key3 !== undefined) {\n value = this._map.get(key3);\n }\n }\n if (value instanceof Ref && this.xref) {\n value = this.xref.fetch(value, this.suppressEncryption);\n }\n if (Array.isArray(value)) {\n value = value.slice();\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 getRaw(key) {\n return this._map.get(key);\n }\n getKeys() {\n return [...this._map.keys()];\n }\n getRawValues() {\n return [...this._map.values()];\n }\n set(key, value) {\n this._map.set(key, value);\n }\n has(key) {\n return this._map.has(key);\n }\n *[Symbol.iterator]() {\n for (const [key, value] of this._map) {\n yield [key, value instanceof Ref && this.xref ? this.xref.fetch(value, this.suppressEncryption) : value];\n }\n }\n static get empty() {\n const emptyDict = new Dict(null);\n emptyDict.set = (key, value) => {\n unreachable(\"Should not call `set` on the empty dictionary.\");\n };\n return shadow(this, \"empty\", emptyDict);\n }\n static merge({\n xref,\n dictArray,\n mergeSubDicts = false\n }) {\n const mergedDict = new Dict(xref),\n properties = new Map();\n for (const dict of dictArray) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n for (const [key, value] of 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 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.set(name, values[0]);\n continue;\n }\n const subDict = new Dict(xref);\n for (const dict of values) {\n for (const [key, value] of dict._map) {\n if (!subDict._map.has(key)) {\n subDict._map.set(key, value);\n }\n }\n }\n if (subDict.size > 0) {\n mergedDict._map.set(name, subDict);\n }\n }\n properties.clear();\n return mergedDict.size > 0 ? mergedDict : Dict.empty;\n }\n clone() {\n const dict = new Dict(this.xref);\n for (const key of this.getKeys()) {\n dict.set(key, this.getRaw(key));\n }\n return dict;\n }\n delete(key) {\n delete this._map[key];\n }\n}\nclass Ref {\n constructor(num, gen) {\n this.num = num;\n this.gen = gen;\n }\n toString() {\n if (this.gen === 0) {\n return `${this.num}R`;\n }\n return `${this.num}R${this.gen}`;\n }\n static fromString(str) {\n const ref = RefCache[str];\n if (ref) {\n return ref;\n }\n const m = /^(\\d+)R(\\d*)$/.exec(str);\n if (!m || m[1] === \"0\") {\n return null;\n }\n return RefCache[str] = new Ref(parseInt(m[1]), !m[2] ? 0 : parseInt(m[2]));\n }\n static get(num, gen) {\n const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n return RefCache[key] ||= new Ref(num, gen);\n }\n}\nclass RefSet {\n constructor(parent = null) {\n this._set = new Set(parent?._set);\n }\n has(ref) {\n return this._set.has(ref.toString());\n }\n put(ref) {\n this._set.add(ref.toString());\n }\n remove(ref) {\n this._set.delete(ref.toString());\n }\n [Symbol.iterator]() {\n return this._set.values();\n }\n clear() {\n this._set.clear();\n }\n}\nclass RefSetCache {\n constructor() {\n this._map = new Map();\n }\n get size() {\n return this._map.size;\n }\n get(ref) {\n return this._map.get(ref.toString());\n }\n has(ref) {\n return this._map.has(ref.toString());\n }\n put(ref, obj) {\n this._map.set(ref.toString(), obj);\n }\n putAlias(ref, aliasRef) {\n this._map.set(ref.toString(), this.get(aliasRef));\n }\n [Symbol.iterator]() {\n return this._map.values();\n }\n clear() {\n this._map.clear();\n }\n *values() {\n yield* this._map.values();\n }\n *items() {\n for (const [ref, value] of this._map) {\n yield [Ref.fromString(ref), value];\n }\n }\n}\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\nfunction isDict(v, type) {\n return v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type));\n}\nfunction isRefsEqual(v1, v2) {\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\n;// ./src/core/base_stream.js\n\nclass BaseStream {\n get length() {\n unreachable(\"Abstract getter `length` accessed\");\n }\n get isEmpty() {\n unreachable(\"Abstract getter `isEmpty` accessed\");\n }\n get isDataLoaded() {\n return shadow(this, \"isDataLoaded\", true);\n }\n getByte() {\n unreachable(\"Abstract method `getByte` called\");\n }\n getBytes(length) {\n unreachable(\"Abstract method `getBytes` called\");\n }\n async getImageData(length, decoderOptions) {\n return this.getBytes(length, decoderOptions);\n }\n async asyncGetBytes() {\n unreachable(\"Abstract method `asyncGetBytes` called\");\n }\n get isAsync() {\n return false;\n }\n get canAsyncDecodeImageFromBuffer() {\n return false;\n }\n async getTransferableImage() {\n return null;\n }\n peekByte() {\n const peekedByte = this.getByte();\n if (peekedByte !== -1) {\n this.pos--;\n }\n return peekedByte;\n }\n peekBytes(length) {\n const bytes = this.getBytes(length);\n this.pos -= bytes.length;\n return bytes;\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 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 getByteRange(begin, end) {\n unreachable(\"Abstract method `getByteRange` called\");\n }\n getString(length) {\n return bytesToString(this.getBytes(length));\n }\n skip(n) {\n this.pos += n || 1;\n }\n reset() {\n unreachable(\"Abstract method `reset` called\");\n }\n moveStart() {\n unreachable(\"Abstract method `moveStart` called\");\n }\n makeSubStream(start, length, dict = null) {\n unreachable(\"Abstract method `makeSubStream` called\");\n }\n getBaseStreams() {\n return null;\n }\n}\n\n;// ./src/core/core_utils.js\n\n\n\nconst PDF_VERSION_REGEXP = /^[1-9]\\.\\d$/;\nconst MAX_INT_32 = 2 ** 31 - 1;\nconst MIN_INT_32 = -(2 ** 31);\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}\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}\nclass ParserEOFException extends BaseException {\n constructor(msg) {\n super(msg, \"ParserEOFException\");\n }\n}\nclass XRefEntryException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefEntryException\");\n }\n}\nclass XRefParseException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefParseException\");\n }\n}\nfunction arrayBuffersToBytes(arr) {\n const length = arr.length;\n if (length === 0) {\n return new Uint8Array(0);\n }\n if (length === 1) {\n return new Uint8Array(arr[0]);\n }\n let dataLength = 0;\n for (let i = 0; i < length; i++) {\n dataLength += arr[i].byteLength;\n }\n const data = new Uint8Array(dataLength);\n let pos = 0;\n for (let i = 0; i < length; i++) {\n const item = new Uint8Array(arr[i]);\n data.set(item, pos);\n pos += item.byteLength;\n }\n return data;\n}\nfunction getInheritableProperty({\n dict,\n key,\n getArray = false,\n stopWhenFound = true\n}) {\n let values;\n const visited = new RefSet();\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 (values ||= []).push(value);\n }\n dict = dict.get(\"Parent\");\n }\n return values;\n}\nfunction getParentToUpdate(dict, ref, xref) {\n const visited = new RefSet();\n const firstDict = dict;\n const result = {\n dict: null,\n ref: null\n };\n while (dict instanceof Dict && !visited.has(ref)) {\n visited.put(ref);\n if (dict.has(\"T\")) {\n break;\n }\n ref = dict.getRaw(\"Parent\");\n if (!(ref instanceof Ref)) {\n return result;\n }\n dict = xref.fetch(ref);\n }\n if (dict instanceof Dict && dict !== firstDict) {\n result.dict = dict;\n result.ref = ref;\n }\n return result;\n}\nconst ROMAN_NUMBER_MAP = [\"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\", \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\", \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"];\nfunction toRomanNumerals(number, lowerCase = false) {\n assert(Number.isInteger(number) && number > 0, \"The number should be a positive integer.\");\n const roman = \"M\".repeat(number / 1000 | 0) + ROMAN_NUMBER_MAP[number % 1000 / 100 | 0] + ROMAN_NUMBER_MAP[10 + (number % 100 / 10 | 0)] + ROMAN_NUMBER_MAP[20 + number % 10];\n return lowerCase ? roman.toLowerCase() : roman;\n}\nfunction log2(x) {\n return x > 0 ? Math.ceil(Math.log2(x)) : 0;\n}\nfunction readInt8(data, offset) {\n return data[offset] << 24 >> 24;\n}\nfunction readUint16(data, offset) {\n return data[offset] << 8 | data[offset + 1];\n}\nfunction readUint32(data, offset) {\n return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;\n}\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\nfunction isBooleanArray(arr, len) {\n return Array.isArray(arr) && (len === null || arr.length === len) && arr.every(x => typeof x === \"boolean\");\n}\nfunction isNumberArray(arr, len) {\n if (Array.isArray(arr)) {\n return (len === null || arr.length === len) && arr.every(x => typeof x === \"number\");\n }\n return ArrayBuffer.isView(arr) && (arr.length === 0 || typeof arr[0] === \"number\") && (len === null || arr.length === len);\n}\nfunction lookupMatrix(arr, fallback) {\n return isNumberArray(arr, 6) ? arr : fallback;\n}\nfunction lookupRect(arr, fallback) {\n return isNumberArray(arr, 4) ? arr : fallback;\n}\nfunction lookupNormalRect(arr, fallback) {\n return isNumberArray(arr, 4) ? Util.normalizeRect(arr) : fallback;\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 {\n name: m[1],\n pos: parseInt(m[2], 10)\n };\n }\n return {\n name: component,\n 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 if (char < 0x21 || char > 0x7e || char === 0x23 || char === 0x28 || char === 0x29 || char === 0x3c || char === 0x3e || char === 0x5b || char === 0x5d || char === 0x7b || char === 0x7d || char === 0x2f || char === 0x25) {\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 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}\nfunction escapeString(str) {\n return str.replaceAll(/([()\\\\\\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}\nfunction _collectJS(entry, xref, list, parents) {\n if (!entry) {\n return;\n }\n let parent = null;\n if (entry instanceof Ref) {\n if (parents.has(entry)) {\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 &&= stringToPDFString(code).replaceAll(\"\\x00\", \"\");\n if (code) {\n list.push(code);\n }\n }\n _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n }\n if (parent) {\n parents.remove(parent);\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 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 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}\nconst XMLEntities = {\n 0x3c: \"<\",\n 0x3e: \">\",\n 0x26: \"&\",\n 0x22: \""\",\n 0x27: \"'\"\n};\nfunction* codePointIter(str) {\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n i++;\n }\n yield char;\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 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 i++;\n }\n start = i + 1;\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}\nfunction validateFontName(fontFamily, mustWarn = false) {\n const m = /^(\"|').*(\"|')$/.exec(fontFamily);\n if (m && m[1] === m[2]) {\n const re = new RegExp(`[^\\\\\\\\]${m[1]}`);\n if (re.test(fontFamily.slice(1, -1))) {\n if (mustWarn) {\n warn(`FontFamily contains unescaped ${m[1]}: ${fontFamily}.`);\n }\n return false;\n }\n } else {\n for (const ident of fontFamily.split(/[ \\t]+/)) {\n if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n if (mustWarn) {\n warn(`FontFamily contains invalid : ${fontFamily}.`);\n }\n return false;\n }\n }\n }\n return true;\n}\nfunction validateCSSFont(cssFontInfo) {\n const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n const CSS_FONT_WEIGHT_VALUES = new Set([\"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\", \"1000\", \"normal\", \"bold\", \"bolder\", \"lighter\"]);\n const {\n fontFamily,\n fontWeight,\n italicAngle\n } = cssFontInfo;\n if (!validateFontName(fontFamily, true)) {\n return false;\n }\n const weight = fontWeight ? fontWeight.toString() : \"\";\n cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight) ? weight : DEFAULT_CSS_FONT_WEIGHT;\n const angle = parseFloat(italicAngle);\n cssFontInfo.italicAngle = isNaN(angle) || angle < -90 || angle > 90 ? DEFAULT_CSS_FONT_OBLIQUE : italicAngle.toString();\n return true;\n}\nfunction recoverJsURL(str) {\n const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n const regex = new RegExp(\"^\\\\s*(\" + URL_OPEN_METHODS.join(\"|\").replaceAll(\".\", \"\\\\.\") + \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\", \"i\");\n const jsUrl = regex.exec(str);\n if (jsUrl?.[2]) {\n return {\n url: jsUrl[2],\n newWindow: jsUrl[1] === \"app.launchURL\" && jsUrl[3] === \"true\"\n };\n }\n return null;\n}\nfunction numberToString(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const roundedValue = Math.round(value * 100);\n if (roundedValue % 100 === 0) {\n return (roundedValue / 100).toString();\n }\n if (roundedValue % 10 === 0) {\n return value.toFixed(1);\n }\n return value.toFixed(2);\n}\nfunction getNewAnnotationsMap(annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const newAnnotationsByPage = new Map();\n for (const [key, value] of annotationStorage) {\n if (!key.startsWith(AnnotationEditorPrefix)) {\n continue;\n }\n let annotations = newAnnotationsByPage.get(value.pageIndex);\n if (!annotations) {\n annotations = [];\n newAnnotationsByPage.set(value.pageIndex, annotations);\n }\n annotations.push(value);\n }\n return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null;\n}\nfunction stringToAsciiOrUTF16BE(str) {\n return isAscii(str) ? str : stringToUTF16String(str, true);\n}\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\nfunction stringToUTF16HexString(str) {\n const buf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(hexNumbers[char >> 8 & 0xff], hexNumbers[char & 0xff]);\n }\n return buf.join(\"\");\n}\nfunction stringToUTF16String(str, bigEndian = false) {\n const buf = [];\n if (bigEndian) {\n buf.push(\"\\xFE\\xFF\");\n }\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff));\n }\n return buf.join(\"\");\n}\nfunction getRotationMatrix(rotation, width, height) {\n switch (rotation) {\n case 90:\n return [0, 1, -1, 0, width, 0];\n case 180:\n return [-1, 0, 0, -1, width, height];\n case 270:\n return [0, -1, 1, 0, 0, height];\n default:\n throw new Error(\"Invalid rotation\");\n }\n}\nfunction getSizeInBytes(x) {\n return Math.ceil(Math.ceil(Math.log2(1 + x)) / 8);\n}\n\n;// ./src/core/stream.js\n\n\nclass Stream extends BaseStream {\n constructor(arrayBuffer, start, length, dict) {\n super();\n this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : 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 get length() {\n return this.end - this.start;\n }\n get isEmpty() {\n return this.length === 0;\n }\n getByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.bytes[this.pos++];\n }\n getBytes(length) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n if (!length) {\n return bytes.subarray(pos, strEnd);\n }\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n this.pos = end;\n return bytes.subarray(pos, end);\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 reset() {\n this.pos = this.start;\n }\n moveStart() {\n this.start = this.pos;\n }\n makeSubStream(start, length, dict = null) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n}\nclass StringStream extends Stream {\n constructor(str) {\n super(stringToBytes(str));\n }\n}\nclass NullStream extends Stream {\n constructor() {\n super(new Uint8Array(0));\n }\n}\n\n;// ./src/core/chunked_stream.js\n\n\n\nclass ChunkedStream extends Stream {\n constructor(length, chunkSize, manager) {\n super(new Uint8Array(length), 0, length, null);\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;\n }\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 get numChunksLoaded() {\n return this._loadedChunks.size;\n }\n get isDataLoaded() {\n return this.numChunksLoaded === this.numChunks;\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 const end = begin + chunk.byteLength;\n if (end % chunkSize !== 0 && end !== this.bytes.length) {\n throw new Error(`Bad end offset: ${end}`);\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 for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n this._loadedChunks.add(curChunk);\n }\n }\n onReceiveProgressiveData(data) {\n let position = this.progressiveDataLength;\n const beginChunk = Math.floor(position / this.chunkSize);\n this.bytes.set(new Uint8Array(data), position);\n position += data.byteLength;\n this.progressiveDataLength = position;\n const endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize);\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n this._loadedChunks.add(curChunk);\n }\n }\n ensureByte(pos) {\n if (pos < this.progressiveDataLength) {\n return;\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 if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(pos, pos + 1);\n }\n this.lastSuccessfulEnsureByteChunk = chunk;\n }\n ensureRange(begin, end) {\n if (begin >= end) {\n return;\n }\n if (end <= this.progressiveDataLength) {\n return;\n }\n const beginChunk = Math.floor(begin / this.chunkSize);\n if (beginChunk > this.numChunks) {\n return;\n }\n const endChunk = Math.min(Math.floor((end - 1) / this.chunkSize) + 1, this.numChunks);\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(begin, end);\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;\n if (!this._loadedChunks.has(chunk)) {\n return chunk;\n }\n }\n return null;\n }\n hasChunk(chunk) {\n return this._loadedChunks.has(chunk);\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 getBytes(length) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n if (!length) {\n if (strEnd > this.progressiveDataLength) {\n this.ensureRange(pos, strEnd);\n }\n return bytes.subarray(pos, strEnd);\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 this.pos = end;\n return bytes.subarray(pos, end);\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 makeSubStream(start, length, dict = null) {\n if (length) {\n if (start + length > this.progressiveDataLength) {\n this.ensureRange(start, start + length);\n }\n } else if (start >= this.progressiveDataLength) {\n this.ensureByte(start);\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 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 getBaseStreams() {\n return [this];\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 this.currRequestId = 0;\n this._chunksNeededByRequest = new Map();\n this._requestsByChunk = new Map();\n this._promisesByRequest = new Map();\n this.progressiveDataLength = 0;\n this.aborted = false;\n this._loadedStreamCapability = Promise.withResolvers();\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 let chunks = [],\n loaded = 0;\n return new Promise((resolve, reject) => {\n const readChunk = ({\n value,\n done\n }) => {\n try {\n if (done) {\n const chunkData = arrayBuffersToBytes(chunks);\n chunks = null;\n resolve(chunkData);\n return;\n }\n loaded += value.byteLength;\n if (rangeReader.isStreamingSupported) {\n this.onProgress({\n loaded\n });\n }\n chunks.push(value);\n rangeReader.read().then(readChunk, reject);\n } catch (e) {\n reject(e);\n }\n };\n rangeReader.read().then(readChunk, reject);\n }).then(data => {\n if (this.aborted) {\n return;\n }\n this.onReceiveData({\n chunk: data,\n begin\n });\n });\n }\n requestAllChunks(noFetch = false) {\n if (!noFetch) {\n const missingChunks = this.stream.getMissingChunks();\n this._requestChunks(missingChunks);\n }\n return this._loadedStreamCapability.promise;\n }\n _requestChunks(chunks) {\n const requestId = this.currRequestId++;\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 if (chunksNeeded.size === 0) {\n return Promise.resolve();\n }\n const capability = Promise.withResolvers();\n this._promisesByRequest.set(requestId, capability);\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 chunksToRequest.push(chunk);\n }\n requestIds.push(requestId);\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(groupedChunk.endChunk * this.chunkSize, this.length);\n this.sendRequest(begin, end).catch(capability.reject);\n }\n }\n return capability.promise.catch(reason => {\n if (this.aborted) {\n return;\n }\n throw reason;\n });\n }\n getStream() {\n return this.stream;\n }\n requestRange(begin, end) {\n end = Math.min(end, this.length);\n const beginChunk = this.getBeginChunk(begin);\n const endChunk = this.getEndChunk(end);\n const chunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n chunks.push(chunk);\n }\n return this._requestChunks(chunks);\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 chunksToRequest.sort(function (a, b) {\n return a - b;\n });\n return this._requestChunks(chunksToRequest);\n }\n groupChunks(chunks) {\n const groupedChunks = [];\n let beginChunk = -1;\n let prevChunk = -1;\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 if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n groupedChunks.push({\n beginChunk,\n endChunk: prevChunk + 1\n });\n beginChunk = chunk;\n }\n if (i + 1 === chunks.length) {\n groupedChunks.push({\n beginChunk,\n endChunk: chunk + 1\n });\n }\n prevChunk = chunk;\n }\n return groupedChunks;\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 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 const beginChunk = Math.floor(begin / this.chunkSize);\n const endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize);\n if (isProgressive) {\n this.stream.onReceiveProgressiveData(chunk);\n this.progressiveDataLength = end;\n } else {\n this.stream.onReceiveData(begin, chunk);\n }\n if (this.stream.isDataLoaded) {\n this._loadedStreamCapability.resolve(this.stream);\n }\n const loadedRequests = [];\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n const requestIds = this._requestsByChunk.get(curChunk);\n if (!requestIds) {\n continue;\n }\n this._requestsByChunk.delete(curChunk);\n for (const requestId of requestIds) {\n const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n if (chunksNeeded.has(curChunk)) {\n chunksNeeded.delete(curChunk);\n }\n if (chunksNeeded.size > 0) {\n continue;\n }\n loadedRequests.push(requestId);\n }\n }\n if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n let nextEmptyChunk;\n if (this.stream.numChunksLoaded === 1) {\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 for (const requestId of loadedRequests) {\n const capability = this._promisesByRequest.get(requestId);\n this._promisesByRequest.delete(requestId);\n capability.resolve();\n }\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize,\n total: this.length\n });\n }\n onError(err) {\n this._loadedStreamCapability.reject(err);\n }\n getBeginChunk(begin) {\n return Math.floor(begin / this.chunkSize);\n }\n getEndChunk(end) {\n return Math.floor((end - 1) / this.chunkSize) + 1;\n }\n abort(reason) {\n this.aborted = true;\n this.pdfNetworkStream?.cancelAllRequests(reason);\n for (const capability of this._promisesByRequest.values()) {\n capability.reject(reason);\n }\n }\n}\n\n;// ./src/core/colorspace.js\n\n\n\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 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}\nfunction resizeRgbaImage(src, dest, w1, h1, w2, h2, alpha01) {\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0;\n const xScaled = new Uint16Array(w2);\n if (alpha01 === 1) {\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n const src32 = new Uint32Array(src.buffer);\n const dest32 = new Uint32Array(dest.buffer);\n const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n for (let i = 0; i < h2; i++) {\n const buf = src32.subarray(Math.floor(i * yRatio) * w1);\n for (let j = 0; j < w2; j++) {\n dest32[newIndex++] |= buf[xScaled[j]] & rgbMask;\n }\n }\n } else {\n const COMPONENTS = 4;\n const w1Scanline = w1 * COMPONENTS;\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 buf = src.subarray(Math.floor(i * yRatio) * w1Scanline);\n for (let j = 0; j < w2; j++) {\n const oldIndex = xScaled[j];\n dest[newIndex++] = buf[oldIndex];\n dest[newIndex++] = buf[oldIndex + 1];\n dest[newIndex++] = buf[oldIndex + 2];\n }\n }\n }\n}\nfunction copyRgbaImage(src, dest, alpha01) {\n if (alpha01 === 1) {\n const src32 = new Uint32Array(src.buffer);\n const dest32 = new Uint32Array(dest.buffer);\n const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n for (let i = 0, ii = src32.length; i < ii; i++) {\n dest32[i] |= src32[i] & rgbMask;\n }\n } else {\n let j = 0;\n for (let i = 0, ii = src.length; i < ii; i += 4) {\n dest[j++] = src[i];\n dest[j++] = src[i + 1];\n dest[j++] = src[i + 2];\n }\n }\n}\nclass ColorSpace {\n constructor(name, numComps) {\n this.name = name;\n this.numComps = numComps;\n }\n getRgb(src, srcOffset) {\n const rgb = new Uint8ClampedArray(3);\n this.getRgbItem(src, srcOffset, rgb, 0);\n return rgb;\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n unreachable(\"Should not call ColorSpace.getRgbItem\");\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n }\n getOutputLength(inputLength, alpha01) {\n unreachable(\"Should not call ColorSpace.getOutputLength\");\n }\n isPassthrough(bits) {\n return false;\n }\n isDefaultDecode(decodeMap, bpc) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n }\n fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n const count = originalWidth * originalHeight;\n let rgbBuf = null;\n const numComponentColors = 1 << bpc;\n const needsResizing = originalHeight !== height || originalWidth !== width;\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (this.numComps === 1 && count > numComponentColors && this.name !== \"DeviceGray\" && this.name !== \"DeviceRGB\") {\n const allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : 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(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);\n if (!needsResizing) {\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 if (!needsResizing) {\n this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\n } else {\n rgbBuf = new Uint8ClampedArray(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);\n }\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);\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 get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", true);\n }\n static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n if (!localColorSpaceCache) {\n throw new Error('ColorSpace._cache - expected \"localColorSpaceCache\" argument.');\n }\n if (!parsedColorSpace) {\n throw new Error('ColorSpace._cache - expected \"parsedColorSpace\" argument.');\n }\n let csName, csRef;\n if (cacheKey instanceof Ref) {\n csRef = cacheKey;\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 static getCached(cacheKey, xref, localColorSpaceCache) {\n if (!localColorSpaceCache) {\n throw new Error('ColorSpace.getCached - expected \"localColorSpaceCache\" argument.');\n }\n if (cacheKey instanceof Ref) {\n const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n if (localColorSpace) {\n return localColorSpace;\n }\n try {\n cacheKey = xref.fetch(cacheKey);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\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 static async parseAsync({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache\n }) {\n const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n return parsedColorSpace;\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(cs, xref, resources, pdfFunctionFactory);\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n return parsedColorSpace;\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 \"DeviceRGBA\":\n return this.singletons.rgba;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"Pattern\":\n return new PatternCS(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(resourcesCS, xref, resources, pdfFunctionFactory);\n }\n cs = resourcesCS;\n break;\n }\n }\n }\n warn(`Unrecognized ColorSpace: ${cs.name}`);\n return this.singletons.gray;\n }\n }\n if (Array.isArray(cs)) {\n const mode = xref.fetchIfRef(cs[0]).name;\n let params, numComps, baseCS, whitePoint, blackPoint, gamma;\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 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 = Math.max(0, Math.min(xref.fetchIfRef(cs[2]), 255));\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 warn(`Unimplemented ColorSpace object: ${mode}`);\n return this.singletons.gray;\n }\n }\n warn(`Unrecognized ColorSpace object: ${cs}`);\n return this.singletons.gray;\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 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 rgba() {\n return shadow(this, \"rgba\", new DeviceRgbaCS());\n },\n get cmyk() {\n return shadow(this, \"cmyk\", new DeviceCmykCS());\n }\n });\n }\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 getRgbItem(src, srcOffset, dest, destOffset) {\n const tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\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 = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n let pos = isPassthrough ? destOffset : 0;\n const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);\n const numComps = this.numComps;\n const scaled = new Float32Array(numComps);\n const tinted = new Float32Array(baseNumComps);\n let i, j;\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 if (!isPassthrough) {\n base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n }\n }\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01);\n }\n}\nclass PatternCS extends ColorSpace {\n constructor(baseCS) {\n super(\"Pattern\", null);\n this.base = baseCS;\n }\n isDefaultDecode(decodeMap, bpc) {\n unreachable(\"Should not call PatternCS.isDefaultDecode\");\n }\n}\nclass IndexedCS extends ColorSpace {\n constructor(base, highVal, lookup) {\n super(\"Indexed\", 1);\n this.base = base;\n const length = base.numComps * (highVal + 1);\n this.lookup = new Uint8Array(length);\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 getRgbItem(src, srcOffset, dest, destOffset) {\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 getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const base = this.base;\n const numComps = base.numComps;\n const outputDelta = base.getOutputLength(numComps, alpha01);\n const lookup = this.lookup;\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 getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\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}\nclass DeviceGrayCS extends ColorSpace {\n constructor() {\n super(\"DeviceGray\", 1);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n const c = src[srcOffset] * 255;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\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 getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n}\nclass DeviceRgbCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGB\", 3);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n dest[destOffset] = src[srcOffset] * 255;\n dest[destOffset + 1] = src[srcOffset + 1] * 255;\n dest[destOffset + 2] = src[srcOffset + 2] * 255;\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\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 getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01) / 3 | 0;\n }\n isPassthrough(bits) {\n return bits === 8;\n }\n}\nclass DeviceRgbaCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGBA\", 4);\n }\n getOutputLength(inputLength, _alpha01) {\n return inputLength * 4;\n }\n isPassthrough(bits) {\n return bits === 8;\n }\n fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n if (originalHeight !== height || originalWidth !== width) {\n resizeRgbaImage(comps, dest, originalWidth, originalHeight, width, height, alpha01);\n } else {\n copyRgbaImage(comps, dest, alpha01);\n }\n }\n}\nclass DeviceCmykCS extends ColorSpace {\n constructor() {\n super(\"DeviceCMYK\", 4);\n }\n #toRgb(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 dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);\n dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);\n dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n this.#toRgb(src, srcOffset, 1, dest, destOffset);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; i++) {\n this.#toRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n }\n getOutputLength(inputLength, alpha01) {\n return inputLength / 4 * (3 + alpha01) | 0;\n }\n}\nclass CalGrayCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma) {\n super(\"CalGray\", 1);\n if (!whitePoint) {\n throw new FormatError(\"WhitePoint missing - required for color space CalGray\");\n }\n [this.XW, this.YW, this.ZW] = whitePoint;\n [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n this.G = gamma || 1;\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);\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 if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n warn(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only default values are supported.`);\n }\n if (this.G < 1) {\n info(`Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`);\n this.G = 1;\n }\n }\n #toRgb(src, srcOffset, dest, destOffset, scale) {\n const A = src[srcOffset] * scale;\n const AG = A ** this.G;\n const L = this.YW * AG;\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 getRgbItem(src, srcOffset, dest, destOffset) {\n this.#toRgb(src, srcOffset, dest, destOffset, 1);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; ++i) {\n this.#toRgb(src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n }\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n}\nclass CalRGBCS extends ColorSpace {\n static #BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]);\n static #BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);\n static #SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);\n static #FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n static #tempNormalizeMatrix = new Float32Array(3);\n static #tempConvertMatrix1 = new Float32Array(3);\n static #tempConvertMatrix2 = new Float32Array(3);\n static #DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n constructor(whitePoint, blackPoint, gamma, matrix) {\n super(\"CalRGB\", 3);\n if (!whitePoint) {\n throw new FormatError(\"WhitePoint missing - required for color space CalRGB\");\n }\n const [XW, YW, ZW] = this.whitePoint = whitePoint;\n const [XB, YB, ZB] = this.blackPoint = blackPoint || new Float32Array(3);\n [this.GR, this.GG, this.GB] = gamma || new Float32Array([1, 1, 1]);\n [this.MXA, this.MYA, this.MZA, this.MXB, this.MYB, this.MZB, this.MXC, this.MYC, this.MZC] = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);\n }\n if (XB < 0 || YB < 0 || ZB < 0) {\n info(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + \"falling back to default.\");\n this.blackPoint = new Float32Array(3);\n }\n if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n info(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling back to default.`);\n this.GR = this.GG = this.GB = 1;\n }\n }\n #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 #toFlat(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 #toD65(sourceWhitePoint, LMS, result) {\n const D65X = 0.95047;\n const D65Y = 1;\n const D65Z = 1.08883;\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 #sRGBTransferFunction(color) {\n if (color <= 0.0031308) {\n return this.#adjustToRange(0, 1, 12.92 * color);\n }\n if (color >= 0.99554525) {\n return 1;\n }\n return this.#adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n }\n #adjustToRange(min, max, value) {\n return Math.max(min, Math.min(max, value));\n }\n #decodeL(L) {\n if (L < 0) {\n return -this.#decodeL(-L);\n }\n if (L > 8.0) {\n return ((L + 16) / 116) ** 3;\n }\n return L * CalRGBCS.#DECODE_L_CONSTANT;\n }\n #compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n const zeroDecodeL = this.#decodeL(0);\n const X_DST = zeroDecodeL;\n const X_SRC = this.#decodeL(sourceBlackPoint[0]);\n const Y_DST = zeroDecodeL;\n const Y_SRC = this.#decodeL(sourceBlackPoint[1]);\n const Z_DST = zeroDecodeL;\n const Z_SRC = this.#decodeL(sourceBlackPoint[2]);\n const X_Scale = (1 - X_DST) / (1 - X_SRC);\n const X_Offset = 1 - X_Scale;\n const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n const Y_Offset = 1 - Y_Scale;\n const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n const Z_Offset = 1 - Z_Scale;\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 #normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\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 const LMS = result;\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n const LMS_Flat = CalRGBCS.#tempNormalizeMatrix;\n this.#toFlat(sourceWhitePoint, LMS, LMS_Flat);\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n }\n #normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n const LMS = result;\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n const LMS_D65 = CalRGBCS.#tempNormalizeMatrix;\n this.#toD65(sourceWhitePoint, LMS, LMS_D65);\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n }\n #toRgb(src, srcOffset, dest, destOffset, scale) {\n const A = this.#adjustToRange(0, 1, src[srcOffset] * scale);\n const B = this.#adjustToRange(0, 1, src[srcOffset + 1] * scale);\n const C = this.#adjustToRange(0, 1, src[srcOffset + 2] * scale);\n const AGR = A === 1 ? 1 : A ** this.GR;\n const BGG = B === 1 ? 1 : B ** this.GG;\n const CGB = C === 1 ? 1 : C ** this.GB;\n const X = this.MXA * AGR + this.MXB * BGG + this.MXC * CGB;\n const Y = this.MYA * AGR + this.MYB * BGG + this.MYC * CGB;\n const Z = this.MZA * AGR + this.MZB * BGG + this.MZC * CGB;\n const XYZ = CalRGBCS.#tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n const XYZ_Flat = CalRGBCS.#tempConvertMatrix2;\n this.#normalizeWhitePointToFlat(this.whitePoint, XYZ, XYZ_Flat);\n const XYZ_Black = CalRGBCS.#tempConvertMatrix1;\n this.#compensateBlackPoint(this.blackPoint, XYZ_Flat, XYZ_Black);\n const XYZ_D65 = CalRGBCS.#tempConvertMatrix2;\n this.#normalizeWhitePointToD65(CalRGBCS.#FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n const SRGB = CalRGBCS.#tempConvertMatrix1;\n this.#matrixProduct(CalRGBCS.#SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n dest[destOffset] = this.#sRGBTransferFunction(SRGB[0]) * 255;\n dest[destOffset + 1] = this.#sRGBTransferFunction(SRGB[1]) * 255;\n dest[destOffset + 2] = this.#sRGBTransferFunction(SRGB[2]) * 255;\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n this.#toRgb(src, srcOffset, dest, destOffset, 1);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; ++i) {\n this.#toRgb(src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01) / 3 | 0;\n }\n}\nclass LabCS extends ColorSpace {\n constructor(whitePoint, blackPoint, range) {\n super(\"Lab\", 3);\n if (!whitePoint) {\n throw new FormatError(\"WhitePoint missing - required for color space Lab\");\n }\n [this.XW, this.YW, this.ZW] = whitePoint;\n [this.amin, this.amax, this.bmin, this.bmax] = range || [-100, 100, -100, 100];\n [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\"Invalid WhitePoint components, no fallback available\");\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 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 #fn_g(x) {\n return x >= 6 / 29 ? x ** 3 : 108 / 841 * (x - 4 / 29);\n }\n #decode(value, high1, low2, high2) {\n return low2 + value * (high2 - low2) / high1;\n }\n #toRgb(src, srcOffset, maxVal, dest, destOffset) {\n let Ls = src[srcOffset];\n let as = src[srcOffset + 1];\n let bs = src[srcOffset + 2];\n if (maxVal !== false) {\n Ls = this.#decode(Ls, maxVal, 0, 100);\n as = this.#decode(as, maxVal, this.amin, this.amax);\n bs = this.#decode(bs, maxVal, this.bmin, this.bmax);\n }\n if (as > this.amax) {\n as = this.amax;\n } else if (as < this.amin) {\n as = this.amin;\n }\n if (bs > this.bmax) {\n bs = this.bmax;\n } else if (bs < this.bmin) {\n bs = this.bmin;\n }\n const M = (Ls + 16) / 116;\n const L = M + as / 500;\n const N = M - bs / 200;\n const X = this.XW * this.#fn_g(L);\n const Y = this.YW * this.#fn_g(M);\n const Z = this.ZW * this.#fn_g(N);\n let r, g, b;\n if (this.ZW < 1) {\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 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 dest[destOffset] = Math.sqrt(r) * 255;\n dest[destOffset + 1] = Math.sqrt(g) * 255;\n dest[destOffset + 2] = Math.sqrt(b) * 255;\n }\n getRgbItem(src, srcOffset, dest, destOffset) {\n this.#toRgb(src, srcOffset, false, dest, destOffset);\n }\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n const maxVal = (1 << bits) - 1;\n for (let i = 0; i < count; i++) {\n this.#toRgb(src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01) / 3 | 0;\n }\n isDefaultDecode(decodeMap, bpc) {\n return true;\n }\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", false);\n }\n}\n\n;// ./src/core/binary_cmap.js\n\nfunction 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}\nfunction hexToStr(a, size) {\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(...a.subarray(0, size + 1));\n}\nfunction 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}\nfunction 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}\nconst MAX_NUM_SIZE = 16;\nconst MAX_ENCODED_NUM_SIZE = 19;\nclass 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 readByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.buffer[this.pos++];\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 readSigned() {\n const n = this.readNumber();\n return n & 1 ? ~(n >>> 1) : n >>> 1;\n }\n readHex(num, size) {\n num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n this.pos += size + 1;\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 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 readString() {\n const len = this.readNumber(),\n buf = new Array(len);\n for (let i = 0; i < len; i++) {\n buf[i] = this.readNumber();\n }\n return String.fromCharCode(...buf);\n }\n}\nclass BinaryCMapReader {\n async process(data, cMap, extend) {\n const stream = new BinaryCMapStream(data);\n const header = stream.readByte();\n cMap.vertical = !!(header & 1);\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 let b;\n while ((b = stream.readByte()) >= 0) {\n const type = b >> 5;\n if (type === 7) {\n switch (b & 0x1f) {\n case 0:\n stream.readString();\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 if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n }\n const ucs2DataSize = 1;\n const subitemsCount = stream.readNumber();\n switch (type) {\n case 0:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\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(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n }\n break;\n case 1:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber();\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();\n }\n break;\n case 2:\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:\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\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(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n }\n break;\n case 4:\n stream.readHex(char, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\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(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n }\n break;\n case 5:\n stream.readHex(start, ucs2DataSize);\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\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(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n }\n break;\n default:\n throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n }\n }\n if (useCMap) {\n return extend(useCMap);\n }\n return cMap;\n }\n}\n\n;// ./src/core/decode_stream.js\n\n\nconst emptyBuffer = new Uint8Array(0);\nclass DecodeStream extends BaseStream {\n constructor(maybeMinBufferLength) {\n super();\n this._rawMinBufferLength = maybeMinBufferLength || 0;\n this.pos = 0;\n this.bufferLength = 0;\n this.eof = false;\n this.buffer = emptyBuffer;\n this.minBufferLength = 512;\n if (maybeMinBufferLength) {\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\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 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 getBytes(length, decoderOptions = null) {\n const pos = this.pos;\n let end;\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n while (!this.eof && this.bufferLength < end) {\n this.readBlock(decoderOptions);\n }\n const bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n } else {\n while (!this.eof) {\n this.readBlock(decoderOptions);\n }\n end = this.bufferLength;\n }\n this.pos = end;\n return this.buffer.subarray(pos, end);\n }\n async getImageData(length, decoderOptions = null) {\n if (!this.canAsyncDecodeImageFromBuffer) {\n return this.getBytes(length, decoderOptions);\n }\n const data = await this.stream.asyncGetBytes();\n return this.decodeImage(data, decoderOptions);\n }\n reset() {\n this.pos = 0;\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 getBaseStreams() {\n return this.str ? this.str.getBaseStreams() : null;\n }\n}\nclass StreamsSequenceStream extends DecodeStream {\n constructor(streams, onError = null) {\n streams = streams.filter(s => s instanceof BaseStream);\n let maybeLength = 0;\n for (const stream of streams) {\n maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length;\n }\n super(maybeLength);\n this.streams = streams;\n this._onError = onError;\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?.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 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\n;// ./src/core/ascii_85_stream.js\n\n\nclass Ascii85Stream extends DecodeStream {\n constructor(str, maybeLength) {\n if (maybeLength) {\n maybeLength *= 0.8;\n }\n super(maybeLength);\n this.str = str;\n this.dict = str.dict;\n this.input = new Uint8Array(5);\n }\n readBlock() {\n const TILDA_CHAR = 0x7e;\n const Z_LOWER_CHAR = 0x7a;\n const EOF = -1;\n const str = this.str;\n let c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n const bufferLength = this.bufferLength;\n let buffer, i;\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 input[i] = c;\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\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 for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n }\n}\n\n;// ./src/core/ascii_hex_stream.js\n\nclass AsciiHexStream extends DecodeStream {\n constructor(str, maybeLength) {\n if (maybeLength) {\n maybeLength *= 0.5;\n }\n super(maybeLength);\n this.str = str;\n this.dict = str.dict;\n this.firstDigit = -1;\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 const maxDecodeLength = bytes.length + 1 >> 1;\n const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n let bufferLength = this.bufferLength;\n let firstDigit = this.firstDigit;\n for (const ch of bytes) {\n let digit;\n if (ch >= 0x30 && ch <= 0x39) {\n digit = ch & 0x0f;\n } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n digit = (ch & 0x0f) + 9;\n } else if (ch === 0x3e) {\n this.eof = true;\n break;\n } else {\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 buffer[bufferLength++] = firstDigit << 4;\n firstDigit = -1;\n }\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n }\n}\n\n;// ./src/core/ccitt.js\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;\nconst twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]];\nconst whiteTable1 = [[-1, -1], [12, ccittEOL], [-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], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]];\nconst whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]];\nconst blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-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], [-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], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]];\nconst blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]];\nconst blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]];\nclass CCITTFaxDecoder {\n constructor(source, options = {}) {\n if (typeof source?.next !== \"function\") {\n throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n }\n this.source = source;\n this.eof = false;\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 this.eoblock = options.EndOfBlock ?? true;\n this.black = options.BlackIs1 || false;\n this.codingLine = new Uint32Array(this.columns + 1);\n this.refLine = new Uint32Array(this.columns + 2);\n this.codingLine[0] = this.columns;\n this.codingPos = 0;\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 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 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 let refPos, blackPixels, bits, i;\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 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 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(codingLine[this.codingPos] + code2, blackPixels ^ 1);\n }\n while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 let gotEOL = false;\n if (this.byteAlign) {\n this.inputBits &= ~7;\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 if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\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 this.outputBits = codingLine[0] > 0 ? codingLine[this.codingPos = 0] : codingLine[this.codingPos = 1];\n this.row++;\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 = 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('Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.');\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 = 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 _addPixels(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\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 codingLine[codingPos] = a1;\n }\n this.codingPos = codingPos;\n }\n _addPixelsNeg(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\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 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 this.codingPos = codingPos;\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 _getTwoDimCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(7);\n p = twoDimTable[code];\n if (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 _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 p = code >> 5 === 0 ? whiteTable1[code] : whiteTable2[code >> 3];\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 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 _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 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 result = this._findTableCode(7, 12, blackTable2, 64);\n if (result[0]) {\n return result[1];\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 _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 _eatBits(n) {\n if ((this.inputBits -= n) < 0) {\n this.inputBits = 0;\n }\n }\n}\n\n;// ./src/core/ccitt_stream.js\n\n\n\nclass CCITTFaxStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n this.str = str;\n this.dict = str.dict;\n if (!(params instanceof Dict)) {\n params = Dict.empty;\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 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\n;// ./src/core/flate_stream.js\n\n\n\nconst codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\nconst lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]);\nconst distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]);\nconst fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9];\nconst fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5];\nclass FlateStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n this.str = str;\n this.dict = str.dict;\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(`Unknown compression method in flate stream: ${cmf}, ${flg}`);\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 this.codeSize = 0;\n this.codeBuf = 0;\n }\n async getImageData(length, _decoderOptions) {\n const data = await this.asyncGetBytes();\n return data?.subarray(0, length) || this.getBytes(length);\n }\n async asyncGetBytes() {\n this.str.reset();\n const bytes = this.str.getBytes();\n try {\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n const chunks = [];\n let totalLength = 0;\n for await (const chunk of readable) {\n chunks.push(chunk);\n totalLength += chunk.byteLength;\n }\n const data = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n data.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return data;\n } catch {\n this.str = new Stream(bytes, 2, bytes.length, this.str.dict);\n this.reset();\n return null;\n }\n }\n get isAsync() {\n return true;\n }\n getBits(bits) {\n const str = this.str;\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\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 return b;\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 let b;\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\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 generateHuffmanTable(lengths) {\n const n = lengths.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 const size = 1 << maxLen;\n const codes = new Int32Array(size);\n for (let len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {\n for (let val = 0; val < n; ++val) {\n if (lengths[val] === len) {\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 for (i = code2; i < size; i += skip) {\n codes[i] = len << 16 | val;\n }\n ++code;\n }\n }\n }\n return [codes, maxLen];\n }\n #endsStreamOnError(err) {\n info(err);\n this.eof = true;\n }\n readBlock() {\n let buffer, hdr, len;\n const str = this.str;\n try {\n hdr = this.getBits(3);\n } catch (ex) {\n this.#endsStreamOnError(ex.message);\n return;\n }\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n if (hdr === 0) {\n let b;\n if ((b = str.getByte()) === -1) {\n this.#endsStreamOnError(\"Bad block header in flate stream\");\n return;\n }\n let blockLen = b;\n if ((b = str.getByte()) === -1) {\n this.#endsStreamOnError(\"Bad block header in flate stream\");\n return;\n }\n blockLen |= b << 8;\n if ((b = str.getByte()) === -1) {\n this.#endsStreamOnError(\"Bad block header in flate stream\");\n return;\n }\n let check = b;\n if ((b = str.getByte()) === -1) {\n this.#endsStreamOnError(\"Bad block header in flate stream\");\n return;\n }\n check |= b << 8;\n if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n throw new FormatError(\"Bad uncompressed block length in flate stream\");\n }\n this.codeBuf = 0;\n this.codeSize = 0;\n const bufferLength = this.bufferLength,\n end = bufferLength + blockLen;\n buffer = this.ensureBuffer(end);\n this.bufferLength = end;\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 let litCodeTable;\n let distCodeTable;\n if (hdr === 1) {\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n } else if (hdr === 2) {\n const numLitCodes = this.getBits(5) + 257;\n const numDistCodes = this.getBits(5) + 1;\n const numCodeLenCodes = this.getBits(4) + 4;\n const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\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 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 let repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n } else {\n throw new FormatError(\"Unknown block type in flate stream\");\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\n;// ./src/core/arithmetic_decoder.js\nconst QeTable = [{\n qe: 0x5601,\n nmps: 1,\n nlps: 1,\n switchFlag: 1\n}, {\n qe: 0x3401,\n nmps: 2,\n nlps: 6,\n switchFlag: 0\n}, {\n qe: 0x1801,\n nmps: 3,\n nlps: 9,\n switchFlag: 0\n}, {\n qe: 0x0ac1,\n nmps: 4,\n nlps: 12,\n switchFlag: 0\n}, {\n qe: 0x0521,\n nmps: 5,\n nlps: 29,\n switchFlag: 0\n}, {\n qe: 0x0221,\n nmps: 38,\n nlps: 33,\n switchFlag: 0\n}, {\n qe: 0x5601,\n nmps: 7,\n nlps: 6,\n switchFlag: 1\n}, {\n qe: 0x5401,\n nmps: 8,\n nlps: 14,\n switchFlag: 0\n}, {\n qe: 0x4801,\n nmps: 9,\n nlps: 14,\n switchFlag: 0\n}, {\n qe: 0x3801,\n nmps: 10,\n nlps: 14,\n switchFlag: 0\n}, {\n qe: 0x3001,\n nmps: 11,\n nlps: 17,\n switchFlag: 0\n}, {\n qe: 0x2401,\n nmps: 12,\n nlps: 18,\n switchFlag: 0\n}, {\n qe: 0x1c01,\n nmps: 13,\n nlps: 20,\n switchFlag: 0\n}, {\n qe: 0x1601,\n nmps: 29,\n nlps: 21,\n switchFlag: 0\n}, {\n qe: 0x5601,\n nmps: 15,\n nlps: 14,\n switchFlag: 1\n}, {\n qe: 0x5401,\n nmps: 16,\n nlps: 14,\n switchFlag: 0\n}, {\n qe: 0x5101,\n nmps: 17,\n nlps: 15,\n switchFlag: 0\n}, {\n qe: 0x4801,\n nmps: 18,\n nlps: 16,\n switchFlag: 0\n}, {\n qe: 0x3801,\n nmps: 19,\n nlps: 17,\n switchFlag: 0\n}, {\n qe: 0x3401,\n nmps: 20,\n nlps: 18,\n switchFlag: 0\n}, {\n qe: 0x3001,\n nmps: 21,\n nlps: 19,\n switchFlag: 0\n}, {\n qe: 0x2801,\n nmps: 22,\n nlps: 19,\n switchFlag: 0\n}, {\n qe: 0x2401,\n nmps: 23,\n nlps: 20,\n switchFlag: 0\n}, {\n qe: 0x2201,\n nmps: 24,\n nlps: 21,\n switchFlag: 0\n}, {\n qe: 0x1c01,\n nmps: 25,\n nlps: 22,\n switchFlag: 0\n}, {\n qe: 0x1801,\n nmps: 26,\n nlps: 23,\n switchFlag: 0\n}, {\n qe: 0x1601,\n nmps: 27,\n nlps: 24,\n switchFlag: 0\n}, {\n qe: 0x1401,\n nmps: 28,\n nlps: 25,\n switchFlag: 0\n}, {\n qe: 0x1201,\n nmps: 29,\n nlps: 26,\n switchFlag: 0\n}, {\n qe: 0x1101,\n nmps: 30,\n nlps: 27,\n switchFlag: 0\n}, {\n qe: 0x0ac1,\n nmps: 31,\n nlps: 28,\n switchFlag: 0\n}, {\n qe: 0x09c1,\n nmps: 32,\n nlps: 29,\n switchFlag: 0\n}, {\n qe: 0x08a1,\n nmps: 33,\n nlps: 30,\n switchFlag: 0\n}, {\n qe: 0x0521,\n nmps: 34,\n nlps: 31,\n switchFlag: 0\n}, {\n qe: 0x0441,\n nmps: 35,\n nlps: 32,\n switchFlag: 0\n}, {\n qe: 0x02a1,\n nmps: 36,\n nlps: 33,\n switchFlag: 0\n}, {\n qe: 0x0221,\n nmps: 37,\n nlps: 34,\n switchFlag: 0\n}, {\n qe: 0x0141,\n nmps: 38,\n nlps: 35,\n switchFlag: 0\n}, {\n qe: 0x0111,\n nmps: 39,\n nlps: 36,\n switchFlag: 0\n}, {\n qe: 0x0085,\n nmps: 40,\n nlps: 37,\n switchFlag: 0\n}, {\n qe: 0x0049,\n nmps: 41,\n nlps: 38,\n switchFlag: 0\n}, {\n qe: 0x0025,\n nmps: 42,\n nlps: 39,\n switchFlag: 0\n}, {\n qe: 0x0015,\n nmps: 43,\n nlps: 40,\n switchFlag: 0\n}, {\n qe: 0x0009,\n nmps: 44,\n nlps: 41,\n switchFlag: 0\n}, {\n qe: 0x0005,\n nmps: 45,\n nlps: 42,\n switchFlag: 0\n}, {\n qe: 0x0001,\n nmps: 45,\n nlps: 43,\n switchFlag: 0\n}, {\n qe: 0x5601,\n nmps: 46,\n nlps: 46,\n switchFlag: 0\n}];\nclass ArithmeticDecoder {\n constructor(data, start, end) {\n this.data = data;\n this.bp = start;\n this.dataEnd = end;\n this.chigh = data[start];\n this.clow = 0;\n this.byteIn();\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 byteIn() {\n const data = this.data;\n let bp = this.bp;\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 readBit(contexts, pos) {\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 if (this.chigh < qeIcx) {\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 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 do {\n if (this.ct === 0) {\n this.byteIn();\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 contexts[pos] = cx_index << 1 | cx_mps;\n return d;\n }\n}\n\n;// ./src/core/jbig2.js\n\n\n\n\nclass Jbig2Error extends BaseException {\n constructor(msg) {\n super(msg, \"Jbig2Error\");\n }\n}\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}\nclass DecodingContext {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n }\n get decoder() {\n const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n return shadow(this, \"decoder\", decoder);\n }\n get contextCache() {\n const cache = new ContextCache();\n return shadow(this, \"contextCache\", cache);\n }\n}\nfunction decodeInteger(contextCache, procedure, decoder) {\n const contexts = contextCache.getContexts(procedure);\n let prev = 1;\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 const sign = readBits(1);\n const value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2);\n let signedValue;\n if (sign === 0) {\n signedValue = value;\n } else if (value > 0) {\n signedValue = -value;\n }\n if (signedValue >= MIN_INT_32 && signedValue <= MAX_INT_32) {\n return signedValue;\n }\n return null;\n}\nfunction decodeIAID(contextCache, decoder, codeLength) {\n const contexts = contextCache.getContexts(\"IAID\");\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}\nconst SegmentTypes = [\"SymbolDictionary\", null, null, null, \"IntermediateTextRegion\", null, \"ImmediateTextRegion\", \"ImmediateLosslessTextRegion\", null, null, null, null, null, null, null, null, \"PatternDictionary\", null, null, null, \"IntermediateHalftoneRegion\", null, \"ImmediateHalftoneRegion\", \"ImmediateLosslessHalftoneRegion\", null, null, null, null, null, null, null, null, null, null, null, null, \"IntermediateGenericRegion\", null, \"ImmediateGenericRegion\", \"ImmediateLosslessGenericRegion\", \"IntermediateGenericRefinementRegion\", null, \"ImmediateGenericRefinementRegion\", \"ImmediateLosslessGenericRefinementRegion\", null, null, null, null, \"PageInformation\", \"EndOfPage\", \"EndOfStripe\", \"EndOfFile\", \"Profiles\", \"Tables\", null, null, null, null, null, null, null, null, \"Extension\"];\nconst CodingTemplates = [[{\n x: -1,\n y: -2\n}, {\n x: 0,\n y: -2\n}, {\n x: 1,\n y: -2\n}, {\n x: -2,\n y: -1\n}, {\n x: -1,\n y: -1\n}, {\n x: 0,\n y: -1\n}, {\n x: 1,\n y: -1\n}, {\n x: 2,\n y: -1\n}, {\n x: -4,\n y: 0\n}, {\n x: -3,\n y: 0\n}, {\n x: -2,\n y: 0\n}, {\n x: -1,\n y: 0\n}], [{\n x: -1,\n y: -2\n}, {\n x: 0,\n y: -2\n}, {\n x: 1,\n y: -2\n}, {\n x: 2,\n y: -2\n}, {\n x: -2,\n y: -1\n}, {\n x: -1,\n y: -1\n}, {\n x: 0,\n y: -1\n}, {\n x: 1,\n y: -1\n}, {\n x: 2,\n y: -1\n}, {\n x: -3,\n y: 0\n}, {\n x: -2,\n y: 0\n}, {\n x: -1,\n y: 0\n}], [{\n x: -1,\n y: -2\n}, {\n x: 0,\n y: -2\n}, {\n x: 1,\n y: -2\n}, {\n x: -2,\n y: -1\n}, {\n x: -1,\n y: -1\n}, {\n x: 0,\n y: -1\n}, {\n x: 1,\n y: -1\n}, {\n x: -2,\n y: 0\n}, {\n x: -1,\n y: 0\n}], [{\n x: -3,\n y: -1\n}, {\n x: -2,\n y: -1\n}, {\n x: -1,\n y: -1\n}, {\n x: 0,\n y: -1\n}, {\n x: 1,\n y: -1\n}, {\n x: -4,\n y: 0\n}, {\n x: -3,\n y: 0\n}, {\n x: -2,\n y: 0\n}, {\n x: -1,\n y: 0\n}]];\nconst RefinementTemplates = [{\n coding: [{\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -1,\n y: 0\n }],\n reference: [{\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -1,\n y: 0\n }, {\n x: 0,\n y: 0\n }, {\n x: 1,\n y: 0\n }, {\n x: -1,\n y: 1\n }, {\n x: 0,\n y: 1\n }, {\n x: 1,\n y: 1\n }]\n}, {\n coding: [{\n x: -1,\n y: -1\n }, {\n x: 0,\n y: -1\n }, {\n x: 1,\n y: -1\n }, {\n x: -1,\n y: 0\n }],\n reference: [{\n x: 0,\n y: -1\n }, {\n x: -1,\n y: 0\n }, {\n x: 0,\n y: 0\n }, {\n x: 1,\n y: 0\n }, {\n x: 0,\n y: 1\n }, {\n x: 1,\n y: 1\n }]\n}];\nconst ReusedContexts = [0x9b25, 0x0795, 0x00e5, 0x0195];\nconst RefinementReusedContexts = [0x0020, 0x0008];\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 const OLD_PIXEL_MASK = 0x7bf7;\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 contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4;\n for (j = 0; j < width; j++) {\n row[j] = pixel = decoder.readBit(contexts, contextLabel);\n contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel;\n }\n }\n return bitmap;\n}\nfunction decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) {\n if (mmr) {\n const input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);\n return decodeMMRBitmap(input, width, height, false);\n }\n if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {\n return decodeBitmapTemplate0(width, height, decodingContext);\n }\n const useskip = !!skip;\n const template = CodingTemplates[templateIndex].concat(at);\n template.sort(function (a, b) {\n return a.y - b.y || a.x - b.x;\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 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 if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) {\n reuseMask |= 1 << templateLength - 1 - k;\n } else {\n changingTemplateEntries.push(k);\n }\n }\n const changingEntriesLength = changingTemplateEntries.length;\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 const sbb_left = -minX;\n const sbb_top = -minY;\n const sbb_right = width - maxX;\n const pseudoPixelContext = ReusedContexts[templateIndex];\n let row = new Uint8Array(width);\n const bitmap = [];\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\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);\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 if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\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 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}\nfunction decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) {\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 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 const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n const bitmap = [];\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GR\");\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;\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;\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 return bitmap;\n}\nfunction decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n }\n const newSymbols = [];\n let currentHeight = 0;\n let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n let tableB1, symbolWidths;\n if (huffman) {\n tableB1 = getStandardTable(1);\n symbolWidths = [];\n symbolCodeLength = Math.max(symbolCodeLength, 1);\n }\n while (newSymbols.length < numberOfNewSymbols) {\n const deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, \"IADH\", decoder);\n currentHeight += deltaHeight;\n let currentWidth = 0,\n totalWidth = 0;\n const firstSymbol = huffman ? symbolWidths.length : 0;\n while (true) {\n const deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, \"IADW\", decoder);\n if (deltaWidth === null) {\n break;\n }\n currentWidth += deltaWidth;\n totalWidth += currentWidth;\n let bitmap;\n if (refinement) {\n const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n if (numberOfInstances > 1) {\n bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput);\n } else {\n const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder);\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder);\n const symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length];\n bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext);\n }\n newSymbols.push(bitmap);\n } else if (huffman) {\n symbolWidths.push(currentWidth);\n } else {\n bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext);\n newSymbols.push(bitmap);\n }\n }\n if (huffman && !refinement) {\n const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n huffmanInput.byteAlign();\n let collectiveBitmap;\n if (bitmapSize === 0) {\n collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight);\n } else {\n const originalEnd = huffmanInput.end;\n const bitmapEnd = huffmanInput.position + bitmapSize;\n huffmanInput.end = bitmapEnd;\n collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false);\n huffmanInput.end = originalEnd;\n huffmanInput.position = bitmapEnd;\n }\n const numberOfSymbolsDecoded = symbolWidths.length;\n if (firstSymbol === numberOfSymbolsDecoded - 1) {\n newSymbols.push(collectiveBitmap);\n } else {\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 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 ? tableB1.decode(huffmanInput) : 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}\nfunction decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\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 const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n let stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, \"IADT\", decoder);\n let firstS = 0;\n i = 0;\n while (i < numberOfSymbolInstances) {\n const deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, \"IADT\", decoder);\n stripT += deltaT;\n const deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, \"IAFS\", decoder);\n firstS += deltaFirstS;\n let currentS = firstS;\n do {\n let currentT = 0;\n if (stripSize > 1) {\n currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, \"IAIT\", decoder);\n }\n const t = stripSize * stripT + currentT;\n const symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength);\n const applyRefinement = refinement && (huffman ? huffmanInput.readBit() : 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);\n const rdh = decodeInteger(contextCache, \"IARDH\", decoder);\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder);\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder);\n symbolWidth += rdw;\n symbolHeight += rdh;\n symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext);\n }\n let increment = 0;\n if (!transposed) {\n if (referenceCorner > 1) {\n currentS += symbolWidth - 1;\n } else {\n increment = symbolWidth - 1;\n }\n } else if (!(referenceCorner & 1)) {\n currentS += symbolHeight - 1;\n } else {\n increment = symbolHeight - 1;\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 for (s2 = 0; s2 < symbolHeight; s2++) {\n row = bitmap[offsetS + s2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[s2];\n const maxWidth = Math.min(width - offsetT, symbolWidth);\n switch (combinationOperator) {\n case 0:\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] |= symbolRow[t2];\n }\n break;\n case 2:\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] ^= symbolRow[t2];\n }\n break;\n default:\n throw new Jbig2Error(`operator ${combinationOperator} is not supported`);\n }\n }\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:\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] |= symbolRow[s2];\n }\n break;\n case 2:\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] ^= symbolRow[s2];\n }\n break;\n default:\n throw new Jbig2Error(`operator ${combinationOperator} is not supported`);\n }\n }\n }\n i++;\n const deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, \"IADS\", decoder);\n if (deltaS === null) {\n break;\n }\n currentS += increment + deltaS + dsOffset;\n } while (true);\n }\n return bitmap;\n}\nfunction decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) {\n const at = [];\n if (!mmr) {\n at.push({\n x: -patternWidth,\n y: 0\n });\n if (template === 0) {\n at.push({\n x: -3,\n y: -1\n }, {\n x: 2,\n y: -2\n }, {\n x: -2,\n y: -2\n });\n }\n }\n const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n const collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext);\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}\nfunction decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) {\n const skip = null;\n if (enableSkip) {\n throw new Jbig2Error(\"skip is not supported\");\n }\n if (combinationOperator !== 0) {\n throw new Jbig2Error(`operator \"${combinationOperator}\" is not supported in halftone region`);\n }\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 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 x: -3,\n y: -1\n }, {\n x: 2,\n y: -2\n }, {\n x: -2,\n y: -2\n });\n }\n }\n const grayScaleBitPlanes = [];\n let mmrInput, bitmap;\n if (mmr) {\n mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);\n }\n for (i = bitsPerValue - 1; i >= 0; i--) {\n if (mmr) {\n bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n } else {\n bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext);\n }\n grayScaleBitPlanes[i] = bitmap;\n }\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];\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 if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) {\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}\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 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 segmentHeader.retainBits = retainBits;\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 if (segmentHeader.length === 0xffffffff) {\n if (segmentType === 38) {\n const genericRegionInfo = readRegionSegmentInformation(data, position);\n const genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength];\n const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\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}\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;\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}\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;\nfunction processSegment(segment, visitor) {\n const header = segment.header;\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:\n const dictionary = {};\n const dictionaryFlags = readUint16(data, position);\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 = [dictionary, header.number, header.referredTo, data, position, end];\n break;\n case 6:\n case 7:\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 = !!(textRegionHuffmanFlags & 0x4000);\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:\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:\n case 23:\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:\n case 39:\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:\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);\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:\n break;\n case 50:\n break;\n case 51:\n break;\n case 53:\n args = [header.number, data, position, end];\n break;\n case 62:\n break;\n default:\n throw new Jbig2Error(`segment type ${header.typeName}(${header.type}) is not implemented`);\n }\n const callbackName = \"on\" + header.typeName;\n if (callbackName in visitor) {\n visitor[callbackName].apply(visitor, args);\n }\n}\nfunction processSegments(segments, visitor) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n processSegment(segments[i], visitor);\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}\nfunction parseJbig2(data) {\n throw new Error(\"Not implemented: parseJbig2\");\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 if (info.defaultPixelValue) {\n buffer.fill(0xff);\n }\n this.buffer = buffer;\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 ? regionInfo.combinationOperator : 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:\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:\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(`operator ${combinationOperator} is not supported`);\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(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext);\n this.drawBitmap(regionInfo, bitmap);\n }\n onImmediateLosslessGenericRegion() {\n this.onImmediateGenericRegion(...arguments);\n }\n onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) {\n let huffmanTables, huffmanInput;\n if (dictionary.huffman) {\n huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables);\n huffmanInput = new Reader(data, start, end);\n }\n let symbols = this.symbols;\n if (!symbols) {\n this.symbols = symbols = {};\n }\n const inputSymbols = [];\n for (const referredSegment of referredSegments) {\n const referredSymbols = symbols[referredSegment];\n if (referredSymbols) {\n inputSymbols.push(...referredSymbols);\n }\n }\n const decodingContext = new DecodingContext(data, start, end);\n symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput);\n }\n onImmediateTextRegion(region, referredSegments, data, start, end) {\n const regionInfo = region.info;\n let huffmanTables, huffmanInput;\n const symbols = this.symbols;\n const inputSymbols = [];\n for (const referredSegment of referredSegments) {\n const referredSymbols = symbols[referredSegment];\n if (referredSymbols) {\n inputSymbols.push(...referredSymbols);\n }\n }\n const symbolCodeLength = log2(inputSymbols.length);\n if (region.huffman) {\n huffmanInput = new Reader(data, start, end);\n huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput);\n }\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput);\n this.drawBitmap(regionInfo, bitmap);\n }\n onImmediateLosslessTextRegion() {\n this.onImmediateTextRegion(...arguments);\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(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext);\n }\n onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n const patterns = this.patterns[referredSegments[0]];\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext);\n this.drawBitmap(regionInfo, bitmap);\n }\n onImmediateLosslessHalftoneRegion() {\n this.onImmediateHalftoneRegion(...arguments);\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}\nclass HuffmanLine {\n constructor(lineData) {\n if (lineData.length === 2) {\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 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}\nclass HuffmanTreeNode {\n constructor(line) {\n this.children = [];\n if (line) {\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 this.isLeaf = false;\n }\n }\n buildTree(line, shift) {\n const bit = line.prefixCode >> shift & 1;\n if (shift <= 0) {\n this.children[bit] = new HuffmanTreeNode(line);\n } else {\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 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}\nclass HuffmanTable {\n constructor(lines, prefixCodesDone) {\n if (!prefixCodesDone) {\n this.assignPrefixCodes(lines);\n }\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 decode(reader) {\n return this.rootNode.decodeNode(reader);\n }\n assignPrefixCodes(lines) {\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 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 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}\nfunction decodeTablesSegment(data, start, end) {\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 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 do {\n prefixLength = reader.readBits(prefixSizeBits);\n rangeLength = reader.readBits(rangeSizeBits);\n lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0]));\n currentRangeLow += 1 << rangeLength;\n } while (currentRangeLow < highestValue);\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n if (flags & 1) {\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([prefixLength, 0]));\n }\n return new HuffmanTable(lines, false);\n}\nconst standardTablesCache = {};\nfunction getStandardTable(number) {\n let table = standardTablesCache[number];\n if (table) {\n return table;\n }\n let lines;\n switch (number) {\n case 1:\n lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]];\n break;\n case 2:\n lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [75, 6, 32, 0x3e], [6, 0x3f]];\n break;\n case 3:\n lines = [[-256, 8, 8, 0xfe], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [-257, 8, 32, 0xff, \"lower\"], [75, 7, 32, 0x7e], [6, 0x3e]];\n break;\n case 4:\n lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [76, 5, 32, 0x1f]];\n break;\n case 5:\n lines = [[-255, 7, 8, 0x7e], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [-256, 7, 32, 0x7f, \"lower\"], [76, 6, 32, 0x3e]];\n break;\n case 6:\n lines = [[-2048, 5, 10, 0x1c], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xa], [-128, 5, 6, 0x1d], [-64, 5, 5, 0x1e], [-32, 4, 5, 0xb], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xc], [1024, 4, 10, 0xd], [-2049, 6, 32, 0x3e, \"lower\"], [2048, 6, 32, 0x3f]];\n break;\n case 7:\n lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1a], [-64, 5, 5, 0x1b], [-32, 4, 5, 0xa], [0, 4, 5, 0xb], [32, 5, 5, 0x1c], [64, 5, 6, 0x1d], [128, 4, 7, 0xc], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1e, \"lower\"], [2048, 5, 32, 0x1f]];\n break;\n case 8:\n lines = [[-15, 8, 3, 0xfc], [-7, 9, 1, 0x1fc], [-5, 8, 1, 0xfd], [-3, 9, 0, 0x1fd], [-2, 7, 0, 0x7c], [-1, 4, 0, 0xa], [0, 2, 1, 0x0], [2, 5, 0, 0x1a], [3, 6, 0, 0x3a], [4, 3, 4, 0x4], [20, 6, 1, 0x3b], [22, 4, 4, 0xb], [38, 4, 5, 0xc], [70, 5, 6, 0x1b], [134, 5, 7, 0x1c], [262, 6, 7, 0x3c], [390, 7, 8, 0x7d], [646, 6, 10, 0x3d], [-16, 9, 32, 0x1fe, \"lower\"], [1670, 9, 32, 0x1ff], [2, 0x1]];\n break;\n case 9:\n lines = [[-31, 8, 4, 0xfc], [-15, 9, 2, 0x1fc], [-11, 8, 2, 0xfd], [-7, 9, 1, 0x1fd], [-5, 7, 1, 0x7c], [-3, 4, 1, 0xa], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1a], [5, 6, 1, 0x3a], [7, 3, 5, 0x4], [39, 6, 2, 0x3b], [43, 4, 5, 0xb], [75, 4, 6, 0xc], [139, 5, 7, 0x1b], [267, 5, 8, 0x1c], [523, 6, 8, 0x3c], [779, 7, 9, 0x7d], [1291, 6, 11, 0x3d], [-32, 9, 32, 0x1fe, \"lower\"], [3339, 9, 32, 0x1ff], [2, 0x0]];\n break;\n case 10:\n lines = [[-21, 7, 4, 0x7a], [-5, 8, 0, 0xfc], [-4, 7, 0, 0x7b], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7c], [5, 8, 0, 0xfd], [6, 2, 6, 0x1], [70, 5, 5, 0x1a], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3a], [582, 6, 9, 0x3b], [1094, 6, 10, 0x3c], [2118, 7, 11, 0x7d], [-22, 8, 32, 0xfe, \"lower\"], [4166, 8, 32, 0xff], [2, 0x2]];\n break;\n case 11:\n lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xc], [5, 4, 1, 0xd], [7, 5, 1, 0x1c], [9, 5, 2, 0x1d], [13, 6, 2, 0x3c], [17, 7, 2, 0x7a], [21, 7, 3, 0x7b], [29, 7, 4, 0x7c], [45, 7, 5, 0x7d], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]];\n break;\n case 12:\n lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1c], [6, 5, 1, 0x1d], [8, 6, 1, 0x3c], [10, 7, 0, 0x7a], [11, 7, 1, 0x7b], [13, 7, 2, 0x7c], [17, 7, 3, 0x7d], [25, 7, 4, 0x7e], [41, 8, 5, 0xfe], [73, 8, 32, 0xff]];\n break;\n case 13:\n lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xc], [4, 5, 0, 0x1c], [5, 4, 1, 0xd], [7, 3, 3, 0x5], [15, 6, 1, 0x3a], [17, 6, 2, 0x3b], [21, 6, 3, 0x3c], [29, 6, 4, 0x3d], [45, 6, 5, 0x3e], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]];\n break;\n case 14:\n lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]];\n break;\n case 15:\n lines = [[-24, 7, 4, 0x7c], [-8, 6, 2, 0x3c], [-4, 5, 1, 0x1c], [-2, 4, 0, 0xc], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xd], [3, 5, 1, 0x1d], [5, 6, 2, 0x3d], [9, 7, 4, 0x7d], [-25, 7, 32, 0x7e, \"lower\"], [25, 7, 32, 0x7f]];\n break;\n default:\n throw new Jbig2Error(`standard table B.${number} does not exist`);\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}\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 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 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 byteAlign() {\n this.shift = -1;\n }\n next() {\n if (this.position >= this.end) {\n return -1;\n }\n return this.data[this.position++];\n }\n}\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\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}\nfunction getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) {\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 const runCodesTable = new HuffmanTable(codes, false);\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 let customIndex = 0,\n tableFirstS,\n tableDeltaS,\n tableDeltaT;\n switch (textRegion.huffmanFS) {\n case 0:\n case 1:\n tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n break;\n case 3:\n tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman FS selector\");\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(customIndex, referredTo, customTables);\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DS selector\");\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(customIndex, referredTo, customTables);\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DT selector\");\n }\n if (textRegion.refinement) {\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n return {\n symbolIDTable,\n tableFirstS,\n tableDeltaS,\n tableDeltaT\n };\n}\nfunction getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) {\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(customIndex, referredTo, customTables);\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DH selector\");\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(customIndex, referredTo, customTables);\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DW selector\");\n }\n let tableBitmapSize, tableAggregateInstances;\n if (dictionary.bitmapSizeSelector) {\n tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables);\n customIndex++;\n } else {\n tableBitmapSize = getStandardTable(1);\n }\n if (dictionary.aggregationInstancesSelector) {\n tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables);\n } else {\n tableAggregateInstances = getStandardTable(1);\n }\n return {\n tableDeltaHeight,\n tableDeltaWidth,\n tableBitmapSize,\n tableAggregateInstances\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}\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\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 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 currentByte = 0;\n eof = true;\n }\n shift = 7;\n }\n row[x] = currentByte >> shift & 1;\n shift--;\n }\n }\n if (endOfBlock && !eof) {\n const lookForEOFLimit = 5;\n for (let i = 0; i < lookForEOFLimit; i++) {\n if (decoder.readNextChar() === -1) {\n break;\n }\n }\n }\n return bitmap;\n}\nclass Jbig2Image {\n parseChunks(chunks) {\n return parseJbig2Chunks(chunks);\n }\n parse(data) {\n throw new Error(\"Not implemented: Jbig2Image.parse\");\n }\n}\n\n;// ./src/core/jbig2_stream.js\n\n\n\n\n\nclass Jbig2Stream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n get bytes() {\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n ensureBuffer(requested) {}\n readBlock() {\n this.decodeImage();\n }\n decodeImage(bytes) {\n if (this.eof) {\n return this.buffer;\n }\n bytes ||= this.bytes;\n const jbig2Image = new Jbig2Image();\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({\n data: globals,\n start: 0,\n end: globals.length\n });\n }\n }\n chunks.push({\n data: bytes,\n start: 0,\n end: bytes.length\n });\n const data = jbig2Image.parseChunks(chunks);\n const dataLength = data.length;\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 return this.buffer;\n }\n get canAsyncDecodeImageFromBuffer() {\n return this.stream.isAsync;\n }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/core/jpg.js\n\n\n\nclass JpegError extends BaseException {\n constructor(msg) {\n super(msg, \"JpegError\");\n }\n}\nclass DNLMarkerError extends BaseException {\n constructor(message, scanLines) {\n super(message, \"DNLMarkerError\");\n this.scanLines = scanLines;\n }\n}\nclass EOIMarkerError extends BaseException {\n constructor(msg) {\n super(msg, \"EOIMarkerError\");\n }\n}\nconst dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);\nconst dctCos1 = 4017;\nconst dctSin1 = 799;\nconst dctCos3 = 3406;\nconst dctSin3 = 2276;\nconst dctCos6 = 1567;\nconst dctSin6 = 3784;\nconst dctSqrt2 = 5793;\nconst dctSqrt1d2 = 2896;\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 = [{\n children: [],\n index: 0\n }];\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 = {\n children: [],\n index: 0\n });\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n code.push(q = {\n children: [],\n index: 0\n });\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n}\nfunction getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n}\nfunction decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, parseDNLMarker = false) {\n const mcusPerLine = frame.mcusPerLine;\n const progressive = frame.progressive;\n const startOffset = offset;\n let bitsData = 0,\n bitsCount = 0;\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 === 0xdc && parseDNLMarker) {\n offset += 2;\n const scanLines = readUint16(data, offset);\n offset += 2;\n if (scanLines > 0 && scanLines !== frame.scanLines) {\n throw new DNLMarkerError(\"Found DNL marker (0xFFDC) while parsing scan data\", scanLines);\n }\n } else if (nextByte === 0xd9) {\n if (parseDNLMarker) {\n const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 5) {\n throw new DNLMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data, \" + \"possibly caused by incorrect `scanLines` parameter\", maybeScanLines);\n }\n }\n throw new EOIMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data\");\n }\n throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`);\n }\n }\n bitsCount = 7;\n return bitsData >>> 7;\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 function receive(length) {\n let n = 0;\n while (length > 0) {\n n = n << 1 | readBit();\n length--;\n }\n return 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 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 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 function decodeDCSuccessive(component, blockOffset) {\n component.blockData[blockOffset] |= readBit() << successive;\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] = receiveAndExtend(s) * (1 << successive);\n k++;\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:\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:\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:\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:\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 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 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 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 let mcu = 0,\n fileMarker;\n const mcuExpected = componentsLength === 1 ? components[0].blocksPerLine * components[0].blocksPerColumn : mcusPerLine * frame.mcusPerColumn;\n let h, v;\n while (mcu <= mcuExpected) {\n const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;\n if (mcuToRead > 0) {\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\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 bitsCount = 0;\n fileMarker = findNextFileMarker(data, offset);\n if (!fileMarker) {\n break;\n }\n if (fileMarker.invalid) {\n const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n warn(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`);\n offset = fileMarker.offset;\n }\n if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n offset += 2;\n } else {\n break;\n }\n }\n return offset - startOffset;\n}\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 if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n for (let row = 0; row < 64; row += 8) {\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 p0 *= qt[row];\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 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 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 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 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 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 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 if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = dctSqrt2 * p0 + 8192 >> 14;\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 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 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 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 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 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 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}\nfunction buildComponentData(frame, component) {\n const blocksPerLine = component.blocksPerLine;\n const blocksPerColumn = component.blocksPerColumn;\n const computationBuffer = new Int16Array(64);\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}\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n const maxPos = data.length - 1;\n let newPos = startPos < currentPos ? startPos : currentPos;\n if (currentPos >= maxPos) {\n return null;\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;\n }\n newMarker = readUint16(data, newPos);\n }\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos\n };\n}\nfunction prepareComponents(frame) {\n const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (const component of frame.components) {\n const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);\n const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);\n const blocksPerLineForMcu = mcusPerLine * component.h;\n const blocksPerColumnForMcu = mcusPerColumn * component.v;\n const blocksBufferSize = 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}\nfunction readDataBlock(data, offset) {\n const length = readUint16(data, offset);\n offset += 2;\n let endOffset = offset + length - 2;\n const fileMarker = findNextFileMarker(data, endOffset, offset);\n if (fileMarker?.invalid) {\n warn(\"readDataBlock - incorrect length, current marker is: \" + fileMarker.invalid);\n endOffset = fileMarker.offset;\n }\n const array = data.subarray(offset, endOffset);\n offset += array.length;\n return {\n appData: array,\n newOffset: offset\n };\n}\nfunction skipData(data, offset) {\n const length = readUint16(data, offset);\n offset += 2;\n const endOffset = offset + length - 2;\n const fileMarker = findNextFileMarker(data, endOffset, offset);\n if (fileMarker?.invalid) {\n return fileMarker.offset;\n }\n return endOffset;\n}\nclass JpegImage {\n constructor({\n decodeTransform = null,\n colorTransform = -1\n } = {}) {\n this._decodeTransform = decodeTransform;\n this._colorTransform = colorTransform;\n }\n static canUseImageDecoder(data, colorTransform = -1) {\n let offset = 0;\n let numComponents = null;\n let fileMarker = readUint16(data, offset);\n offset += 2;\n if (fileMarker !== 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n markerLoop: while (fileMarker !== 0xffd9) {\n switch (fileMarker) {\n case 0xffc0:\n case 0xffc1:\n case 0xffc2:\n numComponents = data[offset + (2 + 1 + 2 + 2)];\n break markerLoop;\n case 0xffff:\n if (data[offset] !== 0xff) {\n offset--;\n }\n break;\n }\n offset = skipData(data, offset);\n fileMarker = readUint16(data, offset);\n offset += 2;\n }\n if (numComponents === 4) {\n return false;\n }\n if (numComponents === 3 && colorTransform === 0) {\n return false;\n }\n return true;\n }\n parse(data, {\n dnlScanLines = null\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 let fileMarker = readUint16(data, offset);\n offset += 2;\n if (fileMarker !== 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n markerLoop: while (fileMarker !== 0xffd9) {\n let i, j, l;\n switch (fileMarker) {\n case 0xffe0:\n case 0xffe1:\n case 0xffe2:\n case 0xffe3:\n case 0xffe4:\n case 0xffe5:\n case 0xffe6:\n case 0xffe7:\n case 0xffe8:\n case 0xffe9:\n case 0xffea:\n case 0xffeb:\n case 0xffec:\n case 0xffed:\n case 0xffee:\n case 0xffef:\n case 0xfffe:\n const {\n appData,\n newOffset\n } = readDataBlock(data, offset);\n offset = newOffset;\n if (fileMarker === 0xffe0) {\n if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {\n jfif = {\n version: {\n major: appData[5],\n minor: appData[6]\n },\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(14, 14 + 3 * appData[12] * appData[13])\n };\n }\n }\n if (fileMarker === 0xffee) {\n if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) {\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 case 0xffdb:\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 for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\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 case 0xffc0:\n case 0xffc1:\n case 0xffc2:\n if (frame) {\n throw new JpegError(\"Only single frame JPEGs supported\");\n }\n offset += 2;\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\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 case 0xffc4:\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 (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n case 0xffdd:\n offset += 2;\n resetInterval = readUint16(data, offset);\n offset += 2;\n break;\n case 0xffda:\n const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n offset += 2;\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(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);\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, {\n dnlScanLines: ex.scanLines\n });\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 case 0xffdc:\n offset += 4;\n break;\n case 0xffff:\n if (data[offset] !== 0xff) {\n offset--;\n }\n break;\n default:\n const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3);\n if (nextFileMarker?.invalid) {\n warn(\"JpegImage.parse - unexpected data, current marker is: \" + nextFileMarker.invalid);\n offset = nextFileMarker.offset;\n break;\n }\n if (!nextFileMarker || offset >= data.length - 1) {\n warn(\"JpegImage.parse - reached the end of the image data \" + \"without finding an EOI marker (0xFFD9).\");\n break markerLoop;\n }\n throw new JpegError(\"JpegImage.parse - unknown marker: \" + fileMarker.toString(16));\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n }\n if (!frame) {\n throw new JpegError(\"JpegImage.parse - no frame data found.\");\n }\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n for (const component of frame.components) {\n const quantizationTable = quantizationTables[component.quantizationId];\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\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 _getLinearizedBlockData(width, height, isSourcePDF = false) {\n const scaleX = this.width / width,\n scaleY = this.height / height;\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;\n let lastComponentScaleX;\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 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 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 let transform = this._decodeTransform;\n if (!isSourcePDF && numComponents === 4 && !transform) {\n transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\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 get _isColorConversionNeeded() {\n if (this.adobe) {\n return !!this.adobe.transformCode;\n }\n if (this.numComponents === 3) {\n if (this._colorTransform === 0) {\n return false;\n } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) {\n return false;\n }\n return true;\n }\n if (this._colorTransform === 1) {\n return true;\n }\n return false;\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 _convertYccToRgba(data, out) {\n for (let i = 0, j = 0, length = data.length; i < length; i += 3, j += 4) {\n const Y = data[i];\n const Cb = data[i + 1];\n const Cr = data[i + 2];\n out[j] = Y - 179.456 + 1.402 * Cr;\n out[j + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n out[j + 2] = Y - 226.816 + 1.772 * Cb;\n out[j + 3] = 255;\n }\n return out;\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 data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);\n data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);\n data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);\n }\n return data.subarray(0, offset);\n }\n _convertYcckToRgba(data) {\n for (let i = 0, length = data.length; i < length; i += 4) {\n const Y = data[i];\n const Cb = data[i + 1];\n const Cr = data[i + 2];\n const k = data[i + 3];\n data[i] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);\n data[i + 1] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);\n data[i + 2] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);\n data[i + 3] = 255;\n }\n return data;\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 }\n return data;\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 data[offset++] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254);\n data[offset++] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.0003189131175883281 * k + 0.7364883807733168);\n data[offset++] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144);\n }\n return data.subarray(0, offset);\n }\n _convertCmykToRgba(data) {\n for (let i = 0, length = data.length; i < length; i += 4) {\n const c = data[i];\n const m = data[i + 1];\n const y = data[i + 2];\n const k = data[i + 3];\n data[i] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254);\n data[i + 1] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.0003189131175883281 * k + 0.7364883807733168);\n data[i + 2] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144);\n data[i + 3] = 255;\n }\n return data;\n }\n getData({\n width,\n height,\n forceRGBA = false,\n forceRGB = false,\n isSourcePDF = false\n }) {\n if (this.numComponents > 4) {\n throw new JpegError(\"Unsupported color mode\");\n }\n const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n if (this.numComponents === 1 && (forceRGBA || forceRGB)) {\n const len = data.length * (forceRGBA ? 4 : 3);\n const rgbaData = new Uint8ClampedArray(len);\n let offset = 0;\n if (forceRGBA) {\n grayToRGBA(data, new Uint32Array(rgbaData.buffer));\n } else {\n for (const grayColor of data) {\n rgbaData[offset++] = grayColor;\n rgbaData[offset++] = grayColor;\n rgbaData[offset++] = grayColor;\n }\n }\n return rgbaData;\n } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n if (forceRGBA) {\n const rgbaData = new Uint8ClampedArray(data.length / 3 * 4);\n return this._convertYccToRgba(data, rgbaData);\n }\n return this._convertYccToRgb(data);\n } else if (this.numComponents === 4) {\n if (this._isColorConversionNeeded) {\n if (forceRGBA) {\n return this._convertYcckToRgba(data);\n }\n if (forceRGB) {\n return this._convertYcckToRgb(data);\n }\n return this._convertYcckToCmyk(data);\n } else if (forceRGBA) {\n return this._convertCmykToRgba(data);\n } else if (forceRGB) {\n return this._convertCmykToRgb(data);\n }\n }\n return data;\n }\n}\n\n;// ./src/core/jpeg_stream.js\n\n\n\n\nclass JpegStream extends DecodeStream {\n static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported;\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n static get canUseImageDecoder() {\n return shadow(this, \"canUseImageDecoder\", this.#isImageDecoderSupported ? ImageDecoder.isTypeSupported(\"image/jpeg\") : Promise.resolve(false));\n }\n static setOptions({\n isImageDecoderSupported = false\n }) {\n this.#isImageDecoderSupported = isImageDecoderSupported;\n }\n get bytes() {\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n ensureBuffer(requested) {}\n readBlock() {\n this.decodeImage();\n }\n get jpegOptions() {\n const jpegOptions = {\n decodeTransform: undefined,\n colorTransform: undefined\n };\n const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n if ((this.forceRGBA || 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 if (this.params instanceof Dict) {\n const colorTransform = this.params.get(\"ColorTransform\");\n if (Number.isInteger(colorTransform)) {\n jpegOptions.colorTransform = colorTransform;\n }\n }\n return shadow(this, \"jpegOptions\", jpegOptions);\n }\n #skipUselessBytes(data) {\n for (let i = 0, ii = data.length - 1; i < ii; i++) {\n if (data[i] === 0xff && data[i + 1] === 0xd8) {\n if (i > 0) {\n data = data.subarray(i);\n }\n break;\n }\n }\n return data;\n }\n decodeImage(bytes) {\n if (this.eof) {\n return this.buffer;\n }\n bytes = this.#skipUselessBytes(bytes || this.bytes);\n const jpegImage = new JpegImage(this.jpegOptions);\n jpegImage.parse(bytes);\n const data = jpegImage.getData({\n width: this.drawWidth,\n height: this.drawHeight,\n forceRGBA: this.forceRGBA,\n forceRGB: this.forceRGB,\n isSourcePDF: true\n });\n this.buffer = data;\n this.bufferLength = data.length;\n this.eof = true;\n return this.buffer;\n }\n get canAsyncDecodeImageFromBuffer() {\n return this.stream.isAsync;\n }\n async getTransferableImage() {\n if (!(await JpegStream.canUseImageDecoder)) {\n return null;\n }\n const jpegOptions = this.jpegOptions;\n if (jpegOptions.decodeTransform) {\n return null;\n }\n let decoder;\n try {\n const bytes = this.canAsyncDecodeImageFromBuffer && (await this.stream.asyncGetBytes()) || this.bytes;\n if (!bytes) {\n return null;\n }\n const data = this.#skipUselessBytes(bytes);\n if (!JpegImage.canUseImageDecoder(data, jpegOptions.colorTransform)) {\n return null;\n }\n decoder = new ImageDecoder({\n data,\n type: \"image/jpeg\",\n preferAnimation: false\n });\n return (await decoder.decode()).image;\n } catch (reason) {\n warn(`getTransferableImage - failed: \"${reason}\".`);\n return null;\n } finally {\n decoder?.close();\n }\n }\n}\n\n;// ./external/openjpeg/openjpeg.js\nvar OpenJPEG = (() => {\n var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;\n return function (moduleArg = {}) {\n var moduleRtn;\n var Module = moduleArg;\n var readyPromiseResolve, readyPromiseReject;\n var readyPromise = new Promise((resolve, reject) => {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n Module.decode = function (bytes, {\n numComponents = 4,\n isIndexedColormap = false,\n smaskInData = false\n }) {\n const size = bytes.length;\n const ptr = Module._malloc(size);\n Module.HEAPU8.set(bytes, ptr);\n const ret = Module._jp2_decode(ptr, size, numComponents > 0 ? numComponents : 0, !!isIndexedColormap, !!smaskInData);\n Module._free(ptr);\n if (ret) {\n const {\n errorMessages\n } = Module;\n if (errorMessages) {\n delete Module.errorMessages;\n return errorMessages;\n }\n return \"Unknown error\";\n }\n const {\n imageData\n } = Module;\n Module.imageData = null;\n return imageData;\n };\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow) => {\n throw toThrow;\n };\n var scriptDirectory = \"\";\n var readAsync, readBinary;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptName) {\n scriptDirectory = _scriptName;\n }\n if (scriptDirectory.startsWith(\"blob:\")) {\n scriptDirectory = \"\";\n } else {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n }\n readAsync = url => fetch(url, {\n credentials: \"same-origin\"\n }).then(response => {\n if (response.ok) {\n return response.arrayBuffer();\n }\n return Promise.reject(new Error(response.status + \" : \" + response.url));\n });\n } else {}\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.error.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n var wasmBinary = Module[\"wasmBinary\"];\n function intArrayFromBase64(s) {\n var decoded = atob(s);\n var bytes = new Uint8Array(decoded.length);\n for (var i = 0; i < decoded.length; ++i) {\n bytes[i] = decoded.charCodeAt(i);\n }\n return bytes;\n }\n function tryParseAsDataURI(filename) {\n if (!isDataURI(filename)) {\n return;\n }\n return intArrayFromBase64(filename.slice(dataURIPrefix.length));\n }\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n callRuntimeCallbacks(__ATINIT__);\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function addRunDependency(id) {\n runDependencies++;\n Module[\"monitorRunDependencies\"]?.(runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n Module[\"monitorRunDependencies\"]?.(runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n Module[\"onAbort\"]?.(what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n var isDataURI = filename => filename.startsWith(dataURIPrefix);\n function findWasmBinary() {\n var f = \"data:application/octet-stream;base64,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A3FFBEACQCAAQQNxRQRAIAAhAgwBCyACRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCyADQXxxIQQCQCADQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgA0EEayIEIABJBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAswAQF/AkAgAEUNACABRQ0AQQggACABbCIBECkiAARAIABBACABEBkaCyAAIQILIAILEQAgAEUEQEEADwtBCCAAECkL8gICAn8BfgJAIAJFDQAgACABOgAAIAAgAmoiA0EBayABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBA2sgAToAACADQQJrIAE6AAAgAkEHSQ0AIAAgAToAAyADQQRrIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBBGsgATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQQhrIAE2AgAgAkEMayABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkEQayABNgIAIAJBFGsgATYCACACQRhrIAE2AgAgAkEcayABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa1CgYCAgBB+IQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASAC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CyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBA8LC0HUzQFBGTYCAEF/DwsgACABOgAAQQELfgIBfwF+IAC9IgNCNIinQf8PcSICQf8PRwR8IAJFBEAgASAARAAAAAAAAAAAYQR/QQAFIABEAAAAAAAA8EOiIAEQcCEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALC7wCAAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAgJCggJAQIDBAoJCgoICQUGBwsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAwALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC28BBX8gACgCACIDLAAAQTBrIgFBCUsEQEEADwsDQEF/IQQgAkHMmbPmAE0EQEF/IAEgAkEKbCIFaiABIAVB/////wdzSxshBAsgACADQQFqIgU2AgAgAywAASAEIQIgBSEDQTBrIgFBCkkNAAsgAgtJAQF/AkBBAUEsEBciAQRAIAFBADYCEAJAIABBAEwEQCABQQFBCBAXIgA2AiQgAEUNAQwDCyABQQA2AgwLIAEQFAtBACEBCyABC64UAhJ/An4jAEFAaiIIJAAgCCABNgI8IAhBJ2ohFyAIQShqIRICQAJAAkACQANAQQAhBwNA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KAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGEBYaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEEBYaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC6YFAgZ+BH8gASABKAIAQQdqQXhxIgFBEGo2AgAgACABKQMAIQIgASkDCCEHIwBBIGsiCCQAIAdC////////P4MhBAJ+IAdCMIhC//8BgyIDpyIKQYH4AGtB/Q9NBEAgBEIEhiACQjyIhCEDIApBgPgAa60hBAJAIAJC//////////8PgyICQoGAgICAgICACFoEQCADQgF8IQMMAQsgAkKAgICAgICAgAhSDQAgA0IBgyADfCEDC0IAIAMgA0L/////////B1YiABshAiAArSAEfAwBCwJAIAIgBIRQDQAgA0L//wFSDQAgBEIEhiACQjyIhEKAgICAgICABIQhAkL/DwwBCyAKQf6HAUsEQEIAIQJC/w8MAQtBgPgAQYH4ACADUCIBGyIAIAprIglB8ABKBEBCACECQgAMAQsgAiEDIAQgBEKAgICAgIDAAIQgARsiBSEGAkBBgAEgCWsiAUHAAHEEQCACIAFBQGqthiEGQgAhAwwBCyABRQ0AIAYgAa0iBIYgA0HAACABa62IhCEGIAMgBIYhAwsgCCADNwMQIAggBjcDGAJAIAlBwABxBEAgBSAJQUBqrYghAkIAIQUMAQsgCUUNACAFQcAAIAlrrYYgAiAJrSIDiIQhAiAFIAOIIQULIAggAjcDACAIIAU3AwggCCkDCEIEhiAIKQMAIgNCPIiEIQICQCAAIApHIAgpAxAgCCkDGIRCAFJxrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIAJCgICAgICAgAiFIAIgAkL/////////B1YiABshAiAArQshAyAIQSBqJAAgB0KAgICAgICAgIB/gyADQjSGhCAChL85AwAL9BcDEn8BfAN+IwBBsARrIgwkACAMQQA2AiwCQCABvSIZQgBTBEBBASEQQboIIRQgAZoiAb0hGQwBCyAEQYAQcQRAQQEhEEG9CCEUDAELQcAI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ACgCRCICQQN0aiIFIAQoAhQ7AQAgBSAEKAIQNgIEQQEhBSAAIAJBAWo2AkQgASAJaiECIAZBAWoiBiAKRw0ACwwCC0EBIAYgBkEBTRshByAAKAJEIQFBACEGA0AgBCABNgIUIAEgACgChAEgACgCgAFsTw0BIAIgBEEQaiAJEBUgCCAAKAJEIgpBA3RqIgUgATsBACAFIAQoAhA2AgRBASEFIAAgCkEBaiIBNgJEIAIgCWohAiAGQQFqIgYgB0cNAAsMAQsgAEEBNgJMIAQgATYCACADQQJB0jwgBBATCyAEQSBqJAAgBQsEAEEACwvLwQEhAEGACAvgmQFjYW5ub3QgYWxsb2NhdGUgb3BqX3RjZF9zZWdfZGF0YV9jaHVua190KiBhcnJheQAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AFVua25vd24gZm9ybWF0AEZhaWxlZCB0byBzZXR1cCB0aGUgZGVjb2RlcgBGYWlsZWQgdG8gcmVhZCB0aGUgaGVhZGVyAG5hbgAqbF90aWxlX2xlbiA+IFVJTlRfTUFYIC0gT1BKX0NPTU1PTl9DQkxLX0RBVEFfRVhUUkEgLSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoAGluZgBGYWlsZWQgdG8gZGVjb2RlIHRoZSBpbWFnZQBJbnZhbGlkIGFjY2VzcyB0byBwaS0+aW5jbHVkZQAvdG1wL29wZW5qcGVnL3NyYy9iaW4vY29tbW9uL2NvbG9yLmMAQUxMX0NQVVMAT1BKX05VTV9USFJFQURTAE5BTgBPSlBfRE9fTk9UX0RJU1BMQVlfVElMRV9JTkRFWF9JRl9UTE0ASU5GAHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3NvdF9sZW5ndGggPiBVSU5UX01BWCAtIE9QSl9DT01NT05fQ0JMS19EQVRBX0VYVFJBAAkJCSBwcmVjY2ludHNpemUgKHcsaCk9AAkJCSBzdGVwc2l6ZXMgKG0sZSk9AFNPVCBtYXJrZXIgZm9yIHRpbGUgJXUgZGVjbGFyZXMgbW9yZSB0aWxlLXBhcnRzIHRoYW4gZm91bmQgaW4gVExNIG1hcmtlci4AKG51bGwpACglZCwlZCkgACVzfQoACQkgfQoAW0RFVl0gRHVtcCBhbiBpbWFnZV9jb21wX2hlYWRlciBzdHJ1Y3QgewoAW0RFVl0gRHVtcCBhbiBpbWFnZV9oZWFkZXIgc3RydWN0IHsKAEltYWdlIGluZm8gewoACSBkZWZhdWx0IHRpbGUgewoAJXMJIGNvbXBvbmVudCAlZCB7CgAJCSBjb21wICVkIHsKAAkgVGlsZSBpbmRleDogewoACSBNYXJrZXIgbGlzdDogewoAQ29kZXN0cmVhbSBpbmRleCBmcm9tIG1haW4gaGVhZGVyOiB7CgBDb2Rlc3RyZWFtIGluZm8gZnJvbSBtYWluIGhlYWRlcjogewoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3gKAEZvdW5kIGEgbWlzcGxhY2VkICclYyVjJWMlYycgYm94IG91dHNpZGUganAyaCBib3gKAE1hbGZvcm1lZCBKUDIgZmlsZSBmb3JtYXQ6IGZpcnN0IGJveCBtdXN0IGJlIEpQRUcgMjAwMCBzaWduYXR1cmUgYm94CgBNYWxmb3JtZWQgSlAyIGZpbGUgZm9ybWF0OiBzZWNvbmQgYm94IG11c3QgYmUgZmlsZSB0eXBlIGJveAoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGpwZWcyMDAwIGJveAoATm90IGVub3VnaCBtZW1vcnkgd2l0aCBGVFlQIEJveAoAQSBtYXJrZXIgSUQgd2FzIGV4cGVjdGVkICgweGZmLS0pIGluc3RlYWQgb2YgJS44eAoACQkgbWN0PSV4CgAJCQkgY2Jsa3N0eT0lI3gKAAkJCSBjc3R5PSUjeAoACQkgcHJnPSUjeAoASW50ZWdlciBvdmVyZmxvdwoACSB0ZHg9JXUsIHRkeT0ldQoACSB0dz0ldSwgdGg9JXUKAAkgdHgwPSV1LCB0eTA9JXUKAEludmFsaWQgY29tcG9uZW50IGluZGV4OiAldQoAU3RyZWFtIHRvbyBzaG9ydAoATWFya2VyIGhhbmRsZXIgZnVuY3Rpb24gZmFpbGVkIHRvIHJlYWQgdGhlIG1hcmtlciBzZWdtZW50CgBOb3QgZW5vdWdoIG1lbW9yeSBmb3IgY3VycmVudCBwcmVjaW5jdCBjb2RlYmxvY2sgZWxlbWVudAoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50CgBFcnJvciByZWFkaW5nIFNRY2Qgb3IgU1FjYyBlbGVtZW50CgBBIEJQQ0MgaGVhZGVyIGJveCBpcyBhdmFpbGFibGUgYWx0aG91Z2ggQlBDIGdpdmVuIGJ5IHRoZSBJSERSIGJveCAoJWQpIGluZGljYXRlIGNvbXBvbmVudHMgYml0IGRlcHRoIGlzIGNvbnN0YW50CgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IGlsbGVnYWwgdGlsZSBvZmZzZXQKAEludmFsaWQgcHJlY2luY3QKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBiYW5kIHByZWNpbnRzCgBGYWlsZWQgdG8gZGVjb2RlIGFsbCB1c2VkIGNvbXBvbmVudHMKAFNpemUgb2YgY29kZSBibG9jayBkYXRhIGV4Y2VlZHMgc3lzdGVtIGxpbWl0cwoAU2l6ZSBvZiB0aWxlIGRhdGEgZXhjZWVkcyBzeXN0ZW0gbGltaXRzCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgTUNUIG1hcmtlcnMKAENvcnJ1cHRlZCBQUE0gbWFya2VycwoATm90IGVub3VnaCBtZW1vcnkgZm9yIHRpbGUgcmVzb2x1dGlvbnMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBtdWx0aXBsZSBjb2xsZWN0aW9ucwoASW52YWxpZCBQQ0xSIGJveC4gUmVwb3J0cyAwIHBhbGV0dGUgY29sdW1ucwoAV2UgZG8gbm90IHN1cHBvcnQgUk9JIGluIGRlY29kaW5nIEhUIGNvZGVibG9ja3MKAENhbm5vdCBoYW5kbGUgYm94IG9mIHVuZGVmaW5lZCBzaXplcwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIGNvbGxlY3Rpb25zIHdpdGhvdXQgc2FtZSBudW1iZXIgb2YgaW5kaXhlcwoASW52YWxpZCB0aWxlYy0+d2luX3h4eCB2YWx1ZXMKAENhbm5vdCBoYW5kbGUgYm94IG9mIGxlc3MgdGhhbiA4IGJ5dGVzCgBDYW5ub3QgaGFuZGxlIFhMIGJveCBvZiBsZXNzIHRoYW4gMTYgYnl0ZXMKAENvbXBvbmVudCBpbmRleCAldSB1c2VkIHNldmVyYWwgdGltZXMKAEludmFsaWQgUENMUiBib3guIFJlcG9ydHMgJWQgZW50cmllcwoATm90IGVub3VnaCBtZW1vcnkgdG8gY3JlYXRlIFRhZy10cmVlIG5vZGVzCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbWN0IGRhdGEgd2l0aGluIG11bHRpcGxlIE1DVCByZWNvcmRzCgBDYW5ub3QgZGVjb2RlIHRpbGUsIG1lbW9yeSBlcnJvcgoAb3BqX2oya19hcHBseV9uYl90aWxlX3BhcnRzX2NvcnJlY3Rpb24gZXJyb3IKAFByb2JsZW0gd2l0aCBza2lwcGluZyBKUEVHMjAwMCBib3gsIHN0cmVhbSBlcnJvcgoAUHJvYmxlbSB3aXRoIHJlYWRpbmcgSlBFRzIwMDAgYm94LCBzdHJlYW0gZXJyb3IKAFVua25vd24gbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBhZGQgdGwgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBhZGQgbWggbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byB0YWtlIGluIGNoYXJnZSBTSVogbWFya2VyCgBFcnJvciByZWFkaW5nIFBQVCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgUFBUIG1hcmtlcgoARXJyb3IgcmVhZGluZyBTT1QgbWFya2VyCgBEaWQgbm90IGdldCBleHBlY3RlZCBTT1QgbWFya2VyCgBFcnJvciByZWFkaW5nIFBMVCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgTUNUIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBNQ1QgbWFya2VyCgBOb3QgZW5vdWdoIHNwYWNlIGZvciBleHBlY3RlZCBTT1AgbWFya2VyCgBFeHBlY3RlZCBTT1AgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DTyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUkdOIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQUE0gbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIFBQTSBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUExNIG1hcmtlcgoARXhwZWN0ZWQgRVBIIG1hcmtlcgoATm90IGVub3VnaCBzcGFjZSBmb3IgcmVxdWlyZWQgRVBIIG1hcmtlcgoARXJyb3IgcmVhZGluZyBDUkcgbWFya2VyCgBVbmtub3duIHByb2dyZXNzaW9uIG9yZGVyIGluIENPRCBtYXJrZXIKAFVua25vd24gU2NvZCB2YWx1ZSBpbiBDT0QgbWFya2VyCgBFcnJvciByZWFkaW5nIENPRCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUUNEIG1hcmtlcgoAQ3Jyb3IgcmVhZGluZyBDQkQgbWFya2VyCgBFcnJvciByZWFkaW5nIFBPQyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlcgoARXJyb3IgcmVhZGluZyBRQ0MgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DQyBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgTUNDIG1hcmtlcgoAcmVxdWlyZWQgU0laIG1hcmtlciBub3QgZm91bmQgaW4gbWFpbiBoZWFkZXIKAHJlcXVpcmVkIENPRCBtYXJrZXIgbm90IGZvdW5kIGluIG1haW4gaGVhZGVyCgByZXF1aXJlZCBRQ0QgbWFya2VyIG5vdCBmb3VuZCBpbiBtYWluIGhlYWRlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGpwZWcyMDAwIGZpbGUgaGVhZGVyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIGhlYWRlcgoARXJyb3Igd2l0aCBKUCBTaWduYXR1cmUgOiBiYWQgbWFnaWMgbnVtYmVyCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBjdXJyZW50IG51bWJlciBvZiB0aWxlLXBhcnQgKCVkKSwgZ2l2aW5nIHVwCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBwcmV2aW91cyBudW1iZXIgb2YgdGlsZS1wYXJ0ICglZCksIGdpdmluZyB1cAoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgY3VycmVudCBudW1iZXIgb2YgdGlsZS1wYXJ0IChoZWFkZXIpICglZCksIGdpdmluZyB1cAoAdGlsZXMgcmVxdWlyZSBhdCBsZWFzdCBvbmUgcmVzb2x1dGlvbgoATWFya2VyIGlzIG5vdCBjb21wbGlhbnQgd2l0aCBpdHMgcG9zaXRpb24KAFByb2JsZW0gd2l0aCBzZWVrIGZ1bmN0aW9uCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQsIEludmFsaWQgY2Jsa3cvY2Jsa2ggY29tYmluYXRpb24KAEludmFsaWQgbXVsdGlwbGUgY29tcG9uZW50IHRyYW5zZm9ybWF0aW9uCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgb3RoZXIgdGhhbiBhcnJheSBkZWNvcnJlbGF0aW9uCgBUb28gbGFyZ2UgdmFsdWUgZm9yIE5wcG0KAE5vdCBlbm91Z2ggYnl0ZXMgdG8gcmVhZCBOcHBtCgBiYWQgcGxhY2VkIGpwZWcgY29kZXN0cmVhbQoACSBNYWluIGhlYWRlciBzdGFydCBwb3NpdGlvbj0lbGxpCgkgTWFpbiBoZWFkZXIgZW5kIHBvc2l0aW9uPSVsbGkKAE1hcmtlciBzaXplIGluY29uc2lzdGVudCB3aXRoIHN0cmVhbSBsZW5ndGgKAFRpbGUgcGFydCBsZW5ndGggc2l6ZSBpbmNvbnNpc3RlbnQgd2l0aCBzdHJlYW0gbGVuZ3RoCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgZGF0YSBzcGFubmluZwoAV3JvbmcgZmxhZwoARXJyb3Igd2l0aCBGVFlQIHNpZ25hdHVyZSBCb3ggc2l6ZQoARXJyb3Igd2l0aCBKUCBzaWduYXR1cmUgQm94IHNpemUKAEludmFsaWQgcHJlY2luY3Qgc2l6ZQoASW5jb25zaXN0ZW50IG1hcmtlciBzaXplCgBJbnZhbGlkIG1hcmtlciBzaXplCgBFcnJvciB3aXRoIFNJWiBtYXJrZXIgc2l6ZQoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIGEgbmV3IHZhbGlkYXRpb24gcHJvY2VkdXJlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBkZWNvZGUgdGlsZQoARmFpbGVkIHRvIGRlY29kZSB0aGUgY29kZXN0cmVhbSBpbiB0aGUgSlAyIGZpbGUKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRoIGluZGl4IHNodWZmbGUKAENhbm5vdCBhbGxvY2F0ZSBUaWVyIDEgaGFuZGxlCgBObyBkZWNvZGVkIGFyZWEgcGFyYW1ldGVycywgc2V0IHRoZSBkZWNvZGVkIGFyZWEgdG8gdGhlIHdob2xlIGltYWdlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgVGFnLXRyZWUKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlaW5pdGlhbGl6ZSB0aGUgdGFnIHRyZWUKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudCwgSW52YWxpZCB0cmFuc2Zvcm1hdGlvbiBmb3VuZAoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50LiBVbnN1cHBvcnRlZCBNaXhlZCBIVCBjb2RlLWJsb2NrIHN0eWxlIGZvdW5kCgBUaWxlIFkgY29vcmRpbmF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKAFRpbGUgWCBjb29yZGluYXRlcyBhcmUgbm90IHN1cHBvcnRlZAoASW1hZ2UgY29vcmRpbmF0ZXMgYWJvdmUgSU5UX01BWCBhcmUgbm90IHN1cHBvcnRlZAoASlBFRzIwMDAgSGVhZGVyIGJveCBub3QgcmVhZCB5ZXQsICclYyVjJWMlYycgYm94IHdpbGwgYmUgaWdub3JlZAoAb3BqX2oya19tZXJnZV9wcHQoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZAoAb3BqX2oya19idWlsZF90cF9pbmRleF9mcm9tX3RsbSgpOiB0aWxlIGluZGV4IGFsbG9jYXRpb24gZmFpbGVkCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIFNPVCBtYXJrZXIuIFRpbGUgaW5kZXggYWxsb2NhdGlvbiBmYWlsZWQKAElnbm9yaW5nIGloZHIgYm94LiBGaXJzdCBpaGRyIGJveCBhbHJlYWR5IHJlYWQKAFpwcHQgJXUgYWxyZWFkeSByZWFkCgBacHBtICV1IGFscmVhZHkgcmVhZAoAUFRFUk0gY2hlY2sgZmFpbHVyZTogJWQgc3ludGhlc2l6ZWQgMHhGRiBtYXJrZXJzIHJlYWQKAAkJCSBjYmxrdz0yXiVkCgAJCQkgY2Jsa2g9Ml4lZAoACQkJIHFudHN0eT0lZAoAJXMgZHg9JWQsIGR5PSVkCgAJCQkgcm9pc2hpZnQ9JWQKAAkJCSBudW1nYml0cz0lZAoACQkgbnVtbGF5ZXJzPSVkCgAlcyBudW1jb21wcz0lZAoAb3BqX2pwMl9hcHBseV9jZGVmOiBhY249JWQsIG51bWNvbXBzPSVkCgBvcGpfanAyX2FwcGx5X2NkZWY6IGNuPSVkLCBudW1jb21wcz0lZAoACQkJIG51bXJlc29sdXRpb25zPSVkCgAJCSB0eXBlPSUjeCwgcG9zPSVsbGksIGxlbj0lZAoAJXMgc2duZD0lZAoACQkJIHFtZmJpZD0lZAoAJXMgcHJlYz0lZAoACQkgbmIgb2YgdGlsZS1wYXJ0IGluIHRpbGUgWyVkXT0lZAoAJXMgeDE9JWQsIHkxPSVkCgAlcyB4MD0lZCwgeTA9JWQKAEZhaWxlZCB0byBkZWNvZGUgdGlsZSAlZC8lZAoAU2V0dGluZyBkZWNvZGluZyBhcmVhIHRvICVkLCVkLCVkLCVkCgBGYWlsZWQgdG8gZGVjb2RlIGNvbXBvbmVudCAlZAoASW52YWxpZCB2YWx1ZSBmb3IgbnVtcmVzb2x1dGlvbnMgOiAlZCwgbWF4IHZhbHVlIGlzIHNldCBpbiBvcGVuanBlZy5oIGF0ICVkCgBJbnZhbGlkIGNvbXBvbmVudCBudW1iZXI6ICVkLCByZWdhcmRpbmcgdGhlIG51bWJlciBvZiBjb21wb25lbnRzICVkCgBUb28gbWFueSBQT0NzICVkCgBvcGpfajJrX3JlYWRfdGxtKCk6IGludmFsaWQgdGlsZSBudW1iZXIgJWQKAEludmFsaWQgdGlsZSBudW1iZXIgJWQKAEludmFsaWQgdGlsZSBwYXJ0IGluZGV4IGZvciB0aWxlIG51bWJlciAlZC4gR290ICVkLCBleHBlY3RlZCAlZAoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBudW1iZXIgb2YgY29tcG9uZW50IGlzIGlsbGVnYWwgLT4gJWQKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBjaWVsYWIKAENhbm5vdCBhbGxvY2F0ZSBjYmxrLT5kZWNvZGVkX2RhdGEKAEZhaWxlZCB0byBtZXJnZSBQUFQgZGF0YQoARmFpbGVkIHRvIG1lcmdlIFBQTSBkYXRhCgBJbnZhbGlkIG51bWJlciBvZiBsYXllcnMgaW4gQ09EIG1hcmtlciA6ICVkIG5vdCBpbiByYW5nZSBbMS02NTUzNV0KACVzOiVkOmNvbG9yX2NteWtfdG9fcmdiCglDQU4gTk9UIENPTlZFUlQKACVzOiVkOmNvbG9yX2VzeWNjX3RvX3JnYgoJQ0FOIE5PVCBDT05WRVJUCgAlczolZDpjb2xvcl9zeWNjX3RvX3JnYgoJQ0FOIE5PVCBDT05WRVJUCgBTdHJlYW0gdG9vIHNob3J0LCBleHBlY3RlZCBTT1QKAFVuYWJsZSB0byBzZXQgdDEgaGFuZGxlIGFzIFRMUwoAU290IGxlbmd0aCBpcyBsZXNzIHRoYW4gbWFya2VyIHNpemUgKyBtYXJrZXIgSUQKAFN0cmVhbSBkb2VzIG5vdCBlbmQgd2l0aCBFT0MKAENhbm5vdCBoYW5kbGUgYm94IHNpemVzIGhpZ2hlciB0aGFuIDJeMzIKAG9wal9waV9uZXh0X2xyY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JsY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X2NwcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3BjcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JwY2woKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal90MV9kZWNvZGVfY2JsaygpOiB1bnN1cHBvcnRlZCBicG5vX3BsdXNfb25lID0gJWQgPj0gMzEKAEZhaWxlZCB0byBkZWNvZGUgdGlsZSAxLzEKAEluc3VmZmljaWVudCBkYXRhIGZvciBDTUFQIGJveC4KAE5lZWQgdG8gcmVhZCBhIFBDTFIgYm94IGJlZm9yZSB0aGUgQ01BUCBib3guCgBJbnN1ZmZpY2llbnQgZGF0YSBmb3IgQ0RFRiBib3guCgBOdW1iZXIgb2YgY2hhbm5lbCBkZXNjcmlwdGlvbiBpcyBlcXVhbCB0byB6ZXJvIGluIENERUYgYm94LgoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IG5vICdpaGRyJyBib3guCgBOb24gY29uZm9ybWFudCBjb2Rlc3RyZWFtIFRQc290PT1UTnNvdC4KAFN0cmVhbSBlcnJvciB3aGlsZSByZWFkaW5nIEpQMiBIZWFkZXIgYm94OiBib3ggbGVuZ3RoIGlzIGluY29uc2lzdGVudC4KAEJveCBsZW5ndGggaXMgaW5jb25zaXN0ZW50LgoAUmVzb2x1dGlvbiBmYWN0b3IgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHJlc29sdXRpb24gaW4gdGhlIGNvbXBvbmVudC4KAENvbXBvbmVudCBtYXBwaW5nIHNlZW1zIHdyb25nLiBUcnlpbmcgdG8gY29ycmVjdC4KAG9wal9qMmtfYnVpbGRfdHBfaW5kZXhfZnJvbV90bG0oKTogdGlsZSAlZCBoYXMgbm8gcmVnaXN0ZXJlZCB0aWxlLXBhcnQgaW4gVExNIG1hcmtlciBzZWdtZW50cy4KAG9wal9qMmtfcmVhZF90bG0oKTogdG9vIG1hbnkgVExNIG1hcmtlcnMuCgBvcGpfajJrX3JlYWRfdGxtKCk6IGNhbm5vdCBhbGxvY2F0ZSBtX3RpbGVfcGFydF9pbmZvcy4KAEluY29tcGxldGUgY2hhbm5lbCBkZWZpbml0aW9ucy4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEludmFsaWQgY29kZWJsb2NrIGxlbmd0aCB2YWx1ZXMuCgBXZSBkbyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gMyBjb2RpbmcgcGFzc2VzIGluIGFuIEhUIGNvZGVibG9jazsgVGhpcyBjb2RlYmxvY2tzIGhhcyAlZCBwYXNzZXMuCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBUaGVyZSBhcmUgJWQgemVybyBiaXRwbGFuZXMgaW4gJWQgYml0cGxhbmVzLgoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIHRyYW5zZm9ybWF0aW9uIHN0YWdlcy4KAFVua25vd24gbWFya2VyIGhhcyBiZWVuIGRldGVjdGVkIGFuZCBnZW5lcmF0ZWQgZXJyb3IuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3NldHVwX2RlY29kZXIgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3JlYWRfaGVhZGVyIGZ1bmN0aW9uIGlzIG5vdCBhIGRlY29tcHJlc3NvciBoYW5kbGVyLgoARXJyb3IgcmVhZGluZyBUTE0gbWFya2VyLgoAVGlsZXMgZG9uJ3QgYWxsIGhhdmUgdGhlIHNhbWUgZGltZW5zaW9uLiBTa2lwIHRoZSBNQ1Qgc3RlcC4KAE51bWJlciBvZiBjb21wb25lbnRzICglZCkgaXMgaW5jb25zaXN0ZW50IHdpdGggYSBNQ1QuIFNraXAgdGhlIE1DVCBzdGVwLgoASlAyIGJveCB3aGljaCBhcmUgYWZ0ZXIgdGhlIGNvZGVzdHJlYW0gd2lsbCBub3QgYmUgcmVhZCBieSB0aGlzIGZ1bmN0aW9uLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gV2hlbiB0aGUgbnVtYmVyIG9mIHplcm8gcGxhbmVzIGJpdHBsYW5lcyBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGJpdHBsYW5lcywgb25seSB0aGUgY2xlYW51cCBwYXNzIG1ha2VzIHNlbnNlLCBidXQgd2UgaGF2ZSAlZCBwYXNzZXMgaW4gdGhpcyBjb2RlYmxvY2suIFRoZXJlZm9yZSwgb25seSB0aGUgY2xlYW51cCBwYXNzIHdpbGwgYmUgZGVjb2RlZC4gVGhpcyBtZXNzYWdlIHdpbGwgbm90IGJlIGRpc3BsYXllZCBhZ2Fpbi4KAEltYWdlIGhhcyBsZXNzIGNvbXBvbmVudHMgdGhhbiBjb2Rlc3RyZWFtLgoATmVlZCB0byBkZWNvZGUgdGhlIG1haW4gaGVhZGVyIGJlZm9yZSBiZWdpbiB0byBkZWNvZGUgdGhlIHJlbWFpbmluZyBjb2Rlc3RyZWFtLgoAUHNvdCB2YWx1ZSBvZiB0aGUgY3VycmVudCB0aWxlLXBhcnQgaXMgZXF1YWwgdG8gemVybywgd2UgYXNzdW1pbmcgaXQgaXMgdGhlIGxhc3QgdGlsZS1wYXJ0IG9mIHRoZSBjb2Rlc3RyZWFtLgoAQSBtYWxmb3JtZWQgY29kZWJsb2NrIHRoYXQgaGFzIG1vcmUgdGhhbiBvbmUgY29kaW5nIHBhc3MsIGJ1dCB6ZXJvIGxlbmd0aCBmb3IgMm5kIGFuZCBwb3RlbnRpYWxseSB0aGUgM3JkIHBhc3MgaW4gYW4gSFQgY29kZWJsb2NrLgoACQkJIHRpbGUtcGFydFslZF06IHN0YXJfcG9zPSVsbGksIGVuZF9oZWFkZXI9JWxsaSwgZW5kX3Bvcz0lbGxpLgoAVGlsZSAldSBoYXMgVFBzb3QgPT0gMCBhbmQgVE5zb3QgPT0gMCwgYnV0IG5vIG90aGVyIHRpbGUtcGFydHMgd2VyZSBmb3VuZC4gRU9DIGlzIGFsc28gbWlzc2luZy4KAENvbXBvbmVudCAlZCBkb2Vzbid0IGhhdmUgYSBtYXBwaW5nLgoAb3BqX2oya19yZWFkX3RsbSgpOiBUTE0gbWFya2VyIG5vdCBvZiBleHBlY3RlZCBzaXplLgoAQSBjb25mb3JtaW5nIEpQMiByZWFkZXIgc2hhbGwgaWdub3JlIGFsbCBDb2xvdXIgU3BlY2lmaWNhdGlvbiBib3hlcyBhZnRlciB0aGUgZmlyc3QsIHNvIHdlIGlnbm9yZSB0aGlzIG9uZS4KAFRoZSBzaWduYXR1cmUgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSAgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSBmdHlwIGJveCBtdXN0IGJlIHRoZSBzZWNvbmQgYm94IGluIHRoZSBmaWxlLgoARmFpbGVkIHRvIGRlY29kZS4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEluY29ycmVjdCBNRUwgc2VnbWVudCBzZXF1ZW5jZS4KAENvbXBvbmVudCAlZCBpcyBtYXBwZWQgdHdpY2UuCgBvcGpfajJrX3JlYWRfdGxtKCk6IFNUID0gMyBpcyBpbnZhbGlkLgoAT25seSBvbmUgQ01BUCBib3ggaXMgYWxsb3dlZC4KAFdlIG5lZWQgYW4gaW1hZ2UgcHJldmlvdXNseSBjcmVhdGVkLgoASUhEUiBib3hfbWlzc2luZy4gUmVxdWlyZWQuCgBKUDJIIGJveCBtaXNzaW5nLiBSZXF1aXJlZC4KAE5vdCBzdXJlIGhvdyB0aGF0IGhhcHBlbmVkLgoATWFpbiBoZWFkZXIgaGFzIGJlZW4gY29ycmVjdGx5IGRlY29kZWQuCgBUaWxlICVkLyVkIGhhcyBiZWVuIGRlY29kZWQuCgBIZWFkZXIgb2YgdGlsZSAlZCAvICVkIGhhcyBiZWVuIHJlYWQuCgBFbXB0eSBTT1QgbWFya2VyIGRldGVjdGVkOiBQc290PSVkLgoARGlyZWN0IHVzZSBhdCAjJWQgaG93ZXZlciBwY29sPSVkLgoASW1wbGVtZW50YXRpb24gbGltaXRhdGlvbjogZm9yIHBhbGV0dGUgbWFwcGluZywgcGNvbFslZF0gc2hvdWxkIGJlIGVxdWFsIHRvICVkLCBidXQgaXMgZXF1YWwgdG8gJWQuCgBJbnZhbGlkIGNvbXBvbmVudC9wYWxldHRlIGluZGV4IGZvciBkaXJlY3QgbWFwcGluZyAlZC4KAEludmFsaWQgdmFsdWUgZm9yIGNtYXBbJWRdLm10eXAgPSAlZC4KAFBzb3QgdmFsdWUgaXMgbm90IGNvcnJlY3QgcmVnYXJkcyB0byB0aGUgSlBFRzIwMDAgbm9ybTogJWQuCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBWTEMgY29kZSBwcm9kdWNlcyBzaWduaWZpY2FudCBzYW1wbGVzIG91dHNpZGUgdGhlIGNvZGVibG9jayBhcmVhLgoAVW5leHBlY3RlZCBPT00uCgAzMiBiaXRzIGFyZSBub3QgZW5vdWdoIHRvIGRlY29kZSB0aGlzIGNvZGVibG9jaywgc2luY2UgdGhlIG51bWJlciBvZiBiaXRwbGFuZSwgJWQsIGlzIGxhcmdlciB0aGFuIDMwLgoAQm90dG9tIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MT0lZCkgc2hvdWxkIGJlID4gMC4KAFJpZ2h0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MT0lZCkgc2hvdWxkIGJlID4gMC4KAFVwIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MD0lZCkgc2hvdWxkIGJlID49IDAuCgBMZWZ0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MD0lZCkgc2hvdWxkIGJlID49IDAuCgBFcnJvciByZWFkaW5nIFBQVCBtYXJrZXI6IHBhY2tldCBoZWFkZXIgaGF2ZSBiZWVuIHByZXZpb3VzbHkgZm91bmQgaW4gdGhlIG1haW4gaGVhZGVyIChQUE0gbWFya2VyKS4KAFN0YXJ0IHRvIHJlYWQgajJrIG1haW4gaGVhZGVyICglbGxkKS4KAEJvdHRvbSBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFlzaXo9JWQpLgoAVXAgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZc2l6PSVkKS4KAFJpZ2h0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWHNpej0lZCkuCgBMZWZ0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MD0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWHNpej0lZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFlPc2l6PSVkKS4KAFJpZ2h0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWE9zaXo9JWQpLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS4KAFNpemUgeCBvZiB0aGUgZGVjb2RlZCBjb21wb25lbnQgaW1hZ2UgaXMgaW5jb3JyZWN0IChjb21wWyVkXS53PSVkKS4KAFNpemUgeSBvZiB0aGUgZGVjb2RlZCBjb21wb25lbnQgaW1hZ2UgaXMgaW5jb3JyZWN0IChjb21wWyVkXS5oPSVkKS4KAFRpbGUgcmVhZCwgZGVjb2RlZCBhbmQgdXBkYXRlZCBpcyBub3QgdGhlIGRlc2lyZWQgb25lICglZCB2cyAlZCkuCgBJbnZhbGlkIGNvbXBvbmVudCBpbmRleCAlZCAoPj0gJWQpLgoAb3BqX3JlYWRfaGVhZGVyKCkgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgb3BqX3NldF9kZWNvZGVkX2NvbXBvbmVudHMoKS4KAE1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgaW4gb3BqX2pwMl9hcHBseV9wY2xyKCkuCgBpbWFnZS0+Y29tcHNbJWRdLmRhdGEgPT0gTlVMTCBpbiBvcGpfanAyX2FwcGx5X3BjbHIoKS4KAGludmFsaWQgYm94IHNpemUgJWQgKCV4KQoARmFpbCB0byByZWFkIHRoZSBjdXJyZW50IG1hcmtlciBzZWdtZW50ICglI3gpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IElIRFIgdygldSkgaCgldSkgdnMuIFNJWiB3KCV1KSBoKCV1KQoARXJyb3IgcmVhZGluZyBDT0MgbWFya2VyIChiYWQgbnVtYmVyIG9mIGNvbXBvbmVudHMpCgBJbnZhbGlkIG51bWJlciBvZiB0aWxlcyA6ICV1IHggJXUgKG1heGltdW0gZml4ZWQgYnkganBlZzIwMDAgbm9ybSBpcyA2NTUzNSB0aWxlcykKAEludmFsaWQgbnVtYmVyIG9mIGNvbXBvbmVudHMgKGloZHIpCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUgaW1hZ2UgaGVhZGVyIChpaGRyKQoAV3JvbmcgdmFsdWVzIGZvcjogdyglZCkgaCglZCkgbnVtY29tcHMoJWQpIChpaGRyKQoASW52YWxpZCB2YWx1ZXMgZm9yIGNvbXAgPSAlZCA6IGR4PSV1IGR5PSV1IChzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAyNTUgYWNjb3JkaW5nIHRvIHRoZSBKUEVHMjAwMCBub3JtKQoAQmFkIGltYWdlIGhlYWRlciBib3ggKGJhZCBzaXplKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoYmFkIHNpemUpCgBCYWQgQlBDQyBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEVycm9yIHdpdGggU0laIG1hcmtlcjogbmVnYXRpdmUgb3IgemVybyBpbWFnZSBzaXplICglbGxkIHggJWxsZCkKAHNraXA6IHNlZ21lbnQgdG9vIGxvbmcgKCVkKSB3aXRoIG1heCAoJWQpIGZvciBjb2RlYmxvY2sgJWQgKHA9JWQsIGI9JWQsIHI9JWQsIGM9JWQpCgByZWFkOiBzZWdtZW50IHRvbyBsb25nICglZCkgd2l0aCBtYXggKCVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKQoARGVzcGl0ZSBKUDIgQlBDIT0yNTUsIHByZWNpc2lvbiBhbmQvb3Igc2duZCB2YWx1ZXMgZm9yIGNvbXBbJWRdIGlzIGRpZmZlcmVudCB0aGFuIGNvbXBbMF06CiAgICAgICAgWzBdIHByZWMoJWQpIHNnbmQoJWQpIFslZF0gcHJlYyglZCkgc2duZCglZCkKAGJhZCBjb21wb25lbnQgbnVtYmVyIGluIFJHTiAoJWQgd2hlbiB0aGVyZSBhcmUgb25seSAlZCkKAEVycm9yIHdpdGggU0laIG1hcmtlcjogbnVtYmVyIG9mIGNvbXBvbmVudCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSByZW1haW5pbmcgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCAlZCB2cyAlZCkKAEVycm9yIHdpdGggU0laIG1hcmtlcjogaW52YWxpZCB0aWxlIHNpemUgKHRkeDogJWQsIHRkeTogJWQpCgBCYWQgQ09MUiBoZWFkZXIgYm94IChiYWQgc2l6ZTogJWQpCgBCYWQgQ09MUiBoZWFkZXIgYm94IChDSUVMYWIsIGJhZCBzaXplOiAlZCkKAFBURVJNIGNoZWNrIGZhaWx1cmU6ICVkIHJlbWFpbmluZyBieXRlcyBpbiBjb2RlIGJsb2NrICglZCB1c2VkIC8gJWQpCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBPbmUgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb24gaXMgbm90IG1ldDogMiA8PSBTY3VwIDw9IG1pbihMY3VwLCA0MDc5KQoASW52YWxpZCB2YWx1ZXMgZm9yIGNvbXAgPSAlZCA6IHByZWM9JXUgKHNob3VsZCBiZSBiZXR3ZWVuIDEgYW5kIDM4IGFjY29yZGluZyB0byB0aGUgSlBFRzIwMDAgbm9ybS4gT3BlbkpwZWcgb25seSBzdXBwb3J0cyB1cCB0byAzMSkKAEludmFsaWQgYml0IG51bWJlciAlZCBpbiBvcGpfdDJfcmVhZF9wYWNrZXRfaGVhZGVyKCkKAFN0cmVhbSBlcnJvciEKAEVycm9yIG9uIHdyaXRpbmcgc3RyZWFtIQoAU3RyZWFtIHJlYWNoZWQgaXRzIGVuZCAhCgBFeHBlY3RlZCBhIFNPQyBtYXJrZXIgCgBJbnZhbGlkIGJveCBzaXplICVkIGZvciBib3ggJyVjJWMlYyVjJy4gTmVlZCAlZCBieXRlcywgJWQgYnl0ZXMgcmVtYWluaW5nIAoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gRGVjb2RpbmcgdGhpcyBjb2RlYmxvY2sgaXMgc3RvcHBlZC4gVV9xIGlzIGxhcmdlciB0aGFuIHplcm8gYml0cGxhbmVzICsgMSAKAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFVfcSBpc2xhcmdlciB0aGFuIGJpdHBsYW5lcyArIDEgCgBDT0xSIEJPWCBtZXRoIHZhbHVlIGlzIG5vdCBhIHJlZ3VsYXIgdmFsdWUgKCVkKSwgc28gd2Ugd2lsbCBpZ25vcmUgdGhlIGVudGlyZSBDb2xvdXIgU3BlY2lmaWNhdGlvbiBib3guIAoAV2hpbGUgcmVhZGluZyBDQ1BfUU5UU1RZIGVsZW1lbnQgaW5zaWRlIFFDRCBvciBRQ0MgbWFy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AAAAAFQAAKBTAAABJAAAAAAAABBUAACwUwAAASQAAAEAAAAgVAAAwFMAAAEiAAAAAAAAMFQAANBTAAABIgAAAQAAAEBUAADgUwAAARwAAAAAAABQVAAA8FMAAAEcAAABAAAAYFQAAABUAAABGAAAAAAAAHBUAAAQVAAAARgAAAEAAACAVAAAIFQAAAEWAAAAAAAAkFQAADBUAAABFgAAAQAAAKBUAABAVAAAARQAAAAAAACwVAAAUFQAAAEUAAABAAAAwFQAAGBUAAABEgAAAAAAANBUAABwVAAAARIAAAEAAADgVAAAgFQAAAERAAAAAAAA8FQAAJBUAAABEQAAAQAAAABVAACgVAAAwQoAAAAAAAAQVQAAsFQAAMEKAAABAAAAIFUAAMBUAADBCQAAAAAAADBVAADQVAAAwQkAAAEAAABAVQAA4FQAAKEIAAAAAAAAUFUAAPBUAAChCAAAAQAAAGBVAAAAVQAAIQUAAAAAAABwVQAAEFUAACEFAAABAAAAgFUAACBVAABBBAAAAAAAAJBVAAAwVQAAQQQAAAEAAACgVQAAQFUAAKECAAAAAAAAsFUAAFBVAAChAgAAAQAAAMBVAABgVQAAIQIAAAAAAADQVQAAcFUAACECAAABAAAA4FUAAIBVAABBAQAAAAAAAPBVAACQVQAAQQEAAAEAAAAAVgAAoFUAABEBAAAAAAAAEFYAALBVAAARAQAAAQAAACBWAADAVQAAhQAAAAAAAAAwVgAA0FUAAIUAAAABAAAAQFYAAOBVAABJAAAAAAAAAFBWAADwVQAASQAAAAEAAABgVgAAAFYAACUAAAAAAAAAcFYAABBWAAAlAAAAAQAAAIBWAAAgVgAAFQAAAAAAAACQVgAAMFYAABUAAAABAAAAoFYAAEBWAAAJAAAAAAAAALBWAABQVgAACQAAAAEAAADAVgAAYFYAAAUAAAAAAAAA0FYAAHBWAAAFAAAAAQAAAOBWAACAVgAAAQAAAAAAAADQVgAAkFYAAAEAAAABAAAA4FYAAKBWAAABVgAAAAAAAPBWAADwVgAAAVYAAAEAAAAAVwAAAFcAAAABAwMBAgMDBQYHBwYGBwcAAQMDAQIDAwUGBwcGBgcHBQYHBwYGBwcICAgICAgICAUGBwcGBgcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAgIDAwICAwMGBgcHBgYHBwICAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAAEFBgECBgYDAwcHAwMHBwABBQYBAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwECBgYCAgYGAwMHBwMDBwcBAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcFBggIBgYICAcHCAgHBwgIBQYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAECBgYCAgYGAwMHBwMDBwcBAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcCAgYGAgIGBgMDBwcDAwcHAgIGBgICBgYDAwcHAwMHBwMDBwcDAwcHBAQHBwQEBwcDAwcHAwMHBwQEBwcEBAcHBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgGBggIBgYICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgAAQMDAQIDAwUGBwcGBgcHAAEDAwECAwMFBgcHBgYHBwUGBwcGBgcHCAgICAgICAgFBgcHBgYHBwgICAgICAgIAQIDAwICAwMGBgcHBgYHBwECAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAQIDAwICAwMGBgcHBgYHBwECAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAICAwMCAgMDBgYHBwYGBwcCAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAADAQQDBgQHAQQCBQQHBQcAAwEEAwYEBwEEAgUEBwUHAQQCBQQHBQcCBQIFBQcFBwEEAgUEBwUHAgUCBQUHBQcDBgQHBggHCAQHBQcHCAcIAwYEBwYIBwgEBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgEBwUHBwgHCAUHBQcHCAcIAQQCBQQHBQcCBQIFBQcFBwEEAgUEBwUHAgUCBQUHBQcCBQIFBQcFBwIFAgUFBwUHAgUCBQUHBQcCBQIFBQcFBwQHBQcHCAcIBQcFBwcIBwgEBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgDBgQHBggHCAQHBQcHCAcIAwYEBwYIBwgEBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgEBwUHBwgHCAUHBQcHCAcIBggHCAgICAgHCAcICAgICAYIBwgICAgIBwgHCAgICAgH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\";\n return f;\n }\n var wasmBinaryFile;\n function getBinarySync(file) {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n var binary = tryParseAsDataURI(file);\n if (binary) {\n return binary;\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw 'sync fetching of the wasm failed: you can preload it to Module[\"wasmBinary\"] manually, or emcc.py will do that for you when generating HTML (but not JS)';\n }\n function instantiateSync(file, info) {\n var module;\n var binary = getBinarySync(file);\n module = new WebAssembly.Module(binary);\n var instance = new WebAssembly.Instance(module, info);\n return [instance, module];\n }\n function getWasmImports() {\n return {\n a: wasmImports\n };\n }\n function createWasm() {\n function receiveInstance(instance, module) {\n wasmExports = instance.exports;\n wasmMemory = wasmExports[\"t\"];\n updateMemoryViews();\n addOnInit(wasmExports[\"u\"]);\n removeRunDependency(\"wasm-instantiate\");\n return wasmExports;\n }\n addRunDependency(\"wasm-instantiate\");\n var info = getWasmImports();\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(`Module.instantiateWasm callback failed with error: ${e}`);\n readyPromiseReject(e);\n }\n }\n wasmBinaryFile ??= findWasmBinary();\n var result = instantiateSync(wasmBinaryFile, info);\n return receiveInstance(result[0]);\n }\n class ExitStatus {\n name = \"ExitStatus\";\n constructor(status) {\n this.message = `Program terminated with exit(${status})`;\n this.status = status;\n }\n }\n var callRuntimeCallbacks = callbacks => {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n };\n var noExitRuntime = Module[\"noExitRuntime\"] || true;\n var __abort_js = () => abort(\"\");\n var __emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num);\n var runtimeKeepaliveCounter = 0;\n var __emscripten_runtime_keepalive_clear = () => {\n noExitRuntime = false;\n runtimeKeepaliveCounter = 0;\n };\n var timers = {};\n var handleException = e => {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n };\n var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;\n var _proc_exit = code => {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n Module[\"onExit\"]?.(code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n };\n var exitJS = (status, implicit) => {\n EXITSTATUS = status;\n _proc_exit(status);\n };\n var _exit = exitJS;\n var maybeExit = () => {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n };\n var callUserCallback = func => {\n if (ABORT) {\n return;\n }\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n };\n var _emscripten_get_now = () => performance.now();\n var __setitimer_js = (which, timeout_ms) => {\n if (timers[which]) {\n clearTimeout(timers[which].id);\n delete timers[which];\n }\n if (!timeout_ms) return 0;\n var id = setTimeout(() => {\n delete timers[which];\n callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));\n }, timeout_ms);\n timers[which] = {\n id,\n timeout_ms\n };\n return 0;\n };\n function _copy_pixels_1(compG_ptr, nb_pixels) {\n compG_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels);\n const compG = Module.HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n imageData.set(compG);\n }\n function _copy_pixels_3(compR_ptr, compG_ptr, compB_ptr, nb_pixels) {\n compR_ptr >>= 2;\n compG_ptr >>= 2;\n compB_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 3);\n const compR = Module.HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n const compG = Module.HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n const compB = Module.HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[3 * i] = compR[i];\n imageData[3 * i + 1] = compG[i];\n imageData[3 * i + 2] = compB[i];\n }\n }\n function _copy_pixels_4(compR_ptr, compG_ptr, compB_ptr, compA_ptr, nb_pixels) {\n compR_ptr >>= 2;\n compG_ptr >>= 2;\n compB_ptr >>= 2;\n compA_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n const compR = Module.HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n const compG = Module.HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n const compB = Module.HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n const compA = Module.HEAP32.subarray(compA_ptr, compA_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[4 * i] = compR[i];\n imageData[4 * i + 1] = compG[i];\n imageData[4 * i + 2] = compB[i];\n imageData[4 * i + 3] = compA[i];\n }\n }\n var getHeapMax = () => 2147483648;\n var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;\n var growMemory = size => {\n var b = wasmMemory.buffer;\n var pages = (size - b.byteLength + 65535) / 65536 | 0;\n try {\n wasmMemory.grow(pages);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n };\n var _emscripten_resize_heap = requestedSize => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = growMemory(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n };\n var ENV = {};\n var getExecutableName = () => thisProgram || \"./this.program\";\n var getEnvStrings = () => {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n USER: \"web_user\",\n LOGNAME: \"web_user\",\n PATH: \"/\",\n PWD: \"/\",\n HOME: \"/home/web_user\",\n LANG: lang,\n _: getExecutableName()\n };\n for (var x in ENV) {\n if (ENV[x] === undefined) delete env[x];else env[x] = ENV[x];\n }\n var strings = [];\n for (var x in env) {\n strings.push(`${x}=${env[x]}`);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n };\n var stringToAscii = (str, buffer) => {\n for (var i = 0; i < str.length; ++i) {\n HEAP8[buffer++] = str.charCodeAt(i);\n }\n HEAP8[buffer] = 0;\n };\n var _environ_get = (__environ, environ_buf) => {\n var bufSize = 0;\n getEnvStrings().forEach((string, i) => {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n stringToAscii(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n };\n var _environ_sizes_get = (penviron_count, penviron_buf_size) => {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(string => bufSize += string.length + 1);\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n };\n var _fd_close = fd => 52;\n var convertI32PairToI53Checked = (lo, hi) => hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n return 70;\n }\n var printCharBuffers = [null, [], []];\n var UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder() : undefined;\n var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n var str = \"\";\n while (idx < endPtr) {\n var u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n return str;\n };\n var printChar = (stream, curr) => {\n var buffer = printCharBuffers[stream];\n if (curr === 0 || curr === 10) {\n (stream === 1 ? out : err)(UTF8ArrayToString(buffer));\n buffer.length = 0;\n } else {\n buffer.push(curr);\n }\n };\n var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n var _fd_write = (fd, iov, iovcnt, pnum) => {\n var num = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n for (var j = 0; j < len; j++) {\n printChar(fd, HEAPU8[ptr + j]);\n }\n num += len;\n }\n HEAPU32[pnum >> 2] = num;\n return 0;\n };\n function _gray_to_rgba(compG_ptr, nb_pixels) {\n compG_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n const compG = Module.HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[4 * i] = imageData[4 * i + 1] = imageData[4 * i + 2] = compG[i];\n imageData[4 * i + 3] = 255;\n }\n }\n function _graya_to_rgba(compG_ptr, compA_ptr, nb_pixels) {\n compG_ptr >>= 2;\n compA_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n const compG = Module.HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n const compA = Module.HEAP32.subarray(compA_ptr, compA_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[4 * i] = imageData[4 * i + 1] = imageData[4 * i + 2] = compG[i];\n imageData[4 * i + 3] = compA[i];\n }\n }\n function _jsPrintWarning(message_ptr) {\n const message = UTF8ToString(message_ptr);\n (Module.warn || console.warn)(`OpenJPEG: ${message}`);\n }\n function _rgb_to_rgba(compR_ptr, compG_ptr, compB_ptr, nb_pixels) {\n compR_ptr >>= 2;\n compG_ptr >>= 2;\n compB_ptr >>= 2;\n const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n const compR = Module.HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n const compG = Module.HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n const compB = Module.HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n for (let i = 0; i < nb_pixels; i++) {\n imageData[4 * i] = compR[i];\n imageData[4 * i + 1] = compG[i];\n imageData[4 * i + 2] = compB[i];\n imageData[4 * i + 3] = 255;\n }\n }\n function _storeErrorMessage(message_ptr) {\n const message = UTF8ToString(message_ptr);\n if (!Module.errorMessages) {\n Module.errorMessages = message;\n } else {\n Module.errorMessages += \"\\n\" + message;\n }\n }\n var wasmImports = {\n m: __abort_js,\n c: __emscripten_memcpy_js,\n l: __emscripten_runtime_keepalive_clear,\n n: __setitimer_js,\n g: _copy_pixels_1,\n f: _copy_pixels_3,\n e: _copy_pixels_4,\n o: _emscripten_resize_heap,\n p: _environ_get,\n q: _environ_sizes_get,\n r: _fd_close,\n j: _fd_seek,\n b: _fd_write,\n s: _gray_to_rgba,\n i: _graya_to_rgba,\n d: _jsPrintWarning,\n k: _proc_exit,\n h: _rgb_to_rgba,\n a: _storeErrorMessage\n };\n var wasmExports = createWasm();\n var ___wasm_call_ctors = wasmExports[\"u\"];\n var _malloc = Module[\"_malloc\"] = wasmExports[\"v\"];\n var _free = Module[\"_free\"] = wasmExports[\"w\"];\n var _jp2_decode = Module[\"_jp2_decode\"] = wasmExports[\"y\"];\n var __emscripten_timeout = wasmExports[\"z\"];\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function run() {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n readyPromiseResolve(Module);\n Module[\"onRuntimeInitialized\"]?.();\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(() => {\n setTimeout(() => Module[\"setStatus\"](\"\"), 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n }\n run();\n moduleRtn = Module;\n return moduleRtn;\n };\n})();\n/* harmony default export */ const openjpeg = (OpenJPEG);\n;// ./src/core/jpx.js\n\n\n\nclass JpxError extends BaseException {\n constructor(msg) {\n super(msg, \"JpxError\");\n }\n}\nclass JpxImage {\n static #module = null;\n static decode(data, decoderOptions) {\n decoderOptions ||= {};\n this.#module ||= openjpeg({\n warn: warn\n });\n const imageData = this.#module.decode(data, decoderOptions);\n if (typeof imageData === \"string\") {\n throw new JpxError(imageData);\n }\n return imageData;\n }\n static cleanup() {\n this.#module = null;\n }\n static 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 if (code === 0xff51) {\n stream.skip(4);\n const Xsiz = stream.getInt32() >>> 0;\n const Ysiz = stream.getInt32() >>> 0;\n const XOsiz = stream.getInt32() >>> 0;\n const YOsiz = stream.getInt32() >>> 0;\n stream.skip(16);\n const Csiz = stream.getUint16();\n return {\n width: Xsiz - XOsiz,\n height: Ysiz - YOsiz,\n bitsPerComponent: 8,\n componentsCount: Csiz\n };\n }\n }\n throw new JpxError(\"No size marker found in JPX stream\");\n }\n}\n\n;// ./src/core/jpx_stream.js\n\n\n\nclass JpxStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n get bytes() {\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n ensureBuffer(requested) {}\n readBlock(decoderOptions) {\n this.decodeImage(null, decoderOptions);\n }\n decodeImage(bytes, decoderOptions) {\n if (this.eof) {\n return this.buffer;\n }\n bytes ||= this.bytes;\n this.buffer = JpxImage.decode(bytes, decoderOptions);\n this.bufferLength = this.buffer.length;\n this.eof = true;\n return this.buffer;\n }\n get canAsyncDecodeImageFromBuffer() {\n return this.stream.isAsync;\n }\n}\n\n;// ./src/core/lzw_stream.js\n\nclass LZWStream extends DecodeStream {\n constructor(str, maybeLength, earlyChange) {\n super(maybeLength);\n this.str = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\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 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 readBlock() {\n const blockSize = 512,\n decodedSizeDelta = blockSize;\n let estimatedDecodedSize = blockSize * 2;\n let i, j, q;\n const lzwState = this.lzwState;\n if (!lzwState) {\n return;\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 let decodedLength = 0;\n let currentBufferLength = this.bufferLength;\n let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\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 if (hasPrev) {\n dictionaryPrevCodes[nextCode] = prevCode;\n dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n dictionaryValues[nextCode] = currentSequence[0];\n nextCode++;\n codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;\n }\n prevCode = code;\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 this.bufferLength = currentBufferLength;\n }\n}\n\n;// ./src/core/predictor_stream.js\n\n\n\nclass PredictorStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n if (!(params instanceof Dict)) {\n return str;\n }\n const predictor = this.predictor = params.get(\"Predictor\") || 1;\n if (predictor <= 1) {\n return str;\n }\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n this.readBlock = predictor === 2 ? this.readBlockTiff : this.readBlockPng;\n this.str = str;\n this.dict = str.dict;\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 this.pixBytes = colors * bits + 7 >> 3;\n this.rowBytes = columns * colors * bits + 7 >> 3;\n return this;\n }\n readBlockTiff() {\n const rowBytes = this.rowBytes;\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n const bits = this.bits;\n const colors = this.colors;\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n let inbuf = 0,\n outbuf = 0;\n let inbits = 0,\n outbits = 0;\n let pos = bufferLength;\n let i;\n if (bits === 1 && colors === 1) {\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 = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 0xff) << 8) + (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] = 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++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1);\n }\n }\n this.bufferLength += rowBytes;\n }\n readBlockPng() {\n const rowBytes = this.rowBytes;\n const pixBytes = this.pixBytes;\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 const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\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] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff;\n j++;\n }\n break;\n case 4:\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 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 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\n;// ./src/core/run_length_stream.js\n\nclass RunLengthStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n this.str = str;\n this.dict = str.dict;\n }\n readBlock() {\n const repeatHeader = this.str.getBytes(2);\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n let buffer;\n let bufferLength = this.bufferLength;\n let n = repeatHeader[0];\n if (n < 128) {\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\n;// ./src/core/parser.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nfunction getInlineImageCacheKey(bytes) {\n const strBuf = [],\n ii = bytes.length;\n let i = 0;\n while (i < ii - 1) {\n strBuf.push(bytes[i++] << 8 | bytes[i++]);\n }\n if (i < ii) {\n strBuf.push(bytes[i]);\n }\n return ii + \"_\" + String.fromCharCode.apply(null, strBuf);\n}\nclass Parser {\n constructor({\n lexer,\n xref,\n allowStreams = false,\n recoveryMode = false\n }) {\n this.lexer = lexer;\n this.xref = xref;\n this.allowStreams = allowStreams;\n this.recoveryMode = recoveryMode;\n this.imageCache = Object.create(null);\n this._imageId = 0;\n this.refill();\n }\n refill() {\n this.buf1 = this.lexer.getObj();\n this.buf2 = this.lexer.getObj();\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 tryShift() {\n try {\n this.shift();\n return true;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n return false;\n }\n }\n getObj(cipherTransform = null) {\n const buf1 = this.buf1;\n this.shift();\n if (buf1 instanceof Cmd) {\n switch (buf1.cmd) {\n case \"BI\":\n return this.makeInlineImage(cipherTransform);\n case \"[\":\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 \"<<\":\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 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 if (isCmd(this.buf2, \"stream\")) {\n return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict;\n }\n this.shift();\n return dict;\n default:\n return buf1;\n }\n }\n if (Number.isInteger(buf1)) {\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 if (typeof buf1 === \"string\") {\n if (cipherTransform) {\n return cipherTransform.decryptString(buf1);\n }\n return buf1;\n }\n return buf1;\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 {\n knownCommands\n } = this.lexer,\n startPos = stream.pos,\n n = 15;\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 if (ch === SPACE || ch === LF || ch === CR) {\n maybeEIPos = stream.pos;\n const followingBytes = stream.peekBytes(n);\n const ii = followingBytes.length;\n if (ii === 0) {\n break;\n }\n for (let i = 0; i < ii; i++) {\n ch = followingBytes[i];\n if (ch === NUL && followingBytes[i + 1] !== NUL) {\n continue;\n }\n if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n state = 0;\n break;\n }\n }\n if (state !== 2) {\n continue;\n }\n if (!knownCommands) {\n warn(\"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\");\n continue;\n }\n const tmpLexer = new Lexer(new Stream(followingBytes.slice()), knownCommands);\n tmpLexer._hexStringWarn = () => {};\n let numArgs = 0;\n while (true) {\n const nextObj = tmpLexer.getObj();\n if (nextObj === EOF) {\n state = 0;\n break;\n }\n if (nextObj instanceof Cmd) {\n const knownCommand = knownCommands[nextObj.cmd];\n if (!knownCommand) {\n state = 0;\n break;\n } else if (knownCommand.variableArgs ? numArgs <= knownCommand.numArgs : numArgs === knownCommand.numArgs) {\n break;\n }\n numArgs = 0;\n continue;\n }\n numArgs++;\n }\n if (state === 2) {\n break;\n }\n } else {\n state = 0;\n }\n }\n }\n if (ch === -1) {\n warn(\"findDefaultInlineStreamEnd: \" + \"Reached the end of the stream without finding a valid EI marker\");\n if (maybeEIPos) {\n warn('... trying to recover by using the last \"EI\" occurrence.');\n stream.skip(-(stream.pos - maybeEIPos));\n }\n }\n let endOffset = 4;\n stream.skip(-endOffset);\n ch = stream.peekByte();\n stream.skip(endOffset);\n if (!isWhiteSpace(ch)) {\n endOffset--;\n }\n return stream.pos - endOffset - startPos;\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 continue;\n }\n switch (stream.getByte()) {\n case 0x00:\n break;\n case 0xff:\n stream.skip(-1);\n break;\n case 0xd9:\n foundEOI = true;\n break;\n case 0xc0:\n case 0xc1:\n case 0xc2:\n case 0xc3:\n case 0xc5:\n case 0xc6:\n case 0xc7:\n case 0xc9:\n case 0xca:\n case 0xcb:\n case 0xcd:\n case 0xce:\n case 0xcf:\n case 0xc4:\n case 0xcc:\n case 0xda:\n case 0xdb:\n case 0xdc:\n case 0xdd:\n case 0xde:\n case 0xdf:\n case 0xe0:\n case 0xe1:\n case 0xe2:\n case 0xe3:\n case 0xe4:\n case 0xe5:\n case 0xe6:\n case 0xe7:\n case 0xe8:\n case 0xe9:\n case 0xea:\n case 0xeb:\n case 0xec:\n case 0xed:\n case 0xee:\n case 0xef:\n case 0xfe:\n markerLength = stream.getUint16();\n if (markerLength > 2) {\n stream.skip(markerLength - 2);\n } else {\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(\"Inline DCTDecode image stream: \" + \"EOI marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return 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 ch = stream.peekByte();\n while (isWhiteSpace(ch)) {\n stream.skip();\n ch = stream.peekByte();\n }\n if (ch === GT) {\n stream.skip();\n break;\n }\n if (stream.pos > tildePos) {\n const maybeEI = stream.peekBytes(2);\n if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) {\n break;\n }\n }\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\"Inline ASCII85Decode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return 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(\"Inline ASCIIHexDecode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n stream.skip(-length);\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\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 makeInlineImage(cipherTransform) {\n const lexer = this.lexer;\n const stream = lexer.stream;\n const dictMap = Object.create(null);\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 dictMap[key] = this.getObj(cipherTransform);\n }\n if (lexer.beginInlineImagePos !== -1) {\n dictLength = stream.pos - lexer.beginInlineImagePos;\n }\n const filter = this.xref.fetchIfRef(dictMap.F || dictMap.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 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 cacheKey;\n if (length < MAX_LENGTH_TO_CACHE && dictLength > 0) {\n const initialStreamPos = stream.pos;\n stream.pos = lexer.beginInlineImagePos;\n cacheKey = getInlineImageCacheKey(stream.getBytes(dictLength + length));\n stream.pos = initialStreamPos;\n const cacheEntry = this.imageCache[cacheKey];\n if (cacheEntry !== undefined) {\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n cacheEntry.reset();\n return cacheEntry;\n }\n }\n const dict = new Dict(this.xref);\n for (const key in dictMap) {\n dict.set(key, dictMap[key]);\n }\n let imageStream = stream.makeSubStream(startPos, length, dict);\n if (cipherTransform) {\n imageStream = cipherTransform.createStream(imageStream, length);\n }\n imageStream = this.filter(imageStream, dict, length);\n imageStream.dict = dict;\n if (cacheKey !== undefined) {\n imageStream.cacheKey = `inline_img_${++this._imageId}`;\n this.imageCache[cacheKey] = imageStream;\n }\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n return imageStream;\n }\n #findStreamLength(startPos) {\n const {\n stream\n } = this.lexer;\n stream.pos = startPos;\n const SCAN_BLOCK_LENGTH = 2048;\n const signatureLength = \"endstream\".length;\n const END_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64]);\n const endLength = END_SIGNATURE.length;\n const PARTIAL_SIGNATURE = [new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]), new Uint8Array([0x73, 0x74, 0x65, 0x61, 0x6d]), new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61])];\n const normalLength = signatureLength - endLength;\n while (stream.pos < stream.end) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n const scanLength = scanBytes.length - signatureLength;\n if (scanLength <= 0) {\n break;\n }\n let pos = 0;\n while (pos < scanLength) {\n let j = 0;\n while (j < endLength && scanBytes[pos + j] === END_SIGNATURE[j]) {\n j++;\n }\n if (j >= endLength) {\n let found = false;\n for (const part of PARTIAL_SIGNATURE) {\n const partLen = part.length;\n let k = 0;\n while (k < partLen && scanBytes[pos + j + k] === part[k]) {\n k++;\n }\n if (k >= normalLength) {\n found = true;\n break;\n }\n if (k >= partLen) {\n const lastByte = scanBytes[pos + j + k];\n if (isWhiteSpace(lastByte)) {\n info(`Found \"${bytesToString([...END_SIGNATURE, ...part])}\" when ` + \"searching for endstream command.\");\n found = true;\n }\n break;\n }\n }\n if (found) {\n stream.pos += pos;\n return stream.pos - startPos;\n }\n }\n pos++;\n }\n stream.pos += scanLength;\n }\n return -1;\n }\n makeStream(dict, cipherTransform) {\n const lexer = this.lexer;\n let stream = lexer.stream;\n lexer.skipToNextLine();\n const startPos = stream.pos - 1;\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 stream.pos = startPos + length;\n lexer.nextChar();\n if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n this.shift();\n } else {\n length = this.#findStreamLength(startPos);\n if (length < 0) {\n throw new FormatError(\"Missing endstream command.\");\n }\n lexer.nextChar();\n this.shift();\n this.shift();\n }\n this.shift();\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 filter(stream, dict, length) {\n let filter = dict.get(\"F\", \"Filter\");\n let params = dict.get(\"DP\", \"DecodeParms\");\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 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 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 maybeLength = null;\n }\n }\n return stream;\n }\n makeFilter(stream, name, maybeLength, params) {\n if (maybeLength === 0) {\n warn(`Empty \"${name}\" stream.`);\n return new NullStream();\n }\n try {\n switch (name) {\n case \"Fl\":\n case \"FlateDecode\":\n if (params) {\n return new PredictorStream(new FlateStream(stream, maybeLength), maybeLength, params);\n }\n return new FlateStream(stream, maybeLength);\n case \"LZW\":\n case \"LZWDecode\":\n let earlyChange = 1;\n if (params) {\n if (params.has(\"EarlyChange\")) {\n earlyChange = params.get(\"EarlyChange\");\n }\n return new PredictorStream(new LZWStream(stream, maybeLength, earlyChange), maybeLength, params);\n }\n return new LZWStream(stream, maybeLength, earlyChange);\n case \"DCT\":\n case \"DCTDecode\":\n return new JpegStream(stream, maybeLength, params);\n case \"JPX\":\n case \"JPXDecode\":\n return new JpxStream(stream, maybeLength, params);\n case \"A85\":\n case \"ASCII85Decode\":\n return new Ascii85Stream(stream, maybeLength);\n case \"AHx\":\n case \"ASCIIHexDecode\":\n return new AsciiHexStream(stream, maybeLength);\n case \"CCF\":\n case \"CCITTFaxDecode\":\n return new CCITTFaxStream(stream, maybeLength, params);\n case \"RL\":\n case \"RunLengthDecode\":\n return new RunLengthStream(stream, maybeLength);\n case \"JBIG2Decode\":\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}\nconst specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 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, 0, 0, 2, 0, 2, 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, 0, 0, 0, 2, 0, 2, 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, 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, 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, 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, 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];\nfunction toHexDigit(ch) {\n if (ch >= 0x30 && ch <= 0x39) {\n return ch & 0x0f;\n }\n if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n return (ch & 0x0f) + 9;\n }\n return -1;\n}\nclass Lexer {\n constructor(stream, knownCommands = null) {\n this.stream = stream;\n this.nextChar();\n this.strBuf = [];\n this.knownCommands = knownCommands;\n this._hexStringNumWarn = 0;\n this.beginInlineImagePos = -1;\n }\n nextChar() {\n return this.currentChar = this.stream.getByte();\n }\n peekChar() {\n return this.stream.peekByte();\n }\n getNumber() {\n let ch = this.currentChar;\n let eNotation = false;\n let divideBy = 0;\n let sign = 1;\n if (ch === 0x2d) {\n sign = -1;\n ch = this.nextChar();\n if (ch === 0x2d) {\n ch = this.nextChar();\n }\n } else if (ch === 0x2b) {\n ch = this.nextChar();\n }\n if (ch === 0x0a || ch === 0x0d) {\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 < 0x30 || ch > 0x39) {\n const msg = `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`;\n if (isWhiteSpace(ch) || ch === -1) {\n info(`Lexer.getNumber - \"${msg}\".`);\n return 0;\n }\n throw new FormatError(msg);\n }\n let baseValue = ch - 0x30;\n let powerValue = 0;\n let powerValueSign = 1;\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= 0x30 && ch <= 0x39) {\n const currentDigit = ch - 0x30;\n if (eNotation) {\n powerValue = powerValue * 10 + currentDigit;\n } else {\n if (divideBy !== 0) {\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 break;\n }\n } else if (ch === 0x2d) {\n warn(\"Badly formatted number: minus sign in the middle\");\n } else if (ch === 0x45 || ch === 0x65) {\n ch = this.peekChar();\n if (ch === 0x2b || ch === 0x2d) {\n powerValueSign = ch === 0x2d ? -1 : 1;\n this.nextChar();\n } else if (ch < 0x30 || ch > 0x39) {\n break;\n }\n eNotation = true;\n } else {\n break;\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 getString() {\n let numParen = 1;\n let done = false;\n const strBuf = this.strBuf;\n strBuf.length = 0;\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();\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 strBuf.push(\"\\n\");\n break;\n case 0x72:\n strBuf.push(\"\\r\");\n break;\n case 0x74:\n strBuf.push(\"\\t\");\n break;\n case 0x62:\n strBuf.push(\"\\b\");\n break;\n case 0x66:\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:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n let x = ch & 0x0f;\n ch = this.nextChar();\n charBuffered = true;\n if (ch >= 0x30 && ch <= 0x37) {\n x = (x << 3) + (ch & 0x0f);\n ch = this.nextChar();\n if (ch >= 0x30 && ch <= 0x37) {\n charBuffered = false;\n x = (x << 3) + (ch & 0x0f);\n }\n }\n strBuf.push(String.fromCharCode(x));\n break;\n case 0x0d:\n if (this.peekChar() === 0x0a) {\n this.nextChar();\n }\n break;\n case 0x0a:\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 getName() {\n let ch, previousCh;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n if (ch === 0x23) {\n ch = this.nextChar();\n if (specialChars[ch]) {\n warn(\"Lexer_getName: \" + \"NUMBER SIGN (#) should be followed by a hexadecimal number.\");\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(`Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` + \"in hexadecimal number.\");\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 _hexStringWarn(ch) {\n const MAX_HEX_STRING_NUM_WARN = 5;\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 return;\n }\n warn(`getHexString - ignoring invalid character: ${ch}`);\n }\n getHexString() {\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.currentChar;\n let firstDigit = -1,\n digit = -1;\n this._hexStringNumWarn = 0;\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 digit = toHexDigit(ch);\n if (digit === -1) {\n this._hexStringWarn(ch);\n } else if (firstDigit === -1) {\n firstDigit = digit;\n } else {\n strBuf.push(String.fromCharCode(firstDigit << 4 | digit));\n firstDigit = -1;\n }\n ch = this.nextChar();\n }\n }\n if (firstDigit !== -1) {\n strBuf.push(String.fromCharCode(firstDigit << 4));\n }\n return strBuf.join(\"\");\n }\n getObj() {\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 === 0x0a || ch === 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 switch (ch | 0) {\n case 0x30:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n case 0x38:\n case 0x39:\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 case 0x5b:\n this.nextChar();\n return Cmd.get(\"[\");\n case 0x5d:\n this.nextChar();\n return Cmd.get(\"]\");\n case 0x3c:\n ch = this.nextChar();\n if (ch === 0x3c) {\n this.nextChar();\n return Cmd.get(\"<<\");\n }\n return this.getHexString();\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 this.nextChar();\n throw new FormatError(`Illegal character: ${ch}`);\n }\n let str = String.fromCharCode(ch);\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?.[str] !== undefined;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\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?.[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 if (str === \"BI\") {\n this.beginInlineImagePos = this.stream.pos;\n }\n return Cmd.get(str);\n }\n skipToNextLine() {\n let ch = this.currentChar;\n while (ch >= 0) {\n if (ch === 0x0d) {\n ch = this.nextChar();\n if (ch === 0x0a) {\n this.nextChar();\n }\n break;\n } else if (ch === 0x0a) {\n this.nextChar();\n break;\n }\n ch = this.nextChar();\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(`The \"${name}\" parameter in the linearization ` + \"dictionary is invalid.\");\n }\n function getHints(linDict) {\n const hints = linDict.get(\"H\");\n let hintsLength;\n if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) {\n for (let index = 0; index < hintsLength; index++) {\n const hint = hints[index];\n if (!(Number.isInteger(hint) && hint > 0)) {\n throw new Error(`Hint (${index}) in the linearization dictionary is invalid.`);\n }\n }\n return hints;\n }\n throw new Error(\"Hint array in the linearization dictionary is invalid.\");\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 (!(Number.isInteger(obj1) && Number.isInteger(obj2) && isCmd(obj3, \"obj\") && linDict instanceof Dict && typeof (obj = linDict.get(\"Linearized\")) === \"number\" && obj > 0)) {\n return null;\n } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n throw new Error('The \"L\" parameter in the linearization dictionary ' + \"does not equal the stream length.\");\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\") ? getInt(linDict, \"P\", true) : 0\n };\n }\n}\n\n;// ./src/core/cmap.js\n\n\n\n\n\n\n\nconst BUILT_IN_CMAPS = [\"Adobe-GB1-UCS2\", \"Adobe-CNS1-UCS2\", \"Adobe-Japan1-UCS2\", \"Adobe-Korea1-UCS2\", \"78-EUC-H\", \"78-EUC-V\", \"78-H\", \"78-RKSJ-H\", \"78-RKSJ-V\", \"78-V\", \"78ms-RKSJ-H\", \"78ms-RKSJ-V\", \"83pv-RKSJ-H\", \"90ms-RKSJ-H\", \"90ms-RKSJ-V\", \"90msp-RKSJ-H\", \"90msp-RKSJ-V\", \"90pv-RKSJ-H\", \"90pv-RKSJ-V\", \"Add-H\", \"Add-RKSJ-H\", \"Add-RKSJ-V\", \"Add-V\", \"Adobe-CNS1-0\", \"Adobe-CNS1-1\", \"Adobe-CNS1-2\", \"Adobe-CNS1-3\", \"Adobe-CNS1-4\", \"Adobe-CNS1-5\", \"Adobe-CNS1-6\", \"Adobe-GB1-0\", \"Adobe-GB1-1\", \"Adobe-GB1-2\", \"Adobe-GB1-3\", \"Adobe-GB1-4\", \"Adobe-GB1-5\", \"Adobe-Japan1-0\", \"Adobe-Japan1-1\", \"Adobe-Japan1-2\", \"Adobe-Japan1-3\", \"Adobe-Japan1-4\", \"Adobe-Japan1-5\", \"Adobe-Japan1-6\", \"Adobe-Korea1-0\", \"Adobe-Korea1-1\", \"Adobe-Korea1-2\", \"B5-H\", \"B5-V\", \"B5pc-H\", \"B5pc-V\", \"CNS-EUC-H\", \"CNS-EUC-V\", \"CNS1-H\", \"CNS1-V\", \"CNS2-H\", \"CNS2-V\", \"ETHK-B5-H\", \"ETHK-B5-V\", \"ETen-B5-H\", \"ETen-B5-V\", \"ETenms-B5-H\", \"ETenms-B5-V\", \"EUC-H\", \"EUC-V\", \"Ext-H\", \"Ext-RKSJ-H\", \"Ext-RKSJ-V\", \"Ext-V\", \"GB-EUC-H\", \"GB-EUC-V\", \"GB-H\", \"GB-V\", \"GBK-EUC-H\", \"GBK-EUC-V\", \"GBK2K-H\", \"GBK2K-V\", \"GBKp-EUC-H\", \"GBKp-EUC-V\", \"GBT-EUC-H\", \"GBT-EUC-V\", \"GBT-H\", \"GBT-V\", \"GBTpc-EUC-H\", \"GBTpc-EUC-V\", \"GBpc-EUC-H\", \"GBpc-EUC-V\", \"H\", \"HKdla-B5-H\", \"HKdla-B5-V\", \"HKdlb-B5-H\", \"HKdlb-B5-V\", \"HKgccs-B5-H\", \"HKgccs-B5-V\", \"HKm314-B5-H\", \"HKm314-B5-V\", \"HKm471-B5-H\", \"HKm471-B5-V\", \"HKscs-B5-H\", \"HKscs-B5-V\", \"Hankaku\", \"Hiragana\", \"KSC-EUC-H\", \"KSC-EUC-V\", \"KSC-H\", \"KSC-Johab-H\", \"KSC-Johab-V\", \"KSC-V\", \"KSCms-UHC-H\", \"KSCms-UHC-HW-H\", \"KSCms-UHC-HW-V\", \"KSCms-UHC-V\", \"KSCpc-EUC-H\", \"KSCpc-EUC-V\", \"Katakana\", \"NWP-H\", \"NWP-V\", \"RKSJ-H\", \"RKSJ-V\", \"Roman\", \"UniCNS-UCS2-H\", \"UniCNS-UCS2-V\", \"UniCNS-UTF16-H\", \"UniCNS-UTF16-V\", \"UniCNS-UTF32-H\", \"UniCNS-UTF32-V\", \"UniCNS-UTF8-H\", \"UniCNS-UTF8-V\", \"UniGB-UCS2-H\", \"UniGB-UCS2-V\", \"UniGB-UTF16-H\", \"UniGB-UTF16-V\", \"UniGB-UTF32-H\", \"UniGB-UTF32-V\", \"UniGB-UTF8-H\", \"UniGB-UTF8-V\", \"UniJIS-UCS2-H\", \"UniJIS-UCS2-HW-H\", \"UniJIS-UCS2-HW-V\", \"UniJIS-UCS2-V\", \"UniJIS-UTF16-H\", \"UniJIS-UTF16-V\", \"UniJIS-UTF32-H\", \"UniJIS-UTF32-V\", \"UniJIS-UTF8-H\", \"UniJIS-UTF8-V\", \"UniJIS2004-UTF16-H\", \"UniJIS2004-UTF16-V\", \"UniJIS2004-UTF32-H\", \"UniJIS2004-UTF32-V\", \"UniJIS2004-UTF8-H\", \"UniJIS2004-UTF8-V\", \"UniJISPro-UCS2-HW-V\", \"UniJISPro-UCS2-V\", \"UniJISPro-UTF8-V\", \"UniJISX0213-UTF32-H\", \"UniJISX0213-UTF32-V\", \"UniJISX02132004-UTF32-H\", \"UniJISX02132004-UTF32-V\", \"UniKS-UCS2-H\", \"UniKS-UCS2-V\", \"UniKS-UTF16-H\", \"UniKS-UTF16-V\", \"UniKS-UTF32-H\", \"UniKS-UTF32-V\", \"UniKS-UTF8-H\", \"UniKS-UTF8-V\", \"V\", \"WP-Symbol\"];\nconst MAX_MAP_RANGE = 2 ** 24 - 1;\nclass CMap {\n constructor(builtInCMap = false) {\n this.codespaceRanges = [[], [], [], []];\n this.numCodespaceRanges = 0;\n this._map = [];\n this.name = \"\";\n this.vertical = false;\n this.useCMap = null;\n this.builtInCMap = builtInCMap;\n }\n addCodespaceRange(n, low, high) {\n this.codespaceRanges[n - 1].push(low, high);\n this.numCodespaceRanges++;\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 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 const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n if (nextCharCode > 0xff) {\n dstLow = dstLow.substring(0, lastByte - 1) + String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) + \"\\x00\";\n continue;\n }\n dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\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 mapOne(src, dst) {\n this._map[src] = dst;\n }\n lookup(code) {\n return this._map[code];\n }\n contains(code) {\n return this._map[code] !== undefined;\n }\n forEach(callback) {\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 charCodeOf(value) {\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 getMap() {\n return this._map;\n }\n readCharCode(str, offset, out) {\n let c = 0;\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;\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 getCharCodeLength(charCode) {\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\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 get length() {\n return this._map.length;\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}\nclass IdentityCMap extends CMap {\n constructor(vertical, n) {\n super();\n this.vertical = vertical;\n this.addCodespaceRange(n, 0, 0xffff);\n }\n mapCidRange(low, high, dstLow) {\n unreachable(\"should not call mapCidRange\");\n }\n mapBfRange(low, high, dstLow) {\n unreachable(\"should not call mapBfRange\");\n }\n mapBfRangeToArray(low, high, array) {\n unreachable(\"should not call mapBfRangeToArray\");\n }\n mapOne(src, dst) {\n unreachable(\"should not call mapCidOne\");\n }\n lookup(code) {\n return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n }\n contains(code) {\n return Number.isInteger(code) && code <= 0xffff;\n }\n forEach(callback) {\n for (let i = 0; i <= 0xffff; i++) {\n callback(i, i);\n }\n }\n charCodeOf(value) {\n return Number.isInteger(value) && value <= 0xffff ? value : -1;\n }\n getMap() {\n const map = new Array(0x10000);\n for (let i = 0; i <= 0xffff; i++) {\n map[i] = i;\n }\n return map;\n }\n get length() {\n return 0x10000;\n }\n get isIdentityCMap() {\n unreachable(\"should not access .isIdentityCMap\");\n }\n}\nfunction 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}\nfunction expectString(obj) {\n if (typeof obj !== \"string\") {\n throw new FormatError(\"Malformed CMap: expected string.\");\n }\n}\nfunction expectInt(obj) {\n if (!Number.isInteger(obj)) {\n throw new FormatError(\"Malformed CMap: expected int.\");\n }\n}\nfunction 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 expectString(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction parseWMode(cMap, lexer) {\n const obj = lexer.getObj();\n if (Number.isInteger(obj)) {\n cMap.vertical = !!obj;\n }\n}\nfunction parseCMapName(cMap, lexer) {\n const obj = lexer.getObj();\n if (obj instanceof Name) {\n cMap.name = obj.name;\n }\n}\nasync 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 if (!useCMap && embeddedUseCMap) {\n useCMap = embeddedUseCMap;\n }\n if (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n }\n return cMap;\n}\nasync function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\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 cMap.useCMap.forEach(function (key, value) {\n if (!cMap.contains(key)) {\n cMap.mapOne(key, value);\n }\n });\n return cMap;\n}\nasync 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 const {\n cMapData,\n isCompressed\n } = await fetchBuiltInCMap(name);\n const cMap = new CMap(true);\n if (isCompressed) {\n return new BinaryCMapReader().process(cMapData, cMap, useCMap => extendCMap(cMap, fetchBuiltInCMap, useCMap));\n }\n const lexer = new Lexer(new Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n}\nclass CMapFactory {\n static async create({\n encoding,\n fetchBuiltInCMap,\n useCMap\n }) {\n if (encoding instanceof Name) {\n return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n } else if (encoding instanceof BaseStream) {\n const parsedCMap = await parseCMap(new CMap(), new Lexer(encoding), fetchBuiltInCMap, useCMap);\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;// ./src/core/charsets.js\nconst ISOAdobeCharset = [\".notdef\", \"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\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"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\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"];\nconst ExpertCharset = [\".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\nconst ExpertSubsetCharset = [\".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\"];\n\n;// ./src/core/encodings.js\nconst ExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\", \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\nconst MacExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\", \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\", \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\", \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\", \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\", \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\", \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\", \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\", \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\", \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\", \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\", \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\", \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\", \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\", \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\", \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\", \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\", \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\", \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\nconst MacRomanEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\", \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\"];\nconst StandardEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"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\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"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\", \"\", \"\", \"\", \"\"];\nconst WinAnsiEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\", \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\", \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\", \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\", \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\", \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\", \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\", \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\", \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\", \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\", \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\", \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\", \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\", \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\", \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\", \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\", \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\", \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\", \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\", \"ydieresis\"];\nconst SymbolSetEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\", \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\", \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\", \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\", \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\", \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\", \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\", \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\", \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\", \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\", \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\", \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\", \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\", \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\", \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\", \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\", \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\", \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\", \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\", \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\", \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\", \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\", \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\", \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\", \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\", \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\", \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\", \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\", \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\", \"bracerightbt\", \"\"];\nconst ZapfDingbatsEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"a1\", \"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\", \"\"];\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\n;// ./src/core/cff_parser.js\n\n\n\nconst MAX_SUBR_NESTING = 10;\nconst CFFStandardStrings = [\".notdef\", \"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\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"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\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\", \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"];\nconst NUM_STANDARD_CFF_STRINGS = 391;\nconst CharstringValidationData = [null, {\n id: \"hstem\",\n min: 2,\n stackClearing: true,\n stem: true\n}, null, {\n id: \"vstem\",\n min: 2,\n stackClearing: true,\n stem: true\n}, {\n id: \"vmoveto\",\n min: 1,\n stackClearing: true\n}, {\n id: \"rlineto\",\n min: 2,\n resetStack: true\n}, {\n id: \"hlineto\",\n min: 1,\n resetStack: true\n}, {\n id: \"vlineto\",\n min: 1,\n resetStack: true\n}, {\n id: \"rrcurveto\",\n min: 6,\n resetStack: true\n}, null, {\n id: \"callsubr\",\n min: 1,\n undefStack: true\n}, {\n id: \"return\",\n min: 0,\n undefStack: true\n}, null, null, {\n id: \"endchar\",\n min: 0,\n stackClearing: true\n}, null, null, null, {\n id: \"hstemhm\",\n min: 2,\n stackClearing: true,\n stem: true\n}, {\n id: \"hintmask\",\n min: 0,\n stackClearing: true\n}, {\n id: \"cntrmask\",\n min: 0,\n stackClearing: true\n}, {\n id: \"rmoveto\",\n min: 2,\n stackClearing: true\n}, {\n id: \"hmoveto\",\n min: 1,\n stackClearing: true\n}, {\n id: \"vstemhm\",\n min: 2,\n stackClearing: true,\n stem: true\n}, {\n id: \"rcurveline\",\n min: 8,\n resetStack: true\n}, {\n id: \"rlinecurve\",\n min: 8,\n resetStack: true\n}, {\n id: \"vvcurveto\",\n min: 4,\n resetStack: true\n}, {\n id: \"hhcurveto\",\n min: 4,\n resetStack: true\n}, null, {\n id: \"callgsubr\",\n min: 1,\n undefStack: true\n}, {\n id: \"vhcurveto\",\n min: 4,\n resetStack: true\n}, {\n id: \"hvcurveto\",\n min: 4,\n resetStack: true\n}];\nconst CharstringValidationData12 = [null, null, null, {\n id: \"and\",\n min: 2,\n stackDelta: -1\n}, {\n id: \"or\",\n min: 2,\n stackDelta: -1\n}, {\n id: \"not\",\n min: 1,\n stackDelta: 0\n}, null, null, null, {\n id: \"abs\",\n min: 1,\n stackDelta: 0\n}, {\n id: \"add\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] + stack[index - 1];\n }\n}, {\n id: \"sub\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] - stack[index - 1];\n }\n}, {\n id: \"div\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] / stack[index - 1];\n }\n}, null, {\n id: \"neg\",\n min: 1,\n stackDelta: 0,\n stackFn(stack, index) {\n stack[index - 1] = -stack[index - 1];\n }\n}, {\n id: \"eq\",\n min: 2,\n stackDelta: -1\n}, null, null, {\n id: \"drop\",\n min: 1,\n stackDelta: -1\n}, null, {\n id: \"put\",\n min: 2,\n stackDelta: -2\n}, {\n id: \"get\",\n min: 1,\n stackDelta: 0\n}, {\n id: \"ifelse\",\n min: 4,\n stackDelta: -3\n}, {\n id: \"random\",\n min: 0,\n stackDelta: 1\n}, {\n id: \"mul\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] * stack[index - 1];\n }\n}, null, {\n id: \"sqrt\",\n min: 1,\n stackDelta: 0\n}, {\n id: \"dup\",\n min: 1,\n stackDelta: 1\n}, {\n id: \"exch\",\n min: 2,\n stackDelta: 0\n}, {\n id: \"index\",\n min: 2,\n stackDelta: 0\n}, {\n id: \"roll\",\n min: 3,\n stackDelta: -2\n}, null, null, null, {\n id: \"hflex\",\n min: 7,\n resetStack: true\n}, {\n id: \"flex\",\n min: 13,\n resetStack: true\n}, {\n id: \"hflex1\",\n min: 9,\n resetStack: true\n}, {\n id: \"flex1\",\n min: 11,\n resetStack: true\n}];\nclass CFFParser {\n constructor(file, properties, seacAnalysisEnabled) {\n this.bytes = file.getBytes();\n this.properties = properties;\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n }\n parse() {\n const properties = this.properties;\n const cff = new CFF();\n this.cff = cff;\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 const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\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 this.parsePrivateDict(cff.topDict);\n cff.isCIDFont = topDict.hasName(\"ROS\");\n const charStringOffset = topDict.getByName(\"CharStrings\");\n const charStringIndex = this.parseIndex(charStringOffset).obj;\n const fontMatrix = topDict.getByName(\"FontMatrix\");\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n const fontBBox = topDict.getByName(\"FontBBox\");\n if (fontBBox) {\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\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(CFFTopDict, this.parseDict(dictRaw), cff.strings);\n this.parsePrivateDict(fontDict);\n cff.fdArray.push(fontDict);\n }\n encoding = null;\n charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, true);\n cff.fdSelect = this.parseFDSelect(topDict.getByName(\"FDSelect\"), charStringIndex.count);\n } else {\n charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, false);\n encoding = this.parseEncoding(topDict.getByName(\"Encoding\"), properties, cff.strings, charset.charset);\n }\n cff.charset = charset;\n cff.encoding = encoding;\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 return cff;\n }\n parseHeader() {\n let bytes = this.bytes;\n const bytesLength = bytes.length;\n let offset = 0;\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 {\n obj: header,\n endPos: hdrSize\n };\n }\n parseDict(dict) {\n let pos = 0;\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 function parseFloatOperand() {\n let str = \"\";\n const eof = 15;\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"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 if (b1 === eof) {\n break;\n }\n str += lookup[b1];\n if (b2 === eof) {\n break;\n }\n str += lookup[b2];\n }\n return parseFloat(str);\n }\n let operands = [];\n const entries = [];\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 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 if (count !== 0) {\n const offsetSize = bytes[pos++];\n const startPos = pos + (count + 1) * offsetSize - 1;\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 {\n obj: cffIndex,\n 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 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 createDict(Type, dict, strings) {\n const cffDict = new Type(strings);\n for (const [key, value] of dict) {\n cffDict.setByKey(key, value);\n }\n return cffDict;\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 let length = data.length;\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 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 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 stack[stackSize] = value - 139;\n stackSize++;\n } else if (value >= 247 && value <= 254) {\n stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108;\n j++;\n stackSize++;\n } else if (value === 255) {\n stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536;\n j += 4;\n stackSize++;\n } else if (value === 19 || value === 20) {\n state.hints += stackSize >> 1;\n if (state.hints === 0) {\n data.copyWithin(j - 1, j, -1);\n j -= 1;\n length -= 1;\n continue;\n }\n j += state.hints + 7 >> 3;\n stackSize %= 2;\n validationCommand = CharstringValidationData[value];\n } else if (value === 10 || value === 29) {\n const subrsIndex = value === 10 ? localSubrIndex : globalSubrIndex;\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 (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {\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(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex);\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 data[j - 1] = 14;\n validationCommand = CharstringValidationData[14];\n } else if (value === 9) {\n data.copyWithin(j - 1, j, -1);\n j -= 1;\n length -= 1;\n continue;\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 state.hasVStems = true;\n } else if (state.hasVStems && (value === 1 || value === 18)) {\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(\"Not enough parameters for \" + validationCommand.id + \"; actual: \" + stackSize + \", expected: \" + validationCommand.min);\n if (stackSize === 0) {\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 stackSize -= validationCommand.min;\n if (stackSize >= 2 && validationCommand.stem) {\n stackSize %= 2;\n } else if (stackSize > 1) {\n warn(\"Found too many parameters for stack-clearing command\");\n }\n if (stackSize > 0) {\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 if (length < data.length) {\n data.fill(14, length);\n }\n state.stackSize = stackSize;\n return true;\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(state, charstring, localSubrToUse, globalSubrIndex);\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 charStrings.set(i, new Uint8Array([14]));\n }\n }\n return {\n charStrings,\n seacs,\n widths\n };\n }\n emptyPrivateDictionary(parentDict) {\n const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n parentDict.setByKey(18, [0, 0]);\n parentDict.privateDict = privateDict;\n }\n parsePrivateDict(parentDict) {\n if (!parentDict.hasName(\"Private\")) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const privateOffset = parentDict.getByName(\"Private\");\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 if (size === 0 || offset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\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(CFFPrivateDict, dict, parentDict.strings);\n parentDict.privateDict = privateDict;\n if (privateDict.getByName(\"ExpansionFactor\") === 0) {\n privateDict.setByName(\"ExpansionFactor\", 0.06);\n }\n if (!privateDict.getByName(\"Subrs\")) {\n return;\n }\n const subrsOffset = privateDict.getByName(\"Subrs\");\n const relativeOffset = offset + subrsOffset;\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 parseCharsets(pos, length, strings, cid) {\n if (pos === 0) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, ISOAdobeCharset);\n } else if (pos === 1) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, ExpertCharset);\n } else if (pos === 2) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, ExpertSubsetCharset);\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 length -= 1;\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 const end = pos;\n const raw = bytes.subarray(start, end);\n return new CFFCharset(false, format, charset, raw);\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 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 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 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 default:\n throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n }\n const dataEnd = pos;\n if (format & 0x80) {\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 parseFDSelect(pos, length) {\n const bytes = this.bytes;\n const format = bytes[pos++];\n const fdSelect = [];\n let i;\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(\"parseFDSelect: The first range must have a first GID of 0\" + \" -- trying to recover.\");\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 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 return new CFFFDSelect(format, fdSelect);\n }\n}\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 this.encoding = null;\n this.charset = null;\n this.charStrings = null;\n this.fdArray = [];\n this.fdSelect = null;\n this.isCIDFont = false;\n }\n duplicateFirstGlyph() {\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 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}\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}\nclass CFFStrings {\n constructor() {\n this.strings = [];\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 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 add(value) {\n this.strings.push(value);\n }\n get count() {\n return this.strings.length;\n }\n}\nclass CFFIndex {\n constructor() {\n this.objects = [];\n this.length = 0;\n }\n add(data) {\n this.length += data.length;\n this.objects.push(data);\n }\n set(index, data) {\n this.length += data.length - this.objects[index].length;\n this.objects[index] = data;\n }\n get(index) {\n return this.objects[index];\n }\n get count() {\n return this.objects.length;\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 setByKey(key, value) {\n if (!(key in this.keyToNameMap)) {\n return false;\n }\n if (value.length === 0) {\n return true;\n }\n for (const val of value) {\n if (isNaN(val)) {\n warn(`Invalid CFFDict value: \"${value}\" for key \"${key}\".`);\n return true;\n }\n }\n const type = this.types[key];\n if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n value = value[0];\n }\n this.values[key] = value;\n return true;\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 hasName(name) {\n return this.nameToKeyMap[name] in this.values;\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 removeByName(name) {\n delete this.values[this.nameToKeyMap[name]];\n }\n static createTables(layout) {\n const tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: []\n };\n for (const entry of layout) {\n const key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : 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}\nconst CFFTopDictLayout = [[[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null], [[12, 20], \"SyntheticBase\", \"num\", null], [0, \"version\", \"sid\", null], [1, \"Notice\", \"sid\", null], [[12, 0], \"Copyright\", \"sid\", null], [2, \"FullName\", \"sid\", null], [3, \"FamilyName\", \"sid\", null], [4, \"Weight\", \"sid\", null], [[12, 1], \"isFixedPitch\", \"num\", 0], [[12, 2], \"ItalicAngle\", \"num\", 0], [[12, 3], \"UnderlinePosition\", \"num\", -100], [[12, 4], \"UnderlineThickness\", \"num\", 50], [[12, 5], \"PaintType\", \"num\", 0], [[12, 6], \"CharstringType\", \"num\", 2], [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"], [0.001, 0, 0, 0.001, 0, 0]], [13, \"UniqueID\", \"num\", null], [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]], [[12, 8], \"StrokeWidth\", \"num\", 0], [14, \"XUID\", \"array\", null], [15, \"charset\", \"offset\", 0], [16, \"Encoding\", \"offset\", 0], [17, \"CharStrings\", \"offset\", 0], [18, \"Private\", [\"offset\", \"offset\"], null], [[12, 21], \"PostScript\", \"sid\", null], [[12, 22], \"BaseFontName\", \"sid\", null], [[12, 23], \"BaseFontBlend\", \"delta\", null], [[12, 31], \"CIDFontVersion\", \"num\", 0], [[12, 32], \"CIDFontRevision\", \"num\", 0], [[12, 33], \"CIDFontType\", \"num\", 0], [[12, 34], \"CIDCount\", \"num\", 8720], [[12, 35], \"UIDBase\", \"num\", null], [[12, 37], \"FDSelect\", \"offset\", null], [[12, 36], \"FDArray\", \"offset\", null], [[12, 38], \"FontName\", \"sid\", null]];\nclass CFFTopDict extends CFFDict {\n static get tables() {\n return shadow(this, \"tables\", this.createTables(CFFTopDictLayout));\n }\n constructor(strings) {\n super(CFFTopDict.tables, strings);\n this.privateDict = null;\n }\n}\nconst CFFPrivateDictLayout = [[6, \"BlueValues\", \"delta\", null], [7, \"OtherBlues\", \"delta\", null], [8, \"FamilyBlues\", \"delta\", null], [9, \"FamilyOtherBlues\", \"delta\", null], [[12, 9], \"BlueScale\", \"num\", 0.039625], [[12, 10], \"BlueShift\", \"num\", 7], [[12, 11], \"BlueFuzz\", \"num\", 1], [10, \"StdHW\", \"num\", null], [11, \"StdVW\", \"num\", null], [[12, 12], \"StemSnapH\", \"delta\", null], [[12, 13], \"StemSnapV\", \"delta\", null], [[12, 14], \"ForceBold\", \"num\", 0], [[12, 17], \"LanguageGroup\", \"num\", 0], [[12, 18], \"ExpansionFactor\", \"num\", 0.06], [[12, 19], \"initialRandomSeed\", \"num\", 0], [20, \"defaultWidthX\", \"num\", 0], [21, \"nominalWidthX\", \"num\", 0], [19, \"Subrs\", \"offset\", null]];\nclass CFFPrivateDict extends CFFDict {\n static get tables() {\n return shadow(this, \"tables\", this.createTables(CFFPrivateDictLayout));\n }\n constructor(strings) {\n super(CFFPrivateDict.tables, strings);\n this.subrsIndex = null;\n }\n}\nconst CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2\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}\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}\nclass CFFFDSelect {\n constructor(format, fdSelect) {\n this.format = format;\n this.fdSelect = fdSelect;\n }\n getFDIndex(glyphIndex) {\n if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n return -1;\n }\n return this.fdSelect[glyphIndex];\n }\n}\nclass CFFOffsetTracker {\n constructor() {\n this.offsets = Object.create(null);\n }\n isTracking(key) {\n return key in this.offsets;\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 offset(value) {\n for (const key in this.offsets) {\n this.offsets[key] += value;\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 if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {\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}\nclass CFFCompiler {\n constructor(cff) {\n this.cff = cff;\n }\n compile() {\n const cff = this.cff;\n const output = {\n data: [],\n length: 0,\n add(data) {\n try {\n this.data.push(...data);\n } catch {\n this.data = this.data.concat(data);\n }\n this.length = this.data.length;\n }\n };\n const header = this.compileHeader(cff.header);\n output.add(header);\n const nameIndex = this.compileNameIndex(cff.names);\n output.add(nameIndex);\n if (cff.isCIDFont) {\n if (cff.topDict.hasName(\"FontMatrix\")) {\n const base = cff.topDict.getByName(\"FontMatrix\");\n cff.topDict.removeByName(\"FontMatrix\");\n for (const subDict of cff.fdArray) {\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 const xuid = cff.topDict.getByName(\"XUID\");\n if (xuid?.length > 16) {\n cff.topDict.removeByName(\"XUID\");\n }\n cff.topDict.setByName(\"charset\", 0);\n let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);\n output.add(compiled.output);\n const topDictTracker = compiled.trackers[0];\n const stringIndex = this.compileStringIndex(cff.strings.strings);\n output.add(stringIndex);\n const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n output.add(globalSubrIndex);\n if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n if (cff.encoding.predefined) {\n topDictTracker.setEntryLocation(\"Encoding\", [cff.encoding.format], output);\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(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);\n topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n output.add(charset);\n const charStrings = this.compileCharStrings(cff.charStrings);\n topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n output.add(charStrings);\n if (cff.isCIDFont) {\n topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n const fdSelect = this.compileFDSelect(cff.fdSelect);\n output.add(fdSelect);\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 this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n }\n this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n output.add([0]);\n return output.data;\n }\n encodeNumber(value) {\n if (Number.isInteger(value)) {\n return this.encodeInteger(value);\n }\n return this.encodeFloat(value);\n }\n static get EncodeFloatRegExp() {\n return shadow(this, \"EncodeFloatRegExp\", /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/);\n }\n encodeFloat(num) {\n let value = num.toString();\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 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 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 = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff];\n }\n return code;\n }\n compileHeader(header) {\n return [header.major, header.minor, 4, header.offSize];\n }\n compileNameIndex(names) {\n const nameIndex = new CFFIndex();\n for (const name of names) {\n const length = Math.min(name.length, 127);\n let sanitizedName = new Array(length);\n for (let j = 0; j < length; j++) {\n let char = name[j];\n if (char < \"!\" || char > \"~\" || char === \"[\" || char === \"]\" || char === \"(\" || char === \")\" || char === \"{\" || char === \"}\" || char === \"<\" || char === \">\" || char === \"/\" || char === \"%\") {\n char = \"_\";\n }\n sanitizedName[j] = char;\n }\n sanitizedName = sanitizedName.join(\"\");\n if (sanitizedName === \"\") {\n sanitizedName = \"Bad_Font_Name\";\n }\n nameIndex.add(stringToBytes(sanitizedName));\n }\n return this.compileIndex(nameIndex);\n }\n compileTopDicts(dicts, length, removeCidKeys) {\n const fontDictTrackers = [];\n let fdArrayIndex = new CFFIndex();\n for (const fontDict of dicts) {\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 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 let outputLength = output.length;\n privateDictTracker.offset(outputLength);\n if (!privateDictData.length) {\n outputLength = 0;\n }\n trackers[i].setEntryLocation(\"Private\", [privateDictData.length, outputLength], output);\n output.add(privateDictData);\n if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n const subrs = this.compileIndex(privateDict.subrsIndex);\n privateDictTracker.setEntryLocation(\"Subrs\", [privateDictData.length], output);\n output.add(subrs);\n }\n }\n }\n compileDict(dict, offsetTracker) {\n const out = [];\n for (const key of dict.order) {\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 if (values.length === 0) {\n continue;\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.push(...this.encodeNumber(value));\n break;\n case \"offset\":\n const name = dict.keyToNameMap[key];\n if (!offsetTracker.isTracking(name)) {\n offsetTracker.track(name, out.length);\n }\n out.push(0x1d, 0, 0, 0, 0);\n break;\n case \"array\":\n case \"delta\":\n out.push(...this.encodeNumber(value));\n for (let k = 1, kk = values.length; k < kk; ++k) {\n out.push(...this.encodeNumber(values[k]));\n }\n break;\n default:\n throw new FormatError(`Unknown data type of ${type}`);\n }\n }\n out.push(...dict.opcodes[key]);\n }\n return out;\n }\n compileStringIndex(strings) {\n const stringIndex = new CFFIndex();\n for (const string of strings) {\n stringIndex.add(stringToBytes(string));\n }\n return this.compileIndex(stringIndex);\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 (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 compileCharset(charset, numGlyphs, strings, isCIDFont) {\n let out;\n const numGlyphsLessNotDef = numGlyphs - 1;\n if (isCIDFont) {\n out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xff, numGlyphsLessNotDef & 0xff]);\n } else {\n const length = 1 + numGlyphsLessNotDef * 2;\n out = new Uint8Array(length);\n out[0] = 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 compileEncoding(encoding) {\n return this.compileTypedArray(encoding.raw);\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 = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD];\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 const numRanges = (ranges.length - 3) / 3;\n ranges[1] = numRanges >> 8 & 0xff;\n ranges[2] = numRanges & 0xff;\n ranges.push(i >> 8 & 0xff, i & 0xff);\n out = new Uint8Array(ranges);\n break;\n }\n return this.compileTypedArray(out);\n }\n compileTypedArray(data) {\n return Array.from(data);\n }\n compileIndex(index, trackers = []) {\n const objects = index.objects;\n const count = objects.length;\n if (count === 0) {\n return [0, 0];\n }\n const data = [count >> 8 & 0xff, count & 0xff];\n let lastOffset = 1,\n i;\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\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 data.push(offsetSize);\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(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n } else {\n data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n }\n if (objects[i]) {\n relativeOffset += objects[i].length;\n }\n }\n for (i = 0; i < count; i++) {\n if (trackers[i]) {\n trackers[i].offset(data.length);\n }\n data.push(...objects[i]);\n }\n return data;\n }\n}\n\n;// ./src/core/glyphlist.js\n\nconst getGlyphsUnicode = getLookupTableFactory(function (t) {\n t.A = 0x0041;\n t.AE = 0x00c6;\n t.AEacute = 0x01fc;\n t.AEmacron = 0x01e2;\n t.AEsmall = 0xf7e6;\n t.Aacute = 0x00c1;\n t.Aacutesmall = 0xf7e1;\n t.Abreve = 0x0102;\n t.Abreveacute = 0x1eae;\n t.Abrevecyrillic = 0x04d0;\n t.Abrevedotbelow = 0x1eb6;\n t.Abrevegrave = 0x1eb0;\n t.Abrevehookabove = 0x1eb2;\n t.Abrevetilde = 0x1eb4;\n t.Acaron = 0x01cd;\n t.Acircle = 0x24b6;\n t.Acircumflex = 0x00c2;\n t.Acircumflexacute = 0x1ea4;\n t.Acircumflexdotbelow = 0x1eac;\n t.Acircumflexgrave = 0x1ea6;\n t.Acircumflexhookabove = 0x1ea8;\n t.Acircumflexsmall = 0xf7e2;\n t.Acircumflextilde = 0x1eaa;\n t.Acute = 0xf6c9;\n t.Acutesmall = 0xf7b4;\n t.Acyrillic = 0x0410;\n t.Adblgrave = 0x0200;\n t.Adieresis = 0x00c4;\n t.Adieresiscyrillic = 0x04d2;\n t.Adieresismacron = 0x01de;\n t.Adieresissmall = 0xf7e4;\n t.Adotbelow = 0x1ea0;\n t.Adotmacron = 0x01e0;\n t.Agrave = 0x00c0;\n t.Agravesmall = 0xf7e0;\n t.Ahookabove = 0x1ea2;\n t.Aiecyrillic = 0x04d4;\n t.Ainvertedbreve = 0x0202;\n t.Alpha = 0x0391;\n t.Alphatonos = 0x0386;\n t.Amacron = 0x0100;\n t.Amonospace = 0xff21;\n t.Aogonek = 0x0104;\n t.Aring = 0x00c5;\n t.Aringacute = 0x01fa;\n t.Aringbelow = 0x1e00;\n t.Aringsmall = 0xf7e5;\n t.Asmall = 0xf761;\n t.Atilde = 0x00c3;\n t.Atildesmall = 0xf7e3;\n t.Aybarmenian = 0x0531;\n t.B = 0x0042;\n t.Bcircle = 0x24b7;\n t.Bdotaccent = 0x1e02;\n t.Bdotbelow = 0x1e04;\n t.Becyrillic = 0x0411;\n t.Benarmenian = 0x0532;\n t.Beta = 0x0392;\n t.Bhook = 0x0181;\n t.Blinebelow = 0x1e06;\n t.Bmonospace = 0xff22;\n t.Brevesmall = 0xf6f4;\n t.Bsmall = 0xf762;\n t.Btopbar = 0x0182;\n t.C = 0x0043;\n t.Caarmenian = 0x053e;\n t.Cacute = 0x0106;\n t.Caron = 0xf6ca;\n t.Caronsmall = 0xf6f5;\n t.Ccaron = 0x010c;\n t.Ccedilla = 0x00c7;\n t.Ccedillaacute = 0x1e08;\n t.Ccedillasmall = 0xf7e7;\n t.Ccircle = 0x24b8;\n t.Ccircumflex = 0x0108;\n t.Cdot = 0x010a;\n t.Cdotaccent = 0x010a;\n t.Cedillasmall = 0xf7b8;\n t.Chaarmenian = 0x0549;\n t.Cheabkhasiancyrillic = 0x04bc;\n t.Checyrillic = 0x0427;\n t.Chedescenderabkhasiancyrillic = 0x04be;\n t.Chedescendercyrillic = 0x04b6;\n t.Chedieresiscyrillic = 0x04f4;\n t.Cheharmenian = 0x0543;\n t.Chekhakassiancyrillic = 0x04cb;\n t.Cheverticalstrokecyrillic = 0x04b8;\n t.Chi = 0x03a7;\n t.Chook = 0x0187;\n t.Circumflexsmall = 0xf6f6;\n t.Cmonospace = 0xff23;\n t.Coarmenian = 0x0551;\n t.Csmall = 0xf763;\n t.D = 0x0044;\n t.DZ = 0x01f1;\n t.DZcaron = 0x01c4;\n t.Daarmenian = 0x0534;\n t.Dafrican = 0x0189;\n t.Dcaron = 0x010e;\n t.Dcedilla = 0x1e10;\n t.Dcircle = 0x24b9;\n t.Dcircumflexbelow = 0x1e12;\n t.Dcroat = 0x0110;\n t.Ddotaccent = 0x1e0a;\n t.Ddotbelow = 0x1e0c;\n t.Decyrillic = 0x0414;\n t.Deicoptic = 0x03ee;\n t.Delta = 0x2206;\n t.Deltagreek = 0x0394;\n t.Dhook = 0x018a;\n t.Dieresis = 0xf6cb;\n t.DieresisAcute = 0xf6cc;\n t.DieresisGrave = 0xf6cd;\n t.Dieresissmall = 0xf7a8;\n t.Digammagreek = 0x03dc;\n t.Djecyrillic = 0x0402;\n t.Dlinebelow = 0x1e0e;\n t.Dmonospace = 0xff24;\n t.Dotaccentsmall = 0xf6f7;\n t.Dslash = 0x0110;\n t.Dsmall = 0xf764;\n t.Dtopbar = 0x018b;\n t.Dz = 0x01f2;\n t.Dzcaron = 0x01c5;\n t.Dzeabkhasiancyrillic = 0x04e0;\n t.Dzecyrillic = 0x0405;\n t.Dzhecyrillic = 0x040f;\n t.E = 0x0045;\n t.Eacute = 0x00c9;\n t.Eacutesmall = 0xf7e9;\n t.Ebreve = 0x0114;\n t.Ecaron = 0x011a;\n t.Ecedillabreve = 0x1e1c;\n t.Echarmenian = 0x0535;\n t.Ecircle = 0x24ba;\n t.Ecircumflex = 0x00ca;\n t.Ecircumflexacute = 0x1ebe;\n t.Ecircumflexbelow = 0x1e18;\n t.Ecircumflexdotbelow = 0x1ec6;\n t.Ecircumflexgrave = 0x1ec0;\n t.Ecircumflexhookabove = 0x1ec2;\n t.Ecircumflexsmall = 0xf7ea;\n t.Ecircumflextilde = 0x1ec4;\n t.Ecyrillic = 0x0404;\n t.Edblgrave = 0x0204;\n t.Edieresis = 0x00cb;\n t.Edieresissmall = 0xf7eb;\n t.Edot = 0x0116;\n t.Edotaccent = 0x0116;\n t.Edotbelow = 0x1eb8;\n t.Efcyrillic = 0x0424;\n t.Egrave = 0x00c8;\n t.Egravesmall = 0xf7e8;\n t.Eharmenian = 0x0537;\n t.Ehookabove = 0x1eba;\n t.Eightroman = 0x2167;\n t.Einvertedbreve = 0x0206;\n t.Eiotifiedcyrillic = 0x0464;\n t.Elcyrillic = 0x041b;\n t.Elevenroman = 0x216a;\n t.Emacron = 0x0112;\n t.Emacronacute = 0x1e16;\n t.Emacrongrave = 0x1e14;\n t.Emcyrillic = 0x041c;\n t.Emonospace = 0xff25;\n t.Encyrillic = 0x041d;\n t.Endescendercyrillic = 0x04a2;\n t.Eng = 0x014a;\n t.Enghecyrillic = 0x04a4;\n t.Enhookcyrillic = 0x04c7;\n t.Eogonek = 0x0118;\n t.Eopen = 0x0190;\n t.Epsilon = 0x0395;\n t.Epsilontonos = 0x0388;\n t.Ercyrillic = 0x0420;\n t.Ereversed = 0x018e;\n t.Ereversedcyrillic = 0x042d;\n t.Escyrillic = 0x0421;\n t.Esdescendercyrillic = 0x04aa;\n t.Esh = 0x01a9;\n t.Esmall = 0xf765;\n t.Eta = 0x0397;\n t.Etarmenian = 0x0538;\n t.Etatonos = 0x0389;\n t.Eth = 0x00d0;\n t.Ethsmall = 0xf7f0;\n t.Etilde = 0x1ebc;\n t.Etildebelow = 0x1e1a;\n t.Euro = 0x20ac;\n t.Ezh = 0x01b7;\n t.Ezhcaron = 0x01ee;\n t.Ezhreversed = 0x01b8;\n t.F = 0x0046;\n t.Fcircle = 0x24bb;\n t.Fdotaccent = 0x1e1e;\n t.Feharmenian = 0x0556;\n t.Feicoptic = 0x03e4;\n t.Fhook = 0x0191;\n t.Fitacyrillic = 0x0472;\n t.Fiveroman = 0x2164;\n t.Fmonospace = 0xff26;\n t.Fourroman = 0x2163;\n t.Fsmall = 0xf766;\n t.G = 0x0047;\n t.GBsquare = 0x3387;\n t.Gacute = 0x01f4;\n t.Gamma = 0x0393;\n t.Gammaafrican = 0x0194;\n t.Gangiacoptic = 0x03ea;\n t.Gbreve = 0x011e;\n t.Gcaron = 0x01e6;\n t.Gcedilla = 0x0122;\n t.Gcircle = 0x24bc;\n t.Gcircumflex = 0x011c;\n t.Gcommaaccent = 0x0122;\n t.Gdot = 0x0120;\n t.Gdotaccent = 0x0120;\n t.Gecyrillic = 0x0413;\n t.Ghadarmenian = 0x0542;\n t.Ghemiddlehookcyrillic = 0x0494;\n t.Ghestrokecyrillic = 0x0492;\n t.Gheupturncyrillic = 0x0490;\n t.Ghook = 0x0193;\n t.Gimarmenian = 0x0533;\n t.Gjecyrillic = 0x0403;\n t.Gmacron = 0x1e20;\n t.Gmonospace = 0xff27;\n t.Grave = 0xf6ce;\n t.Gravesmall = 0xf760;\n t.Gsmall = 0xf767;\n t.Gsmallhook = 0x029b;\n t.Gstroke = 0x01e4;\n t.H = 0x0048;\n t.H18533 = 0x25cf;\n t.H18543 = 0x25aa;\n t.H18551 = 0x25ab;\n t.H22073 = 0x25a1;\n t.HPsquare = 0x33cb;\n t.Haabkhasiancyrillic = 0x04a8;\n t.Hadescendercyrillic = 0x04b2;\n t.Hardsigncyrillic = 0x042a;\n t.Hbar = 0x0126;\n t.Hbrevebelow = 0x1e2a;\n t.Hcedilla = 0x1e28;\n t.Hcircle = 0x24bd;\n t.Hcircumflex = 0x0124;\n t.Hdieresis = 0x1e26;\n t.Hdotaccent = 0x1e22;\n t.Hdotbelow = 0x1e24;\n t.Hmonospace = 0xff28;\n t.Hoarmenian = 0x0540;\n t.Horicoptic = 0x03e8;\n t.Hsmall = 0xf768;\n t.Hungarumlaut = 0xf6cf;\n t.Hungarumlautsmall = 0xf6f8;\n t.Hzsquare = 0x3390;\n t.I = 0x0049;\n t.IAcyrillic = 0x042f;\n t.IJ = 0x0132;\n t.IUcyrillic = 0x042e;\n t.Iacute = 0x00cd;\n t.Iacutesmall = 0xf7ed;\n t.Ibreve = 0x012c;\n t.Icaron = 0x01cf;\n t.Icircle = 0x24be;\n t.Icircumflex = 0x00ce;\n t.Icircumflexsmall = 0xf7ee;\n t.Icyrillic = 0x0406;\n t.Idblgrave = 0x0208;\n t.Idieresis = 0x00cf;\n t.Idieresisacute = 0x1e2e;\n t.Idieresiscyrillic = 0x04e4;\n t.Idieresissmall = 0xf7ef;\n t.Idot = 0x0130;\n t.Idotaccent = 0x0130;\n t.Idotbelow = 0x1eca;\n t.Iebrevecyrillic = 0x04d6;\n t.Iecyrillic = 0x0415;\n t.Ifraktur = 0x2111;\n t.Igrave = 0x00cc;\n t.Igravesmall = 0xf7ec;\n t.Ihookabove = 0x1ec8;\n t.Iicyrillic = 0x0418;\n t.Iinvertedbreve = 0x020a;\n t.Iishortcyrillic = 0x0419;\n t.Imacron = 0x012a;\n t.Imacroncyrillic = 0x04e2;\n t.Imonospace = 0xff29;\n t.Iniarmenian = 0x053b;\n t.Iocyrillic = 0x0401;\n t.Iogonek = 0x012e;\n t.Iota = 0x0399;\n t.Iotaafrican = 0x0196;\n t.Iotadieresis = 0x03aa;\n t.Iotatonos = 0x038a;\n t.Ismall = 0xf769;\n t.Istroke = 0x0197;\n t.Itilde = 0x0128;\n t.Itildebelow = 0x1e2c;\n t.Izhitsacyrillic = 0x0474;\n t.Izhitsadblgravecyrillic = 0x0476;\n t.J = 0x004a;\n t.Jaarmenian = 0x0541;\n t.Jcircle = 0x24bf;\n t.Jcircumflex = 0x0134;\n t.Jecyrillic = 0x0408;\n t.Jheharmenian = 0x054b;\n t.Jmonospace = 0xff2a;\n t.Jsmall = 0xf76a;\n t.K = 0x004b;\n t.KBsquare = 0x3385;\n t.KKsquare = 0x33cd;\n t.Kabashkircyrillic = 0x04a0;\n t.Kacute = 0x1e30;\n t.Kacyrillic = 0x041a;\n t.Kadescendercyrillic = 0x049a;\n t.Kahookcyrillic = 0x04c3;\n t.Kappa = 0x039a;\n t.Kastrokecyrillic = 0x049e;\n t.Kaverticalstrokecyrillic = 0x049c;\n t.Kcaron = 0x01e8;\n t.Kcedilla = 0x0136;\n t.Kcircle = 0x24c0;\n t.Kcommaaccent = 0x0136;\n t.Kdotbelow = 0x1e32;\n t.Keharmenian = 0x0554;\n t.Kenarmenian = 0x053f;\n t.Khacyrillic = 0x0425;\n t.Kheicoptic = 0x03e6;\n t.Khook = 0x0198;\n t.Kjecyrillic = 0x040c;\n t.Klinebelow = 0x1e34;\n t.Kmonospace = 0xff2b;\n t.Koppacyrillic = 0x0480;\n t.Koppagreek = 0x03de;\n t.Ksicyrillic = 0x046e;\n t.Ksmall = 0xf76b;\n t.L = 0x004c;\n t.LJ = 0x01c7;\n t.LL = 0xf6bf;\n t.Lacute = 0x0139;\n t.Lambda = 0x039b;\n t.Lcaron = 0x013d;\n t.Lcedilla = 0x013b;\n t.Lcircle = 0x24c1;\n t.Lcircumflexbelow = 0x1e3c;\n t.Lcommaaccent = 0x013b;\n t.Ldot = 0x013f;\n t.Ldotaccent = 0x013f;\n t.Ldotbelow = 0x1e36;\n t.Ldotbelowmacron = 0x1e38;\n t.Liwnarmenian = 0x053c;\n t.Lj = 0x01c8;\n t.Ljecyrillic = 0x0409;\n t.Llinebelow = 0x1e3a;\n t.Lmonospace = 0xff2c;\n t.Lslash = 0x0141;\n t.Lslashsmall = 0xf6f9;\n t.Lsmall = 0xf76c;\n t.M = 0x004d;\n t.MBsquare = 0x3386;\n t.Macron = 0xf6d0;\n t.Macronsmall = 0xf7af;\n t.Macute = 0x1e3e;\n t.Mcircle = 0x24c2;\n t.Mdotaccent = 0x1e40;\n t.Mdotbelow = 0x1e42;\n t.Menarmenian = 0x0544;\n t.Mmonospace = 0xff2d;\n t.Msmall = 0xf76d;\n t.Mturned = 0x019c;\n t.Mu = 0x039c;\n t.N = 0x004e;\n t.NJ = 0x01ca;\n t.Nacute = 0x0143;\n t.Ncaron = 0x0147;\n t.Ncedilla = 0x0145;\n t.Ncircle = 0x24c3;\n t.Ncircumflexbelow = 0x1e4a;\n t.Ncommaaccent = 0x0145;\n t.Ndotaccent = 0x1e44;\n t.Ndotbelow = 0x1e46;\n t.Nhookleft = 0x019d;\n t.Nineroman = 0x2168;\n t.Nj = 0x01cb;\n t.Njecyrillic = 0x040a;\n t.Nlinebelow = 0x1e48;\n t.Nmonospace = 0xff2e;\n t.Nowarmenian = 0x0546;\n t.Nsmall = 0xf76e;\n t.Ntilde = 0x00d1;\n t.Ntildesmall = 0xf7f1;\n t.Nu = 0x039d;\n t.O = 0x004f;\n t.OE = 0x0152;\n t.OEsmall = 0xf6fa;\n t.Oacute = 0x00d3;\n t.Oacutesmall = 0xf7f3;\n t.Obarredcyrillic = 0x04e8;\n t.Obarreddieresiscyrillic = 0x04ea;\n t.Obreve = 0x014e;\n t.Ocaron = 0x01d1;\n t.Ocenteredtilde = 0x019f;\n t.Ocircle = 0x24c4;\n t.Ocircumflex = 0x00d4;\n t.Ocircumflexacute = 0x1ed0;\n t.Ocircumflexdotbelow = 0x1ed8;\n t.Ocircumflexgrave = 0x1ed2;\n t.Ocircumflexhookabove = 0x1ed4;\n t.Ocircumflexsmall = 0xf7f4;\n t.Ocircumflextilde = 0x1ed6;\n t.Ocyrillic = 0x041e;\n t.Odblacute = 0x0150;\n t.Odblgrave = 0x020c;\n t.Odieresis = 0x00d6;\n t.Odieresiscyrillic = 0x04e6;\n t.Odieresissmall = 0xf7f6;\n t.Odotbelow = 0x1ecc;\n t.Ogoneksmall = 0xf6fb;\n t.Ograve = 0x00d2;\n t.Ogravesmall = 0xf7f2;\n t.Oharmenian = 0x0555;\n t.Ohm = 0x2126;\n t.Ohookabove = 0x1ece;\n t.Ohorn = 0x01a0;\n t.Ohornacute = 0x1eda;\n t.Ohorndotbelow = 0x1ee2;\n t.Ohorngrave = 0x1edc;\n t.Ohornhookabove = 0x1ede;\n t.Ohorntilde = 0x1ee0;\n t.Ohungarumlaut = 0x0150;\n t.Oi = 0x01a2;\n t.Oinvertedbreve = 0x020e;\n t.Omacron = 0x014c;\n t.Omacronacute = 0x1e52;\n t.Omacrongrave = 0x1e50;\n t.Omega = 0x2126;\n t.Omegacyrillic = 0x0460;\n t.Omegagreek = 0x03a9;\n t.Omegaroundcyrillic = 0x047a;\n t.Omegatitlocyrillic = 0x047c;\n t.Omegatonos = 0x038f;\n t.Omicron = 0x039f;\n t.Omicrontonos = 0x038c;\n t.Omonospace = 0xff2f;\n t.Oneroman = 0x2160;\n t.Oogonek = 0x01ea;\n t.Oogonekmacron = 0x01ec;\n t.Oopen = 0x0186;\n t.Oslash = 0x00d8;\n t.Oslashacute = 0x01fe;\n t.Oslashsmall = 0xf7f8;\n t.Osmall = 0xf76f;\n t.Ostrokeacute = 0x01fe;\n t.Otcyrillic = 0x047e;\n t.Otilde = 0x00d5;\n t.Otildeacute = 0x1e4c;\n t.Otildedieresis = 0x1e4e;\n t.Otildesmall = 0xf7f5;\n t.P = 0x0050;\n t.Pacute = 0x1e54;\n t.Pcircle = 0x24c5;\n t.Pdotaccent = 0x1e56;\n t.Pecyrillic = 0x041f;\n t.Peharmenian = 0x054a;\n t.Pemiddlehookcyrillic = 0x04a6;\n t.Phi = 0x03a6;\n t.Phook = 0x01a4;\n t.Pi = 0x03a0;\n t.Piwrarmenian = 0x0553;\n t.Pmonospace = 0xff30;\n t.Psi = 0x03a8;\n t.Psicyrillic = 0x0470;\n t.Psmall = 0xf770;\n t.Q = 0x0051;\n t.Qcircle = 0x24c6;\n t.Qmonospace = 0xff31;\n t.Qsmall = 0xf771;\n t.R = 0x0052;\n t.Raarmenian = 0x054c;\n t.Racute = 0x0154;\n t.Rcaron = 0x0158;\n t.Rcedilla = 0x0156;\n t.Rcircle = 0x24c7;\n t.Rcommaaccent = 0x0156;\n t.Rdblgrave = 0x0210;\n t.Rdotaccent = 0x1e58;\n t.Rdotbelow = 0x1e5a;\n t.Rdotbelowmacron = 0x1e5c;\n t.Reharmenian = 0x0550;\n t.Rfraktur = 0x211c;\n t.Rho = 0x03a1;\n t.Ringsmall = 0xf6fc;\n t.Rinvertedbreve = 0x0212;\n t.Rlinebelow = 0x1e5e;\n t.Rmonospace = 0xff32;\n t.Rsmall = 0xf772;\n t.Rsmallinverted = 0x0281;\n t.Rsmallinvertedsuperior = 0x02b6;\n t.S = 0x0053;\n t.SF010000 = 0x250c;\n t.SF020000 = 0x2514;\n t.SF030000 = 0x2510;\n t.SF040000 = 0x2518;\n t.SF050000 = 0x253c;\n t.SF060000 = 0x252c;\n t.SF070000 = 0x2534;\n t.SF080000 = 0x251c;\n t.SF090000 = 0x2524;\n t.SF100000 = 0x2500;\n t.SF110000 = 0x2502;\n t.SF190000 = 0x2561;\n t.SF200000 = 0x2562;\n t.SF210000 = 0x2556;\n t.SF220000 = 0x2555;\n t.SF230000 = 0x2563;\n t.SF240000 = 0x2551;\n t.SF250000 = 0x2557;\n t.SF260000 = 0x255d;\n t.SF270000 = 0x255c;\n t.SF280000 = 0x255b;\n t.SF360000 = 0x255e;\n t.SF370000 = 0x255f;\n t.SF380000 = 0x255a;\n t.SF390000 = 0x2554;\n t.SF400000 = 0x2569;\n t.SF410000 = 0x2566;\n t.SF420000 = 0x2560;\n t.SF430000 = 0x2550;\n t.SF440000 = 0x256c;\n t.SF450000 = 0x2567;\n t.SF460000 = 0x2568;\n t.SF470000 = 0x2564;\n t.SF480000 = 0x2565;\n t.SF490000 = 0x2559;\n t.SF500000 = 0x2558;\n t.SF510000 = 0x2552;\n t.SF520000 = 0x2553;\n t.SF530000 = 0x256b;\n t.SF540000 = 0x256a;\n t.Sacute = 0x015a;\n t.Sacutedotaccent = 0x1e64;\n t.Sampigreek = 0x03e0;\n t.Scaron = 0x0160;\n t.Scarondotaccent = 0x1e66;\n t.Scaronsmall = 0xf6fd;\n t.Scedilla = 0x015e;\n t.Schwa = 0x018f;\n t.Schwacyrillic = 0x04d8;\n t.Schwadieresiscyrillic = 0x04da;\n t.Scircle = 0x24c8;\n t.Scircumflex = 0x015c;\n t.Scommaaccent = 0x0218;\n t.Sdotaccent = 0x1e60;\n t.Sdotbelow = 0x1e62;\n t.Sdotbelowdotaccent = 0x1e68;\n t.Seharmenian = 0x054d;\n t.Sevenroman = 0x2166;\n t.Shaarmenian = 0x0547;\n t.Shacyrillic = 0x0428;\n t.Shchacyrillic = 0x0429;\n t.Sheicoptic = 0x03e2;\n t.Shhacyrillic = 0x04ba;\n t.Shimacoptic = 0x03ec;\n t.Sigma = 0x03a3;\n t.Sixroman = 0x2165;\n t.Smonospace = 0xff33;\n t.Softsigncyrillic = 0x042c;\n t.Ssmall = 0xf773;\n t.Stigmagreek = 0x03da;\n t.T = 0x0054;\n t.Tau = 0x03a4;\n t.Tbar = 0x0166;\n t.Tcaron = 0x0164;\n t.Tcedilla = 0x0162;\n t.Tcircle = 0x24c9;\n t.Tcircumflexbelow = 0x1e70;\n t.Tcommaaccent = 0x0162;\n t.Tdotaccent = 0x1e6a;\n t.Tdotbelow = 0x1e6c;\n t.Tecyrillic = 0x0422;\n t.Tedescendercyrillic = 0x04ac;\n t.Tenroman = 0x2169;\n t.Tetsecyrillic = 0x04b4;\n t.Theta = 0x0398;\n t.Thook = 0x01ac;\n t.Thorn = 0x00de;\n t.Thornsmall = 0xf7fe;\n t.Threeroman = 0x2162;\n t.Tildesmall = 0xf6fe;\n t.Tiwnarmenian = 0x054f;\n t.Tlinebelow = 0x1e6e;\n t.Tmonospace = 0xff34;\n t.Toarmenian = 0x0539;\n t.Tonefive = 0x01bc;\n t.Tonesix = 0x0184;\n t.Tonetwo = 0x01a7;\n t.Tretroflexhook = 0x01ae;\n t.Tsecyrillic = 0x0426;\n t.Tshecyrillic = 0x040b;\n t.Tsmall = 0xf774;\n t.Twelveroman = 0x216b;\n t.Tworoman = 0x2161;\n t.U = 0x0055;\n t.Uacute = 0x00da;\n t.Uacutesmall = 0xf7fa;\n t.Ubreve = 0x016c;\n t.Ucaron = 0x01d3;\n t.Ucircle = 0x24ca;\n t.Ucircumflex = 0x00db;\n t.Ucircumflexbelow = 0x1e76;\n t.Ucircumflexsmall = 0xf7fb;\n t.Ucyrillic = 0x0423;\n t.Udblacute = 0x0170;\n t.Udblgrave = 0x0214;\n t.Udieresis = 0x00dc;\n t.Udieresisacute = 0x01d7;\n t.Udieresisbelow = 0x1e72;\n t.Udieresiscaron = 0x01d9;\n t.Udieresiscyrillic = 0x04f0;\n t.Udieresisgrave = 0x01db;\n t.Udieresismacron = 0x01d5;\n t.Udieresissmall = 0xf7fc;\n t.Udotbelow = 0x1ee4;\n t.Ugrave = 0x00d9;\n t.Ugravesmall = 0xf7f9;\n t.Uhookabove = 0x1ee6;\n t.Uhorn = 0x01af;\n t.Uhornacute = 0x1ee8;\n t.Uhorndotbelow = 0x1ef0;\n t.Uhorngrave = 0x1eea;\n t.Uhornhookabove = 0x1eec;\n t.Uhorntilde = 0x1eee;\n t.Uhungarumlaut = 0x0170;\n t.Uhungarumlautcyrillic = 0x04f2;\n t.Uinvertedbreve = 0x0216;\n t.Ukcyrillic = 0x0478;\n t.Umacron = 0x016a;\n t.Umacroncyrillic = 0x04ee;\n t.Umacrondieresis = 0x1e7a;\n t.Umonospace = 0xff35;\n t.Uogonek = 0x0172;\n t.Upsilon = 0x03a5;\n t.Upsilon1 = 0x03d2;\n t.Upsilonacutehooksymbolgreek = 0x03d3;\n t.Upsilonafrican = 0x01b1;\n t.Upsilondieresis = 0x03ab;\n t.Upsilondieresishooksymbolgreek = 0x03d4;\n t.Upsilonhooksymbol = 0x03d2;\n t.Upsilontonos = 0x038e;\n t.Uring = 0x016e;\n t.Ushortcyrillic = 0x040e;\n t.Usmall = 0xf775;\n t.Ustraightcyrillic = 0x04ae;\n t.Ustraightstrokecyrillic = 0x04b0;\n t.Utilde = 0x0168;\n t.Utildeacute = 0x1e78;\n t.Utildebelow = 0x1e74;\n t.V = 0x0056;\n t.Vcircle = 0x24cb;\n t.Vdotbelow = 0x1e7e;\n t.Vecyrillic = 0x0412;\n t.Vewarmenian = 0x054e;\n t.Vhook = 0x01b2;\n t.Vmonospace = 0xff36;\n t.Voarmenian = 0x0548;\n t.Vsmall = 0xf776;\n t.Vtilde = 0x1e7c;\n t.W = 0x0057;\n t.Wacute = 0x1e82;\n t.Wcircle = 0x24cc;\n t.Wcircumflex = 0x0174;\n t.Wdieresis = 0x1e84;\n t.Wdotaccent = 0x1e86;\n t.Wdotbelow = 0x1e88;\n t.Wgrave = 0x1e80;\n t.Wmonospace = 0xff37;\n t.Wsmall = 0xf777;\n t.X = 0x0058;\n t.Xcircle = 0x24cd;\n t.Xdieresis = 0x1e8c;\n t.Xdotaccent = 0x1e8a;\n t.Xeharmenian = 0x053d;\n t.Xi = 0x039e;\n t.Xmonospace = 0xff38;\n t.Xsmall = 0xf778;\n t.Y = 0x0059;\n t.Yacute = 0x00dd;\n t.Yacutesmall = 0xf7fd;\n t.Yatcyrillic = 0x0462;\n t.Ycircle = 0x24ce;\n t.Ycircumflex = 0x0176;\n t.Ydieresis = 0x0178;\n t.Ydieresissmall = 0xf7ff;\n t.Ydotaccent = 0x1e8e;\n t.Ydotbelow = 0x1ef4;\n t.Yericyrillic = 0x042b;\n t.Yerudieresiscyrillic = 0x04f8;\n t.Ygrave = 0x1ef2;\n t.Yhook = 0x01b3;\n t.Yhookabove = 0x1ef6;\n t.Yiarmenian = 0x0545;\n t.Yicyrillic = 0x0407;\n t.Yiwnarmenian = 0x0552;\n t.Ymonospace = 0xff39;\n t.Ysmall = 0xf779;\n t.Ytilde = 0x1ef8;\n t.Yusbigcyrillic = 0x046a;\n t.Yusbigiotifiedcyrillic = 0x046c;\n t.Yuslittlecyrillic = 0x0466;\n t.Yuslittleiotifiedcyrillic = 0x0468;\n t.Z = 0x005a;\n t.Zaarmenian = 0x0536;\n t.Zacute = 0x0179;\n t.Zcaron = 0x017d;\n t.Zcaronsmall = 0xf6ff;\n t.Zcircle = 0x24cf;\n t.Zcircumflex = 0x1e90;\n t.Zdot = 0x017b;\n t.Zdotaccent = 0x017b;\n t.Zdotbelow = 0x1e92;\n t.Zecyrillic = 0x0417;\n t.Zedescendercyrillic = 0x0498;\n t.Zedieresiscyrillic = 0x04de;\n t.Zeta = 0x0396;\n t.Zhearmenian = 0x053a;\n t.Zhebrevecyrillic = 0x04c1;\n t.Zhecyrillic = 0x0416;\n t.Zhedescendercyrillic = 0x0496;\n t.Zhedieresiscyrillic = 0x04dc;\n t.Zlinebelow = 0x1e94;\n t.Zmonospace = 0xff3a;\n t.Zsmall = 0xf77a;\n t.Zstroke = 0x01b5;\n t.a = 0x0061;\n t.aabengali = 0x0986;\n t.aacute = 0x00e1;\n t.aadeva = 0x0906;\n t.aagujarati = 0x0a86;\n t.aagurmukhi = 0x0a06;\n t.aamatragurmukhi = 0x0a3e;\n t.aarusquare = 0x3303;\n t.aavowelsignbengali = 0x09be;\n t.aavowelsigndeva = 0x093e;\n t.aavowelsigngujarati = 0x0abe;\n t.abbreviationmarkarmenian = 0x055f;\n t.abbreviationsigndeva = 0x0970;\n t.abengali = 0x0985;\n t.abopomofo = 0x311a;\n t.abreve = 0x0103;\n t.abreveacute = 0x1eaf;\n t.abrevecyrillic = 0x04d1;\n t.abrevedotbelow = 0x1eb7;\n t.abrevegrave = 0x1eb1;\n t.abrevehookabove = 0x1eb3;\n t.abrevetilde = 0x1eb5;\n t.acaron = 0x01ce;\n t.acircle = 0x24d0;\n t.acircumflex = 0x00e2;\n t.acircumflexacute = 0x1ea5;\n t.acircumflexdotbelow = 0x1ead;\n t.acircumflexgrave = 0x1ea7;\n t.acircumflexhookabove = 0x1ea9;\n t.acircumflextilde = 0x1eab;\n t.acute = 0x00b4;\n t.acutebelowcmb = 0x0317;\n t.acutecmb = 0x0301;\n t.acutecomb = 0x0301;\n t.acutedeva = 0x0954;\n t.acutelowmod = 0x02cf;\n t.acutetonecmb = 0x0341;\n t.acyrillic = 0x0430;\n t.adblgrave = 0x0201;\n t.addakgurmukhi = 0x0a71;\n t.adeva = 0x0905;\n t.adieresis = 0x00e4;\n t.adieresiscyrillic = 0x04d3;\n t.adieresismacron = 0x01df;\n t.adotbelow = 0x1ea1;\n t.adotmacron = 0x01e1;\n t.ae = 0x00e6;\n t.aeacute = 0x01fd;\n t.aekorean = 0x3150;\n t.aemacron = 0x01e3;\n t.afii00208 = 0x2015;\n t.afii08941 = 0x20a4;\n t.afii10017 = 0x0410;\n t.afii10018 = 0x0411;\n t.afii10019 = 0x0412;\n t.afii10020 = 0x0413;\n t.afii10021 = 0x0414;\n t.afii10022 = 0x0415;\n t.afii10023 = 0x0401;\n t.afii10024 = 0x0416;\n t.afii10025 = 0x0417;\n t.afii10026 = 0x0418;\n t.afii10027 = 0x0419;\n t.afii10028 = 0x041a;\n t.afii10029 = 0x041b;\n t.afii10030 = 0x041c;\n t.afii10031 = 0x041d;\n t.afii10032 = 0x041e;\n t.afii10033 = 0x041f;\n t.afii10034 = 0x0420;\n t.afii10035 = 0x0421;\n t.afii10036 = 0x0422;\n t.afii10037 = 0x0423;\n t.afii10038 = 0x0424;\n t.afii10039 = 0x0425;\n t.afii10040 = 0x0426;\n t.afii10041 = 0x0427;\n t.afii10042 = 0x0428;\n t.afii10043 = 0x0429;\n t.afii10044 = 0x042a;\n t.afii10045 = 0x042b;\n t.afii10046 = 0x042c;\n t.afii10047 = 0x042d;\n t.afii10048 = 0x042e;\n t.afii10049 = 0x042f;\n t.afii10050 = 0x0490;\n t.afii10051 = 0x0402;\n t.afii10052 = 0x0403;\n t.afii10053 = 0x0404;\n t.afii10054 = 0x0405;\n t.afii10055 = 0x0406;\n t.afii10056 = 0x0407;\n t.afii10057 = 0x0408;\n t.afii10058 = 0x0409;\n t.afii10059 = 0x040a;\n t.afii10060 = 0x040b;\n t.afii10061 = 0x040c;\n t.afii10062 = 0x040e;\n t.afii10063 = 0xf6c4;\n t.afii10064 = 0xf6c5;\n t.afii10065 = 0x0430;\n t.afii10066 = 0x0431;\n t.afii10067 = 0x0432;\n t.afii10068 = 0x0433;\n t.afii10069 = 0x0434;\n t.afii10070 = 0x0435;\n t.afii10071 = 0x0451;\n t.afii10072 = 0x0436;\n t.afii10073 = 0x0437;\n t.afii10074 = 0x0438;\n t.afii10075 = 0x0439;\n t.afii10076 = 0x043a;\n t.afii10077 = 0x043b;\n t.afii10078 = 0x043c;\n t.afii10079 = 0x043d;\n t.afii10080 = 0x043e;\n t.afii10081 = 0x043f;\n t.afii10082 = 0x0440;\n t.afii10083 = 0x0441;\n t.afii10084 = 0x0442;\n t.afii10085 = 0x0443;\n t.afii10086 = 0x0444;\n t.afii10087 = 0x0445;\n t.afii10088 = 0x0446;\n t.afii10089 = 0x0447;\n t.afii10090 = 0x0448;\n t.afii10091 = 0x0449;\n t.afii10092 = 0x044a;\n t.afii10093 = 0x044b;\n t.afii10094 = 0x044c;\n t.afii10095 = 0x044d;\n t.afii10096 = 0x044e;\n t.afii10097 = 0x044f;\n t.afii10098 = 0x0491;\n t.afii10099 = 0x0452;\n t.afii10100 = 0x0453;\n t.afii10101 = 0x0454;\n t.afii10102 = 0x0455;\n t.afii10103 = 0x0456;\n t.afii10104 = 0x0457;\n t.afii10105 = 0x0458;\n t.afii10106 = 0x0459;\n t.afii10107 = 0x045a;\n t.afii10108 = 0x045b;\n t.afii10109 = 0x045c;\n t.afii10110 = 0x045e;\n t.afii10145 = 0x040f;\n t.afii10146 = 0x0462;\n t.afii10147 = 0x0472;\n t.afii10148 = 0x0474;\n t.afii10192 = 0xf6c6;\n t.afii10193 = 0x045f;\n t.afii10194 = 0x0463;\n t.afii10195 = 0x0473;\n t.afii10196 = 0x0475;\n t.afii10831 = 0xf6c7;\n t.afii10832 = 0xf6c8;\n t.afii10846 = 0x04d9;\n t.afii299 = 0x200e;\n t.afii300 = 0x200f;\n t.afii301 = 0x200d;\n t.afii57381 = 0x066a;\n t.afii57388 = 0x060c;\n t.afii57392 = 0x0660;\n t.afii57393 = 0x0661;\n t.afii57394 = 0x0662;\n t.afii57395 = 0x0663;\n t.afii57396 = 0x0664;\n t.afii57397 = 0x0665;\n t.afii57398 = 0x0666;\n t.afii57399 = 0x0667;\n t.afii57400 = 0x0668;\n t.afii57401 = 0x0669;\n t.afii57403 = 0x061b;\n t.afii57407 = 0x061f;\n t.afii57409 = 0x0621;\n t.afii57410 = 0x0622;\n t.afii57411 = 0x0623;\n t.afii57412 = 0x0624;\n t.afii57413 = 0x0625;\n t.afii57414 = 0x0626;\n t.afii57415 = 0x0627;\n t.afii57416 = 0x0628;\n t.afii57417 = 0x0629;\n t.afii57418 = 0x062a;\n t.afii57419 = 0x062b;\n t.afii57420 = 0x062c;\n t.afii57421 = 0x062d;\n t.afii57422 = 0x062e;\n t.afii57423 = 0x062f;\n t.afii57424 = 0x0630;\n t.afii57425 = 0x0631;\n t.afii57426 = 0x0632;\n t.afii57427 = 0x0633;\n t.afii57428 = 0x0634;\n t.afii57429 = 0x0635;\n t.afii57430 = 0x0636;\n t.afii57431 = 0x0637;\n t.afii57432 = 0x0638;\n t.afii57433 = 0x0639;\n t.afii57434 = 0x063a;\n t.afii57440 = 0x0640;\n t.afii57441 = 0x0641;\n t.afii57442 = 0x0642;\n t.afii57443 = 0x0643;\n t.afii57444 = 0x0644;\n t.afii57445 = 0x0645;\n t.afii57446 = 0x0646;\n t.afii57448 = 0x0648;\n t.afii57449 = 0x0649;\n t.afii57450 = 0x064a;\n t.afii57451 = 0x064b;\n t.afii57452 = 0x064c;\n t.afii57453 = 0x064d;\n t.afii57454 = 0x064e;\n t.afii57455 = 0x064f;\n t.afii57456 = 0x0650;\n t.afii57457 = 0x0651;\n t.afii57458 = 0x0652;\n t.afii57470 = 0x0647;\n t.afii57505 = 0x06a4;\n t.afii57506 = 0x067e;\n t.afii57507 = 0x0686;\n t.afii57508 = 0x0698;\n t.afii57509 = 0x06af;\n t.afii57511 = 0x0679;\n t.afii57512 = 0x0688;\n t.afii57513 = 0x0691;\n t.afii57514 = 0x06ba;\n t.afii57519 = 0x06d2;\n t.afii57534 = 0x06d5;\n t.afii57636 = 0x20aa;\n t.afii57645 = 0x05be;\n t.afii57658 = 0x05c3;\n t.afii57664 = 0x05d0;\n t.afii57665 = 0x05d1;\n t.afii57666 = 0x05d2;\n t.afii57667 = 0x05d3;\n t.afii57668 = 0x05d4;\n t.afii57669 = 0x05d5;\n t.afii57670 = 0x05d6;\n t.afii57671 = 0x05d7;\n t.afii57672 = 0x05d8;\n t.afii57673 = 0x05d9;\n t.afii57674 = 0x05da;\n t.afii57675 = 0x05db;\n t.afii57676 = 0x05dc;\n t.afii57677 = 0x05dd;\n t.afii57678 = 0x05de;\n t.afii57679 = 0x05df;\n t.afii57680 = 0x05e0;\n t.afii57681 = 0x05e1;\n t.afii57682 = 0x05e2;\n t.afii57683 = 0x05e3;\n t.afii57684 = 0x05e4;\n t.afii57685 = 0x05e5;\n t.afii57686 = 0x05e6;\n t.afii57687 = 0x05e7;\n t.afii57688 = 0x05e8;\n t.afii57689 = 0x05e9;\n t.afii57690 = 0x05ea;\n t.afii57694 = 0xfb2a;\n t.afii57695 = 0xfb2b;\n t.afii57700 = 0xfb4b;\n t.afii57705 = 0xfb1f;\n t.afii57716 = 0x05f0;\n t.afii57717 = 0x05f1;\n t.afii57718 = 0x05f2;\n t.afii57723 = 0xfb35;\n t.afii57793 = 0x05b4;\n t.afii57794 = 0x05b5;\n t.afii57795 = 0x05b6;\n t.afii57796 = 0x05bb;\n t.afii57797 = 0x05b8;\n t.afii57798 = 0x05b7;\n t.afii57799 = 0x05b0;\n t.afii57800 = 0x05b2;\n t.afii57801 = 0x05b1;\n t.afii57802 = 0x05b3;\n t.afii57803 = 0x05c2;\n t.afii57804 = 0x05c1;\n t.afii57806 = 0x05b9;\n t.afii57807 = 0x05bc;\n t.afii57839 = 0x05bd;\n t.afii57841 = 0x05bf;\n t.afii57842 = 0x05c0;\n t.afii57929 = 0x02bc;\n t.afii61248 = 0x2105;\n t.afii61289 = 0x2113;\n t.afii61352 = 0x2116;\n t.afii61573 = 0x202c;\n t.afii61574 = 0x202d;\n t.afii61575 = 0x202e;\n t.afii61664 = 0x200c;\n t.afii63167 = 0x066d;\n t.afii64937 = 0x02bd;\n t.agrave = 0x00e0;\n t.agujarati = 0x0a85;\n t.agurmukhi = 0x0a05;\n t.ahiragana = 0x3042;\n t.ahookabove = 0x1ea3;\n t.aibengali = 0x0990;\n t.aibopomofo = 0x311e;\n t.aideva = 0x0910;\n t.aiecyrillic = 0x04d5;\n t.aigujarati = 0x0a90;\n t.aigurmukhi = 0x0a10;\n t.aimatragurmukhi = 0x0a48;\n t.ainarabic = 0x0639;\n t.ainfinalarabic = 0xfeca;\n t.aininitialarabic = 0xfecb;\n t.ainmedialarabic = 0xfecc;\n t.ainvertedbreve = 0x0203;\n t.aivowelsignbengali = 0x09c8;\n t.aivowelsigndeva = 0x0948;\n t.aivowelsigngujarati = 0x0ac8;\n t.akatakana = 0x30a2;\n t.akatakanahalfwidth = 0xff71;\n t.akorean = 0x314f;\n t.alef = 0x05d0;\n t.alefarabic = 0x0627;\n t.alefdageshhebrew = 0xfb30;\n t.aleffinalarabic = 0xfe8e;\n t.alefhamzaabovearabic = 0x0623;\n t.alefhamzaabovefinalarabic = 0xfe84;\n t.alefhamzabelowarabic = 0x0625;\n t.alefhamzabelowfinalarabic = 0xfe88;\n t.alefhebrew = 0x05d0;\n t.aleflamedhebrew = 0xfb4f;\n t.alefmaddaabovearabic = 0x0622;\n t.alefmaddaabovefinalarabic = 0xfe82;\n t.alefmaksuraarabic = 0x0649;\n t.alefmaksurafinalarabic = 0xfef0;\n t.alefmaksurainitialarabic = 0xfef3;\n t.alefmaksuramedialarabic = 0xfef4;\n t.alefpatahhebrew = 0xfb2e;\n t.alefqamatshebrew = 0xfb2f;\n t.aleph = 0x2135;\n t.allequal = 0x224c;\n t.alpha = 0x03b1;\n t.alphatonos = 0x03ac;\n t.amacron = 0x0101;\n t.amonospace = 0xff41;\n t.ampersand = 0x0026;\n t.ampersandmonospace = 0xff06;\n t.ampersandsmall = 0xf726;\n t.amsquare = 0x33c2;\n t.anbopomofo = 0x3122;\n t.angbopomofo = 0x3124;\n t.angbracketleft = 0x3008;\n t.angbracketright = 0x3009;\n t.angkhankhuthai = 0x0e5a;\n t.angle = 0x2220;\n t.anglebracketleft = 0x3008;\n t.anglebracketleftvertical = 0xfe3f;\n t.anglebracketright = 0x3009;\n t.anglebracketrightvertical = 0xfe40;\n t.angleleft = 0x2329;\n t.angleright = 0x232a;\n t.angstrom = 0x212b;\n t.anoteleia = 0x0387;\n t.anudattadeva = 0x0952;\n t.anusvarabengali = 0x0982;\n t.anusvaradeva = 0x0902;\n t.anusvaragujarati = 0x0a82;\n t.aogonek = 0x0105;\n t.apaatosquare = 0x3300;\n t.aparen = 0x249c;\n t.apostrophearmenian = 0x055a;\n t.apostrophemod = 0x02bc;\n t.apple = 0xf8ff;\n t.approaches = 0x2250;\n t.approxequal = 0x2248;\n t.approxequalorimage = 0x2252;\n t.approximatelyequal = 0x2245;\n t.araeaekorean = 0x318e;\n t.araeakorean = 0x318d;\n t.arc = 0x2312;\n t.arighthalfring = 0x1e9a;\n t.aring = 0x00e5;\n t.aringacute = 0x01fb;\n t.aringbelow = 0x1e01;\n t.arrowboth = 0x2194;\n t.arrowdashdown = 0x21e3;\n t.arrowdashleft = 0x21e0;\n t.arrowdashright = 0x21e2;\n t.arrowdashup = 0x21e1;\n t.arrowdblboth = 0x21d4;\n t.arrowdbldown = 0x21d3;\n t.arrowdblleft = 0x21d0;\n t.arrowdblright = 0x21d2;\n t.arrowdblup = 0x21d1;\n t.arrowdown = 0x2193;\n t.arrowdownleft = 0x2199;\n t.arrowdownright = 0x2198;\n t.arrowdownwhite = 0x21e9;\n t.arrowheaddownmod = 0x02c5;\n t.arrowheadleftmod = 0x02c2;\n t.arrowheadrightmod = 0x02c3;\n t.arrowheadupmod = 0x02c4;\n t.arrowhorizex = 0xf8e7;\n t.arrowleft = 0x2190;\n t.arrowleftdbl = 0x21d0;\n t.arrowleftdblstroke = 0x21cd;\n t.arrowleftoverright = 0x21c6;\n t.arrowleftwhite = 0x21e6;\n t.arrowright = 0x2192;\n t.arrowrightdblstroke = 0x21cf;\n t.arrowrightheavy = 0x279e;\n t.arrowrightoverleft = 0x21c4;\n t.arrowrightwhite = 0x21e8;\n t.arrowtableft = 0x21e4;\n t.arrowtabright = 0x21e5;\n t.arrowup = 0x2191;\n t.arrowupdn = 0x2195;\n t.arrowupdnbse = 0x21a8;\n t.arrowupdownbase = 0x21a8;\n t.arrowupleft = 0x2196;\n t.arrowupleftofdown = 0x21c5;\n t.arrowupright = 0x2197;\n t.arrowupwhite = 0x21e7;\n t.arrowvertex = 0xf8e6;\n t.asciicircum = 0x005e;\n t.asciicircummonospace = 0xff3e;\n t.asciitilde = 0x007e;\n t.asciitildemonospace = 0xff5e;\n t.ascript = 0x0251;\n t.ascriptturned = 0x0252;\n t.asmallhiragana = 0x3041;\n t.asmallkatakana = 0x30a1;\n t.asmallkatakanahalfwidth = 0xff67;\n t.asterisk = 0x002a;\n t.asteriskaltonearabic = 0x066d;\n t.asteriskarabic = 0x066d;\n t.asteriskmath = 0x2217;\n t.asteriskmonospace = 0xff0a;\n t.asterisksmall = 0xfe61;\n t.asterism = 0x2042;\n t.asuperior = 0xf6e9;\n t.asymptoticallyequal = 0x2243;\n t.at = 0x0040;\n t.atilde = 0x00e3;\n t.atmonospace = 0xff20;\n t.atsmall = 0xfe6b;\n t.aturned = 0x0250;\n t.aubengali = 0x0994;\n t.aubopomofo = 0x3120;\n t.audeva = 0x0914;\n t.augujarati = 0x0a94;\n t.augurmukhi = 0x0a14;\n t.aulengthmarkbengali = 0x09d7;\n t.aumatragurmukhi = 0x0a4c;\n t.auvowelsignbengali = 0x09cc;\n t.auvowelsigndeva = 0x094c;\n t.auvowelsigngujarati = 0x0acc;\n t.avagrahadeva = 0x093d;\n t.aybarmenian = 0x0561;\n t.ayin = 0x05e2;\n t.ayinaltonehebrew = 0xfb20;\n t.ayinhebrew = 0x05e2;\n t.b = 0x0062;\n t.babengali = 0x09ac;\n t.backslash = 0x005c;\n t.backslashmonospace = 0xff3c;\n t.badeva = 0x092c;\n t.bagujarati = 0x0aac;\n t.bagurmukhi = 0x0a2c;\n t.bahiragana = 0x3070;\n t.bahtthai = 0x0e3f;\n t.bakatakana = 0x30d0;\n t.bar = 0x007c;\n t.barmonospace = 0xff5c;\n t.bbopomofo = 0x3105;\n t.bcircle = 0x24d1;\n t.bdotaccent = 0x1e03;\n t.bdotbelow = 0x1e05;\n t.beamedsixteenthnotes = 0x266c;\n t.because = 0x2235;\n t.becyrillic = 0x0431;\n t.beharabic = 0x0628;\n t.behfinalarabic = 0xfe90;\n t.behinitialarabic = 0xfe91;\n t.behiragana = 0x3079;\n t.behmedialarabic = 0xfe92;\n t.behmeeminitialarabic = 0xfc9f;\n t.behmeemisolatedarabic = 0xfc08;\n t.behnoonfinalarabic = 0xfc6d;\n t.bekatakana = 0x30d9;\n t.benarmenian = 0x0562;\n t.bet = 0x05d1;\n t.beta = 0x03b2;\n t.betasymbolgreek = 0x03d0;\n t.betdagesh = 0xfb31;\n t.betdageshhebrew = 0xfb31;\n t.bethebrew = 0x05d1;\n t.betrafehebrew = 0xfb4c;\n t.bhabengali = 0x09ad;\n t.bhadeva = 0x092d;\n t.bhagujarati = 0x0aad;\n t.bhagurmukhi = 0x0a2d;\n t.bhook = 0x0253;\n t.bihiragana = 0x3073;\n t.bikatakana = 0x30d3;\n t.bilabialclick = 0x0298;\n t.bindigurmukhi = 0x0a02;\n t.birusquare = 0x3331;\n t.blackcircle = 0x25cf;\n t.blackdiamond = 0x25c6;\n t.blackdownpointingtriangle = 0x25bc;\n t.blackleftpointingpointer = 0x25c4;\n t.blackleftpointingtriangle = 0x25c0;\n t.blacklenticularbracketleft = 0x3010;\n t.blacklenticularbracketleftvertical = 0xfe3b;\n t.blacklenticularbracketright = 0x3011;\n t.blacklenticularbracketrightvertical = 0xfe3c;\n t.blacklowerlefttriangle = 0x25e3;\n t.blacklowerrighttriangle = 0x25e2;\n t.blackrectangle = 0x25ac;\n t.blackrightpointingpointer = 0x25ba;\n t.blackrightpointingtriangle = 0x25b6;\n t.blacksmallsquare = 0x25aa;\n t.blacksmilingface = 0x263b;\n t.blacksquare = 0x25a0;\n t.blackstar = 0x2605;\n t.blackupperlefttriangle = 0x25e4;\n t.blackupperrighttriangle = 0x25e5;\n t.blackuppointingsmalltriangle = 0x25b4;\n t.blackuppointingtriangle = 0x25b2;\n t.blank = 0x2423;\n t.blinebelow = 0x1e07;\n t.block = 0x2588;\n t.bmonospace = 0xff42;\n t.bobaimaithai = 0x0e1a;\n t.bohiragana = 0x307c;\n t.bokatakana = 0x30dc;\n t.bparen = 0x249d;\n t.bqsquare = 0x33c3;\n t.braceex = 0xf8f4;\n t.braceleft = 0x007b;\n t.braceleftbt = 0xf8f3;\n t.braceleftmid = 0xf8f2;\n t.braceleftmonospace = 0xff5b;\n t.braceleftsmall = 0xfe5b;\n t.bracelefttp = 0xf8f1;\n t.braceleftvertical = 0xfe37;\n t.braceright = 0x007d;\n t.bracerightbt = 0xf8fe;\n t.bracerightmid = 0xf8fd;\n t.bracerightmonospace = 0xff5d;\n t.bracerightsmall = 0xfe5c;\n t.bracerighttp = 0xf8fc;\n t.bracerightvertical = 0xfe38;\n t.bracketleft = 0x005b;\n t.bracketleftbt = 0xf8f0;\n t.bracketleftex = 0xf8ef;\n t.bracketleftmonospace = 0xff3b;\n t.bracketlefttp = 0xf8ee;\n t.bracketright = 0x005d;\n t.bracketrightbt = 0xf8fb;\n t.bracketrightex = 0xf8fa;\n t.bracketrightmonospace = 0xff3d;\n t.bracketrighttp = 0xf8f9;\n t.breve = 0x02d8;\n t.brevebelowcmb = 0x032e;\n t.brevecmb = 0x0306;\n t.breveinvertedbelowcmb = 0x032f;\n t.breveinvertedcmb = 0x0311;\n t.breveinverteddoublecmb = 0x0361;\n t.bridgebelowcmb = 0x032a;\n t.bridgeinvertedbelowcmb = 0x033a;\n t.brokenbar = 0x00a6;\n t.bstroke = 0x0180;\n t.bsuperior = 0xf6ea;\n t.btopbar = 0x0183;\n t.buhiragana = 0x3076;\n t.bukatakana = 0x30d6;\n t.bullet = 0x2022;\n t.bulletinverse = 0x25d8;\n t.bulletoperator = 0x2219;\n t.bullseye = 0x25ce;\n t.c = 0x0063;\n t.caarmenian = 0x056e;\n t.cabengali = 0x099a;\n t.cacute = 0x0107;\n t.cadeva = 0x091a;\n t.cagujarati = 0x0a9a;\n t.cagurmukhi = 0x0a1a;\n t.calsquare = 0x3388;\n t.candrabindubengali = 0x0981;\n t.candrabinducmb = 0x0310;\n t.candrabindudeva = 0x0901;\n t.candrabindugujarati = 0x0a81;\n t.capslock = 0x21ea;\n t.careof = 0x2105;\n t.caron = 0x02c7;\n t.caronbelowcmb = 0x032c;\n t.caroncmb = 0x030c;\n t.carriagereturn = 0x21b5;\n t.cbopomofo = 0x3118;\n t.ccaron = 0x010d;\n t.ccedilla = 0x00e7;\n t.ccedillaacute = 0x1e09;\n t.ccircle = 0x24d2;\n t.ccircumflex = 0x0109;\n t.ccurl = 0x0255;\n t.cdot = 0x010b;\n t.cdotaccent = 0x010b;\n t.cdsquare = 0x33c5;\n t.cedilla = 0x00b8;\n t.cedillacmb = 0x0327;\n t.cent = 0x00a2;\n t.centigrade = 0x2103;\n t.centinferior = 0xf6df;\n t.centmonospace = 0xffe0;\n t.centoldstyle = 0xf7a2;\n t.centsuperior = 0xf6e0;\n t.chaarmenian = 0x0579;\n t.chabengali = 0x099b;\n t.chadeva = 0x091b;\n t.chagujarati = 0x0a9b;\n t.chagurmukhi = 0x0a1b;\n t.chbopomofo = 0x3114;\n t.cheabkhasiancyrillic = 0x04bd;\n t.checkmark = 0x2713;\n t.checyrillic = 0x0447;\n t.chedescenderabkhasiancyrillic = 0x04bf;\n t.chedescendercyrillic = 0x04b7;\n t.chedieresiscyrillic = 0x04f5;\n t.cheharmenian = 0x0573;\n t.chekhakassiancyrillic = 0x04cc;\n t.cheverticalstrokecyrillic = 0x04b9;\n t.chi = 0x03c7;\n t.chieuchacirclekorean = 0x3277;\n t.chieuchaparenkorean = 0x3217;\n t.chieuchcirclekorean = 0x3269;\n t.chieuchkorean = 0x314a;\n t.chieuchparenkorean = 0x3209;\n t.chochangthai = 0x0e0a;\n t.chochanthai = 0x0e08;\n t.chochingthai = 0x0e09;\n t.chochoethai = 0x0e0c;\n t.chook = 0x0188;\n t.cieucacirclekorean = 0x3276;\n t.cieucaparenkorean = 0x3216;\n t.cieuccirclekorean = 0x3268;\n t.cieuckorean = 0x3148;\n t.cieucparenkorean = 0x3208;\n t.cieucuparenkorean = 0x321c;\n t.circle = 0x25cb;\n t.circlecopyrt = 0x00a9;\n t.circlemultiply = 0x2297;\n t.circleot = 0x2299;\n t.circleplus = 0x2295;\n t.circlepostalmark = 0x3036;\n t.circlewithlefthalfblack = 0x25d0;\n t.circlewithrighthalfblack = 0x25d1;\n t.circumflex = 0x02c6;\n t.circumflexbelowcmb = 0x032d;\n t.circumflexcmb = 0x0302;\n t.clear = 0x2327;\n t.clickalveolar = 0x01c2;\n t.clickdental = 0x01c0;\n t.clicklateral = 0x01c1;\n t.clickretroflex = 0x01c3;\n t.club = 0x2663;\n t.clubsuitblack = 0x2663;\n t.clubsuitwhite = 0x2667;\n t.cmcubedsquare = 0x33a4;\n t.cmonospace = 0xff43;\n t.cmsquaredsquare = 0x33a0;\n t.coarmenian = 0x0581;\n t.colon = 0x003a;\n t.colonmonetary = 0x20a1;\n t.colonmonospace = 0xff1a;\n t.colonsign = 0x20a1;\n t.colonsmall = 0xfe55;\n t.colontriangularhalfmod = 0x02d1;\n t.colontriangularmod = 0x02d0;\n t.comma = 0x002c;\n t.commaabovecmb = 0x0313;\n t.commaaboverightcmb = 0x0315;\n t.commaaccent = 0xf6c3;\n t.commaarabic = 0x060c;\n t.commaarmenian = 0x055d;\n t.commainferior = 0xf6e1;\n t.commamonospace = 0xff0c;\n t.commareversedabovecmb = 0x0314;\n t.commareversedmod = 0x02bd;\n t.commasmall = 0xfe50;\n t.commasuperior = 0xf6e2;\n t.commaturnedabovecmb = 0x0312;\n t.commaturnedmod = 0x02bb;\n t.compass = 0x263c;\n t.congruent = 0x2245;\n t.contourintegral = 0x222e;\n t.control = 0x2303;\n t.controlACK = 0x0006;\n t.controlBEL = 0x0007;\n t.controlBS = 0x0008;\n t.controlCAN = 0x0018;\n t.controlCR = 0x000d;\n t.controlDC1 = 0x0011;\n t.controlDC2 = 0x0012;\n t.controlDC3 = 0x0013;\n t.controlDC4 = 0x0014;\n t.controlDEL = 0x007f;\n t.controlDLE = 0x0010;\n t.controlEM = 0x0019;\n t.controlENQ = 0x0005;\n t.controlEOT = 0x0004;\n t.controlESC = 0x001b;\n t.controlETB = 0x0017;\n t.controlETX = 0x0003;\n t.controlFF = 0x000c;\n t.controlFS = 0x001c;\n t.controlGS = 0x001d;\n t.controlHT = 0x0009;\n t.controlLF = 0x000a;\n t.controlNAK = 0x0015;\n t.controlNULL = 0x0000;\n t.controlRS = 0x001e;\n t.controlSI = 0x000f;\n t.controlSO = 0x000e;\n t.controlSOT = 0x0002;\n t.controlSTX = 0x0001;\n t.controlSUB = 0x001a;\n t.controlSYN = 0x0016;\n t.controlUS = 0x001f;\n t.controlVT = 0x000b;\n t.copyright = 0x00a9;\n t.copyrightsans = 0xf8e9;\n t.copyrightserif = 0xf6d9;\n t.cornerbracketleft = 0x300c;\n t.cornerbracketlefthalfwidth = 0xff62;\n t.cornerbracketleftvertical = 0xfe41;\n t.cornerbracketright = 0x300d;\n t.cornerbracketrighthalfwidth = 0xff63;\n t.cornerbracketrightvertical = 0xfe42;\n t.corporationsquare = 0x337f;\n t.cosquare = 0x33c7;\n t.coverkgsquare = 0x33c6;\n t.cparen = 0x249e;\n t.cruzeiro = 0x20a2;\n t.cstretched = 0x0297;\n t.curlyand = 0x22cf;\n t.curlyor = 0x22ce;\n t.currency = 0x00a4;\n t.cyrBreve = 0xf6d1;\n t.cyrFlex = 0xf6d2;\n t.cyrbreve = 0xf6d4;\n t.cyrflex = 0xf6d5;\n t.d = 0x0064;\n t.daarmenian = 0x0564;\n t.dabengali = 0x09a6;\n t.dadarabic = 0x0636;\n t.dadeva = 0x0926;\n t.dadfinalarabic = 0xfebe;\n t.dadinitialarabic = 0xfebf;\n t.dadmedialarabic = 0xfec0;\n t.dagesh = 0x05bc;\n t.dageshhebrew = 0x05bc;\n t.dagger = 0x2020;\n t.daggerdbl = 0x2021;\n t.dagujarati = 0x0aa6;\n t.dagurmukhi = 0x0a26;\n t.dahiragana = 0x3060;\n t.dakatakana = 0x30c0;\n t.dalarabic = 0x062f;\n t.dalet = 0x05d3;\n t.daletdagesh = 0xfb33;\n t.daletdageshhebrew = 0xfb33;\n t.dalethebrew = 0x05d3;\n t.dalfinalarabic = 0xfeaa;\n t.dammaarabic = 0x064f;\n t.dammalowarabic = 0x064f;\n t.dammatanaltonearabic = 0x064c;\n t.dammatanarabic = 0x064c;\n t.danda = 0x0964;\n t.dargahebrew = 0x05a7;\n t.dargalefthebrew = 0x05a7;\n t.dasiapneumatacyrilliccmb = 0x0485;\n t.dblGrave = 0xf6d3;\n t.dblanglebracketleft = 0x300a;\n t.dblanglebracketleftvertical = 0xfe3d;\n t.dblanglebracketright = 0x300b;\n t.dblanglebracketrightvertical = 0xfe3e;\n t.dblarchinvertedbelowcmb = 0x032b;\n t.dblarrowleft = 0x21d4;\n t.dblarrowright = 0x21d2;\n t.dbldanda = 0x0965;\n t.dblgrave = 0xf6d6;\n t.dblgravecmb = 0x030f;\n t.dblintegral = 0x222c;\n t.dbllowline = 0x2017;\n t.dbllowlinecmb = 0x0333;\n t.dbloverlinecmb = 0x033f;\n t.dblprimemod = 0x02ba;\n t.dblverticalbar = 0x2016;\n t.dblverticallineabovecmb = 0x030e;\n t.dbopomofo = 0x3109;\n t.dbsquare = 0x33c8;\n t.dcaron = 0x010f;\n t.dcedilla = 0x1e11;\n t.dcircle = 0x24d3;\n t.dcircumflexbelow = 0x1e13;\n t.dcroat = 0x0111;\n t.ddabengali = 0x09a1;\n t.ddadeva = 0x0921;\n t.ddagujarati = 0x0aa1;\n t.ddagurmukhi = 0x0a21;\n t.ddalarabic = 0x0688;\n t.ddalfinalarabic = 0xfb89;\n t.dddhadeva = 0x095c;\n t.ddhabengali = 0x09a2;\n t.ddhadeva = 0x0922;\n t.ddhagujarati = 0x0aa2;\n t.ddhagurmukhi = 0x0a22;\n t.ddotaccent = 0x1e0b;\n t.ddotbelow = 0x1e0d;\n t.decimalseparatorarabic = 0x066b;\n t.decimalseparatorpersian = 0x066b;\n t.decyrillic = 0x0434;\n t.degree = 0x00b0;\n t.dehihebrew = 0x05ad;\n t.dehiragana = 0x3067;\n t.deicoptic = 0x03ef;\n t.dekatakana = 0x30c7;\n t.deleteleft = 0x232b;\n t.deleteright = 0x2326;\n t.delta = 0x03b4;\n t.deltaturned = 0x018d;\n t.denominatorminusonenumeratorbengali = 0x09f8;\n t.dezh = 0x02a4;\n t.dhabengali = 0x09a7;\n t.dhadeva = 0x0927;\n t.dhagujarati = 0x0aa7;\n t.dhagurmukhi = 0x0a27;\n t.dhook = 0x0257;\n t.dialytikatonos = 0x0385;\n t.dialytikatonoscmb = 0x0344;\n t.diamond = 0x2666;\n t.diamondsuitwhite = 0x2662;\n t.dieresis = 0x00a8;\n t.dieresisacute = 0xf6d7;\n t.dieresisbelowcmb = 0x0324;\n t.dieresiscmb = 0x0308;\n t.dieresisgrave = 0xf6d8;\n t.dieresistonos = 0x0385;\n t.dihiragana = 0x3062;\n t.dikatakana = 0x30c2;\n t.dittomark = 0x3003;\n t.divide = 0x00f7;\n t.divides = 0x2223;\n t.divisionslash = 0x2215;\n t.djecyrillic = 0x0452;\n t.dkshade = 0x2593;\n t.dlinebelow = 0x1e0f;\n t.dlsquare = 0x3397;\n t.dmacron = 0x0111;\n t.dmonospace = 0xff44;\n t.dnblock = 0x2584;\n t.dochadathai = 0x0e0e;\n t.dodekthai = 0x0e14;\n t.dohiragana = 0x3069;\n t.dokatakana = 0x30c9;\n t.dollar = 0x0024;\n t.dollarinferior = 0xf6e3;\n t.dollarmonospace = 0xff04;\n t.dollaroldstyle = 0xf724;\n t.dollarsmall = 0xfe69;\n t.dollarsuperior = 0xf6e4;\n t.dong = 0x20ab;\n t.dorusquare = 0x3326;\n t.dotaccent = 0x02d9;\n t.dotaccentcmb = 0x0307;\n t.dotbelowcmb = 0x0323;\n t.dotbelowcomb = 0x0323;\n t.dotkatakana = 0x30fb;\n t.dotlessi = 0x0131;\n t.dotlessj = 0xf6be;\n t.dotlessjstrokehook = 0x0284;\n t.dotmath = 0x22c5;\n t.dottedcircle = 0x25cc;\n t.doubleyodpatah = 0xfb1f;\n t.doubleyodpatahhebrew = 0xfb1f;\n t.downtackbelowcmb = 0x031e;\n t.downtackmod = 0x02d5;\n t.dparen = 0x249f;\n t.dsuperior = 0xf6eb;\n t.dtail = 0x0256;\n t.dtopbar = 0x018c;\n t.duhiragana = 0x3065;\n t.dukatakana = 0x30c5;\n t.dz = 0x01f3;\n t.dzaltone = 0x02a3;\n t.dzcaron = 0x01c6;\n t.dzcurl = 0x02a5;\n t.dzeabkhasiancyrillic = 0x04e1;\n t.dzecyrillic = 0x0455;\n t.dzhecyrillic = 0x045f;\n t.e = 0x0065;\n t.eacute = 0x00e9;\n t.earth = 0x2641;\n t.ebengali = 0x098f;\n t.ebopomofo = 0x311c;\n t.ebreve = 0x0115;\n t.ecandradeva = 0x090d;\n t.ecandragujarati = 0x0a8d;\n t.ecandravowelsigndeva = 0x0945;\n t.ecandravowelsigngujarati = 0x0ac5;\n t.ecaron = 0x011b;\n t.ecedillabreve = 0x1e1d;\n t.echarmenian = 0x0565;\n t.echyiwnarmenian = 0x0587;\n t.ecircle = 0x24d4;\n t.ecircumflex = 0x00ea;\n t.ecircumflexacute = 0x1ebf;\n t.ecircumflexbelow = 0x1e19;\n t.ecircumflexdotbelow = 0x1ec7;\n t.ecircumflexgrave = 0x1ec1;\n t.ecircumflexhookabove = 0x1ec3;\n t.ecircumflextilde = 0x1ec5;\n t.ecyrillic = 0x0454;\n t.edblgrave = 0x0205;\n t.edeva = 0x090f;\n t.edieresis = 0x00eb;\n t.edot = 0x0117;\n t.edotaccent = 0x0117;\n t.edotbelow = 0x1eb9;\n t.eegurmukhi = 0x0a0f;\n t.eematragurmukhi = 0x0a47;\n t.efcyrillic = 0x0444;\n t.egrave = 0x00e8;\n t.egujarati = 0x0a8f;\n t.eharmenian = 0x0567;\n t.ehbopomofo = 0x311d;\n t.ehiragana = 0x3048;\n t.ehookabove = 0x1ebb;\n t.eibopomofo = 0x311f;\n t.eight = 0x0038;\n t.eightarabic = 0x0668;\n t.eightbengali = 0x09ee;\n t.eightcircle = 0x2467;\n t.eightcircleinversesansserif = 0x2791;\n t.eightdeva = 0x096e;\n t.eighteencircle = 0x2471;\n t.eighteenparen = 0x2485;\n t.eighteenperiod = 0x2499;\n t.eightgujarati = 0x0aee;\n t.eightgurmukhi = 0x0a6e;\n t.eighthackarabic = 0x0668;\n t.eighthangzhou = 0x3028;\n t.eighthnotebeamed = 0x266b;\n t.eightideographicparen = 0x3227;\n t.eightinferior = 0x2088;\n t.eightmonospace = 0xff18;\n t.eightoldstyle = 0xf738;\n t.eightparen = 0x247b;\n t.eightperiod = 0x248f;\n t.eightpersian = 0x06f8;\n t.eightroman = 0x2177;\n t.eightsuperior = 0x2078;\n t.eightthai = 0x0e58;\n t.einvertedbreve = 0x0207;\n t.eiotifiedcyrillic = 0x0465;\n t.ekatakana = 0x30a8;\n t.ekatakanahalfwidth = 0xff74;\n t.ekonkargurmukhi = 0x0a74;\n t.ekorean = 0x3154;\n t.elcyrillic = 0x043b;\n t.element = 0x2208;\n t.elevencircle = 0x246a;\n t.elevenparen = 0x247e;\n t.elevenperiod = 0x2492;\n t.elevenroman = 0x217a;\n t.ellipsis = 0x2026;\n t.ellipsisvertical = 0x22ee;\n t.emacron = 0x0113;\n t.emacronacute = 0x1e17;\n t.emacrongrave = 0x1e15;\n t.emcyrillic = 0x043c;\n t.emdash = 0x2014;\n t.emdashvertical = 0xfe31;\n t.emonospace = 0xff45;\n t.emphasismarkarmenian = 0x055b;\n t.emptyset = 0x2205;\n t.enbopomofo = 0x3123;\n t.encyrillic = 0x043d;\n t.endash = 0x2013;\n t.endashvertical = 0xfe32;\n t.endescendercyrillic = 0x04a3;\n t.eng = 0x014b;\n t.engbopomofo = 0x3125;\n t.enghecyrillic = 0x04a5;\n t.enhookcyrillic = 0x04c8;\n t.enspace = 0x2002;\n t.eogonek = 0x0119;\n t.eokorean = 0x3153;\n t.eopen = 0x025b;\n t.eopenclosed = 0x029a;\n t.eopenreversed = 0x025c;\n t.eopenreversedclosed = 0x025e;\n t.eopenreversedhook = 0x025d;\n t.eparen = 0x24a0;\n t.epsilon = 0x03b5;\n t.epsilontonos = 0x03ad;\n t.equal = 0x003d;\n t.equalmonospace = 0xff1d;\n t.equalsmall = 0xfe66;\n t.equalsuperior = 0x207c;\n t.equivalence = 0x2261;\n t.erbopomofo = 0x3126;\n t.ercyrillic = 0x0440;\n t.ereversed = 0x0258;\n t.ereversedcyrillic = 0x044d;\n t.escyrillic = 0x0441;\n t.esdescendercyrillic = 0x04ab;\n t.esh = 0x0283;\n t.eshcurl = 0x0286;\n t.eshortdeva = 0x090e;\n t.eshortvowelsigndeva = 0x0946;\n t.eshreversedloop = 0x01aa;\n t.eshsquatreversed = 0x0285;\n t.esmallhiragana = 0x3047;\n t.esmallkatakana = 0x30a7;\n t.esmallkatakanahalfwidth = 0xff6a;\n t.estimated = 0x212e;\n t.esuperior = 0xf6ec;\n t.eta = 0x03b7;\n t.etarmenian = 0x0568;\n t.etatonos = 0x03ae;\n t.eth = 0x00f0;\n t.etilde = 0x1ebd;\n t.etildebelow = 0x1e1b;\n t.etnahtafoukhhebrew = 0x0591;\n t.etnahtafoukhlefthebrew = 0x0591;\n t.etnahtahebrew = 0x0591;\n t.etnahtalefthebrew = 0x0591;\n t.eturned = 0x01dd;\n t.eukorean = 0x3161;\n t.euro = 0x20ac;\n t.evowelsignbengali = 0x09c7;\n t.evowelsigndeva = 0x0947;\n t.evowelsigngujarati = 0x0ac7;\n t.exclam = 0x0021;\n t.exclamarmenian = 0x055c;\n t.exclamdbl = 0x203c;\n t.exclamdown = 0x00a1;\n t.exclamdownsmall = 0xf7a1;\n t.exclammonospace = 0xff01;\n t.exclamsmall = 0xf721;\n t.existential = 0x2203;\n t.ezh = 0x0292;\n t.ezhcaron = 0x01ef;\n t.ezhcurl = 0x0293;\n t.ezhreversed = 0x01b9;\n t.ezhtail = 0x01ba;\n t.f = 0x0066;\n t.fadeva = 0x095e;\n t.fagurmukhi = 0x0a5e;\n t.fahrenheit = 0x2109;\n t.fathaarabic = 0x064e;\n t.fathalowarabic = 0x064e;\n t.fathatanarabic = 0x064b;\n t.fbopomofo = 0x3108;\n t.fcircle = 0x24d5;\n t.fdotaccent = 0x1e1f;\n t.feharabic = 0x0641;\n t.feharmenian = 0x0586;\n t.fehfinalarabic = 0xfed2;\n t.fehinitialarabic = 0xfed3;\n t.fehmedialarabic = 0xfed4;\n t.feicoptic = 0x03e5;\n t.female = 0x2640;\n t.ff = 0xfb00;\n t.f_f = 0xfb00;\n t.ffi = 0xfb03;\n t.f_f_i = 0xfb03;\n t.ffl = 0xfb04;\n t.f_f_l = 0xfb04;\n t.fi = 0xfb01;\n t.f_i = 0xfb01;\n t.fifteencircle = 0x246e;\n t.fifteenparen = 0x2482;\n t.fifteenperiod = 0x2496;\n t.figuredash = 0x2012;\n t.filledbox = 0x25a0;\n t.filledrect = 0x25ac;\n t.finalkaf = 0x05da;\n t.finalkafdagesh = 0xfb3a;\n t.finalkafdageshhebrew = 0xfb3a;\n t.finalkafhebrew = 0x05da;\n t.finalmem = 0x05dd;\n t.finalmemhebrew = 0x05dd;\n t.finalnun = 0x05df;\n t.finalnunhebrew = 0x05df;\n t.finalpe = 0x05e3;\n t.finalpehebrew = 0x05e3;\n t.finaltsadi = 0x05e5;\n t.finaltsadihebrew = 0x05e5;\n t.firsttonechinese = 0x02c9;\n t.fisheye = 0x25c9;\n t.fitacyrillic = 0x0473;\n t.five = 0x0035;\n t.fivearabic = 0x0665;\n t.fivebengali = 0x09eb;\n t.fivecircle = 0x2464;\n t.fivecircleinversesansserif = 0x278e;\n t.fivedeva = 0x096b;\n t.fiveeighths = 0x215d;\n t.fivegujarati = 0x0aeb;\n t.fivegurmukhi = 0x0a6b;\n t.fivehackarabic = 0x0665;\n t.fivehangzhou = 0x3025;\n t.fiveideographicparen = 0x3224;\n t.fiveinferior = 0x2085;\n t.fivemonospace = 0xff15;\n t.fiveoldstyle = 0xf735;\n t.fiveparen = 0x2478;\n t.fiveperiod = 0x248c;\n t.fivepersian = 0x06f5;\n t.fiveroman = 0x2174;\n t.fivesuperior = 0x2075;\n t.fivethai = 0x0e55;\n t.fl = 0xfb02;\n t.f_l = 0xfb02;\n t.florin = 0x0192;\n t.fmonospace = 0xff46;\n t.fmsquare = 0x3399;\n t.fofanthai = 0x0e1f;\n t.fofathai = 0x0e1d;\n t.fongmanthai = 0x0e4f;\n t.forall = 0x2200;\n t.four = 0x0034;\n t.fourarabic = 0x0664;\n t.fourbengali = 0x09ea;\n t.fourcircle = 0x2463;\n t.fourcircleinversesansserif = 0x278d;\n t.fourdeva = 0x096a;\n t.fourgujarati = 0x0aea;\n t.fourgurmukhi = 0x0a6a;\n t.fourhackarabic = 0x0664;\n t.fourhangzhou = 0x3024;\n t.fourideographicparen = 0x3223;\n t.fourinferior = 0x2084;\n t.fourmonospace = 0xff14;\n t.fournumeratorbengali = 0x09f7;\n t.fouroldstyle = 0xf734;\n t.fourparen = 0x2477;\n t.fourperiod = 0x248b;\n t.fourpersian = 0x06f4;\n t.fourroman = 0x2173;\n t.foursuperior = 0x2074;\n t.fourteencircle = 0x246d;\n t.fourteenparen = 0x2481;\n t.fourteenperiod = 0x2495;\n t.fourthai = 0x0e54;\n t.fourthtonechinese = 0x02cb;\n t.fparen = 0x24a1;\n t.fraction = 0x2044;\n t.franc = 0x20a3;\n t.g = 0x0067;\n t.gabengali = 0x0997;\n t.gacute = 0x01f5;\n t.gadeva = 0x0917;\n t.gafarabic = 0x06af;\n t.gaffinalarabic = 0xfb93;\n t.gafinitialarabic = 0xfb94;\n t.gafmedialarabic = 0xfb95;\n t.gagujarati = 0x0a97;\n t.gagurmukhi = 0x0a17;\n t.gahiragana = 0x304c;\n t.gakatakana = 0x30ac;\n t.gamma = 0x03b3;\n t.gammalatinsmall = 0x0263;\n t.gammasuperior = 0x02e0;\n t.gangiacoptic = 0x03eb;\n t.gbopomofo = 0x310d;\n t.gbreve = 0x011f;\n t.gcaron = 0x01e7;\n t.gcedilla = 0x0123;\n t.gcircle = 0x24d6;\n t.gcircumflex = 0x011d;\n t.gcommaaccent = 0x0123;\n t.gdot = 0x0121;\n t.gdotaccent = 0x0121;\n t.gecyrillic = 0x0433;\n t.gehiragana = 0x3052;\n t.gekatakana = 0x30b2;\n t.geometricallyequal = 0x2251;\n t.gereshaccenthebrew = 0x059c;\n t.gereshhebrew = 0x05f3;\n t.gereshmuqdamhebrew = 0x059d;\n t.germandbls = 0x00df;\n t.gershayimaccenthebrew = 0x059e;\n t.gershayimhebrew = 0x05f4;\n t.getamark = 0x3013;\n t.ghabengali = 0x0998;\n t.ghadarmenian = 0x0572;\n t.ghadeva = 0x0918;\n t.ghagujarati = 0x0a98;\n t.ghagurmukhi = 0x0a18;\n t.ghainarabic = 0x063a;\n t.ghainfinalarabic = 0xfece;\n t.ghaininitialarabic = 0xfecf;\n t.ghainmedialarabic = 0xfed0;\n t.ghemiddlehookcyrillic = 0x0495;\n t.ghestrokecyrillic = 0x0493;\n t.gheupturncyrillic = 0x0491;\n t.ghhadeva = 0x095a;\n t.ghhagurmukhi = 0x0a5a;\n t.ghook = 0x0260;\n t.ghzsquare = 0x3393;\n t.gihiragana = 0x304e;\n t.gikatakana = 0x30ae;\n t.gimarmenian = 0x0563;\n t.gimel = 0x05d2;\n t.gimeldagesh = 0xfb32;\n t.gimeldageshhebrew = 0xfb32;\n t.gimelhebrew = 0x05d2;\n t.gjecyrillic = 0x0453;\n t.glottalinvertedstroke = 0x01be;\n t.glottalstop = 0x0294;\n t.glottalstopinverted = 0x0296;\n t.glottalstopmod = 0x02c0;\n t.glottalstopreversed = 0x0295;\n t.glottalstopreversedmod = 0x02c1;\n t.glottalstopreversedsuperior = 0x02e4;\n t.glottalstopstroke = 0x02a1;\n t.glottalstopstrokereversed = 0x02a2;\n t.gmacron = 0x1e21;\n t.gmonospace = 0xff47;\n t.gohiragana = 0x3054;\n t.gokatakana = 0x30b4;\n t.gparen = 0x24a2;\n t.gpasquare = 0x33ac;\n t.gradient = 0x2207;\n t.grave = 0x0060;\n t.gravebelowcmb = 0x0316;\n t.gravecmb = 0x0300;\n t.gravecomb = 0x0300;\n t.gravedeva = 0x0953;\n t.gravelowmod = 0x02ce;\n t.gravemonospace = 0xff40;\n t.gravetonecmb = 0x0340;\n t.greater = 0x003e;\n t.greaterequal = 0x2265;\n t.greaterequalorless = 0x22db;\n t.greatermonospace = 0xff1e;\n t.greaterorequivalent = 0x2273;\n t.greaterorless = 0x2277;\n t.greateroverequal = 0x2267;\n t.greatersmall = 0xfe65;\n t.gscript = 0x0261;\n t.gstroke = 0x01e5;\n t.guhiragana = 0x3050;\n t.guillemotleft = 0x00ab;\n t.guillemotright = 0x00bb;\n t.guilsinglleft = 0x2039;\n t.guilsinglright = 0x203a;\n t.gukatakana = 0x30b0;\n t.guramusquare = 0x3318;\n t.gysquare = 0x33c9;\n t.h = 0x0068;\n t.haabkhasiancyrillic = 0x04a9;\n t.haaltonearabic = 0x06c1;\n t.habengali = 0x09b9;\n t.hadescendercyrillic = 0x04b3;\n t.hadeva = 0x0939;\n t.hagujarati = 0x0ab9;\n t.hagurmukhi = 0x0a39;\n t.haharabic = 0x062d;\n t.hahfinalarabic = 0xfea2;\n t.hahinitialarabic = 0xfea3;\n t.hahiragana = 0x306f;\n t.hahmedialarabic = 0xfea4;\n t.haitusquare = 0x332a;\n t.hakatakana = 0x30cf;\n t.hakatakanahalfwidth = 0xff8a;\n t.halantgurmukhi = 0x0a4d;\n t.hamzaarabic = 0x0621;\n t.hamzalowarabic = 0x0621;\n t.hangulfiller = 0x3164;\n t.hardsigncyrillic = 0x044a;\n t.harpoonleftbarbup = 0x21bc;\n t.harpoonrightbarbup = 0x21c0;\n t.hasquare = 0x33ca;\n t.hatafpatah = 0x05b2;\n t.hatafpatah16 = 0x05b2;\n t.hatafpatah23 = 0x05b2;\n t.hatafpatah2f = 0x05b2;\n t.hatafpatahhebrew = 0x05b2;\n t.hatafpatahnarrowhebrew = 0x05b2;\n t.hatafpatahquarterhebrew = 0x05b2;\n t.hatafpatahwidehebrew = 0x05b2;\n t.hatafqamats = 0x05b3;\n t.hatafqamats1b = 0x05b3;\n t.hatafqamats28 = 0x05b3;\n t.hatafqamats34 = 0x05b3;\n t.hatafqamatshebrew = 0x05b3;\n t.hatafqamatsnarrowhebrew = 0x05b3;\n t.hatafqamatsquarterhebrew = 0x05b3;\n t.hatafqamatswidehebrew = 0x05b3;\n t.hatafsegol = 0x05b1;\n t.hatafsegol17 = 0x05b1;\n t.hatafsegol24 = 0x05b1;\n t.hatafsegol30 = 0x05b1;\n t.hatafsegolhebrew = 0x05b1;\n t.hatafsegolnarrowhebrew = 0x05b1;\n t.hatafsegolquarterhebrew = 0x05b1;\n t.hatafsegolwidehebrew = 0x05b1;\n t.hbar = 0x0127;\n t.hbopomofo = 0x310f;\n t.hbrevebelow = 0x1e2b;\n t.hcedilla = 0x1e29;\n t.hcircle = 0x24d7;\n t.hcircumflex = 0x0125;\n t.hdieresis = 0x1e27;\n t.hdotaccent = 0x1e23;\n t.hdotbelow = 0x1e25;\n t.he = 0x05d4;\n t.heart = 0x2665;\n t.heartsuitblack = 0x2665;\n t.heartsuitwhite = 0x2661;\n t.hedagesh = 0xfb34;\n t.hedageshhebrew = 0xfb34;\n t.hehaltonearabic = 0x06c1;\n t.heharabic = 0x0647;\n t.hehebrew = 0x05d4;\n t.hehfinalaltonearabic = 0xfba7;\n t.hehfinalalttwoarabic = 0xfeea;\n t.hehfinalarabic = 0xfeea;\n t.hehhamzaabovefinalarabic = 0xfba5;\n t.hehhamzaaboveisolatedarabic = 0xfba4;\n t.hehinitialaltonearabic = 0xfba8;\n t.hehinitialarabic = 0xfeeb;\n t.hehiragana = 0x3078;\n t.hehmedialaltonearabic = 0xfba9;\n t.hehmedialarabic = 0xfeec;\n t.heiseierasquare = 0x337b;\n t.hekatakana = 0x30d8;\n t.hekatakanahalfwidth = 0xff8d;\n t.hekutaarusquare = 0x3336;\n t.henghook = 0x0267;\n t.herutusquare = 0x3339;\n t.het = 0x05d7;\n t.hethebrew = 0x05d7;\n t.hhook = 0x0266;\n t.hhooksuperior = 0x02b1;\n t.hieuhacirclekorean = 0x327b;\n t.hieuhaparenkorean = 0x321b;\n t.hieuhcirclekorean = 0x326d;\n t.hieuhkorean = 0x314e;\n t.hieuhparenkorean = 0x320d;\n t.hihiragana = 0x3072;\n t.hikatakana = 0x30d2;\n t.hikatakanahalfwidth = 0xff8b;\n t.hiriq = 0x05b4;\n t.hiriq14 = 0x05b4;\n t.hiriq21 = 0x05b4;\n t.hiriq2d = 0x05b4;\n t.hiriqhebrew = 0x05b4;\n t.hiriqnarrowhebrew = 0x05b4;\n t.hiriqquarterhebrew = 0x05b4;\n t.hiriqwidehebrew = 0x05b4;\n t.hlinebelow = 0x1e96;\n t.hmonospace = 0xff48;\n t.hoarmenian = 0x0570;\n t.hohipthai = 0x0e2b;\n t.hohiragana = 0x307b;\n t.hokatakana = 0x30db;\n t.hokatakanahalfwidth = 0xff8e;\n t.holam = 0x05b9;\n t.holam19 = 0x05b9;\n t.holam26 = 0x05b9;\n t.holam32 = 0x05b9;\n t.holamhebrew = 0x05b9;\n t.holamnarrowhebrew = 0x05b9;\n t.holamquarterhebrew = 0x05b9;\n t.holamwidehebrew = 0x05b9;\n t.honokhukthai = 0x0e2e;\n t.hookabovecomb = 0x0309;\n t.hookcmb = 0x0309;\n t.hookpalatalizedbelowcmb = 0x0321;\n t.hookretroflexbelowcmb = 0x0322;\n t.hoonsquare = 0x3342;\n t.horicoptic = 0x03e9;\n t.horizontalbar = 0x2015;\n t.horncmb = 0x031b;\n t.hotsprings = 0x2668;\n t.house = 0x2302;\n t.hparen = 0x24a3;\n t.hsuperior = 0x02b0;\n t.hturned = 0x0265;\n t.huhiragana = 0x3075;\n t.huiitosquare = 0x3333;\n t.hukatakana = 0x30d5;\n t.hukatakanahalfwidth = 0xff8c;\n t.hungarumlaut = 0x02dd;\n t.hungarumlautcmb = 0x030b;\n t.hv = 0x0195;\n t.hyphen = 0x002d;\n t.hypheninferior = 0xf6e5;\n t.hyphenmonospace = 0xff0d;\n t.hyphensmall = 0xfe63;\n t.hyphensuperior = 0xf6e6;\n t.hyphentwo = 0x2010;\n t.i = 0x0069;\n t.iacute = 0x00ed;\n t.iacyrillic = 0x044f;\n t.ibengali = 0x0987;\n t.ibopomofo = 0x3127;\n t.ibreve = 0x012d;\n t.icaron = 0x01d0;\n t.icircle = 0x24d8;\n t.icircumflex = 0x00ee;\n t.icyrillic = 0x0456;\n t.idblgrave = 0x0209;\n t.ideographearthcircle = 0x328f;\n t.ideographfirecircle = 0x328b;\n t.ideographicallianceparen = 0x323f;\n t.ideographiccallparen = 0x323a;\n t.ideographiccentrecircle = 0x32a5;\n t.ideographicclose = 0x3006;\n t.ideographiccomma = 0x3001;\n t.ideographiccommaleft = 0xff64;\n t.ideographiccongratulationparen = 0x3237;\n t.ideographiccorrectcircle = 0x32a3;\n t.ideographicearthparen = 0x322f;\n t.ideographicenterpriseparen = 0x323d;\n t.ideographicexcellentcircle = 0x329d;\n t.ideographicfestivalparen = 0x3240;\n t.ideographicfinancialcircle = 0x3296;\n t.ideographicfinancialparen = 0x3236;\n t.ideographicfireparen = 0x322b;\n t.ideographichaveparen = 0x3232;\n t.ideographichighcircle = 0x32a4;\n t.ideographiciterationmark = 0x3005;\n t.ideographiclaborcircle = 0x3298;\n t.ideographiclaborparen = 0x3238;\n t.ideographicleftcircle = 0x32a7;\n t.ideographiclowcircle = 0x32a6;\n t.ideographicmedicinecircle = 0x32a9;\n t.ideographicmetalparen = 0x322e;\n t.ideographicmoonparen = 0x322a;\n t.ideographicnameparen = 0x3234;\n t.ideographicperiod = 0x3002;\n t.ideographicprintcircle = 0x329e;\n t.ideographicreachparen = 0x3243;\n t.ideographicrepresentparen = 0x3239;\n t.ideographicresourceparen = 0x323e;\n t.ideographicrightcircle = 0x32a8;\n t.ideographicsecretcircle = 0x3299;\n t.ideographicselfparen = 0x3242;\n t.ideographicsocietyparen = 0x3233;\n t.ideographicspace = 0x3000;\n t.ideographicspecialparen = 0x3235;\n t.ideographicstockparen = 0x3231;\n t.ideographicstudyparen = 0x323b;\n t.ideographicsunparen = 0x3230;\n t.ideographicsuperviseparen = 0x323c;\n t.ideographicwaterparen = 0x322c;\n t.ideographicwoodparen = 0x322d;\n t.ideographiczero = 0x3007;\n t.ideographmetalcircle = 0x328e;\n t.ideographmooncircle = 0x328a;\n t.ideographnamecircle = 0x3294;\n t.ideographsuncircle = 0x3290;\n t.ideographwatercircle = 0x328c;\n t.ideographwoodcircle = 0x328d;\n t.ideva = 0x0907;\n t.idieresis = 0x00ef;\n t.idieresisacute = 0x1e2f;\n t.idieresiscyrillic = 0x04e5;\n t.idotbelow = 0x1ecb;\n t.iebrevecyrillic = 0x04d7;\n t.iecyrillic = 0x0435;\n t.ieungacirclekorean = 0x3275;\n t.ieungaparenkorean = 0x3215;\n t.ieungcirclekorean = 0x3267;\n t.ieungkorean = 0x3147;\n t.ieungparenkorean = 0x3207;\n t.igrave = 0x00ec;\n t.igujarati = 0x0a87;\n t.igurmukhi = 0x0a07;\n t.ihiragana = 0x3044;\n t.ihookabove = 0x1ec9;\n t.iibengali = 0x0988;\n t.iicyrillic = 0x0438;\n t.iideva = 0x0908;\n t.iigujarati = 0x0a88;\n t.iigurmukhi = 0x0a08;\n t.iimatragurmukhi = 0x0a40;\n t.iinvertedbreve = 0x020b;\n t.iishortcyrillic = 0x0439;\n t.iivowelsignbengali = 0x09c0;\n t.iivowelsigndeva = 0x0940;\n t.iivowelsigngujarati = 0x0ac0;\n t.ij = 0x0133;\n t.ikatakana = 0x30a4;\n t.ikatakanahalfwidth = 0xff72;\n t.ikorean = 0x3163;\n t.ilde = 0x02dc;\n t.iluyhebrew = 0x05ac;\n t.imacron = 0x012b;\n t.imacroncyrillic = 0x04e3;\n t.imageorapproximatelyequal = 0x2253;\n t.imatragurmukhi = 0x0a3f;\n t.imonospace = 0xff49;\n t.increment = 0x2206;\n t.infinity = 0x221e;\n t.iniarmenian = 0x056b;\n t.integral = 0x222b;\n t.integralbottom = 0x2321;\n t.integralbt = 0x2321;\n t.integralex = 0xf8f5;\n t.integraltop = 0x2320;\n t.integraltp = 0x2320;\n t.intersection = 0x2229;\n t.intisquare = 0x3305;\n t.invbullet = 0x25d8;\n t.invcircle = 0x25d9;\n t.invsmileface = 0x263b;\n t.iocyrillic = 0x0451;\n t.iogonek = 0x012f;\n t.iota = 0x03b9;\n t.iotadieresis = 0x03ca;\n t.iotadieresistonos = 0x0390;\n t.iotalatin = 0x0269;\n t.iotatonos = 0x03af;\n t.iparen = 0x24a4;\n t.irigurmukhi = 0x0a72;\n t.ismallhiragana = 0x3043;\n t.ismallkatakana = 0x30a3;\n t.ismallkatakanahalfwidth = 0xff68;\n t.issharbengali = 0x09fa;\n t.istroke = 0x0268;\n t.isuperior = 0xf6ed;\n t.iterationhiragana = 0x309d;\n t.iterationkatakana = 0x30fd;\n t.itilde = 0x0129;\n t.itildebelow = 0x1e2d;\n t.iubopomofo = 0x3129;\n t.iucyrillic = 0x044e;\n t.ivowelsignbengali = 0x09bf;\n t.ivowelsigndeva = 0x093f;\n t.ivowelsigngujarati = 0x0abf;\n t.izhitsacyrillic = 0x0475;\n t.izhitsadblgravecyrillic = 0x0477;\n t.j = 0x006a;\n t.jaarmenian = 0x0571;\n t.jabengali = 0x099c;\n t.jadeva = 0x091c;\n t.jagujarati = 0x0a9c;\n t.jagurmukhi = 0x0a1c;\n t.jbopomofo = 0x3110;\n t.jcaron = 0x01f0;\n t.jcircle = 0x24d9;\n t.jcircumflex = 0x0135;\n t.jcrossedtail = 0x029d;\n t.jdotlessstroke = 0x025f;\n t.jecyrillic = 0x0458;\n t.jeemarabic = 0x062c;\n t.jeemfinalarabic = 0xfe9e;\n t.jeeminitialarabic = 0xfe9f;\n t.jeemmedialarabic = 0xfea0;\n t.jeharabic = 0x0698;\n t.jehfinalarabic = 0xfb8b;\n t.jhabengali = 0x099d;\n t.jhadeva = 0x091d;\n t.jhagujarati = 0x0a9d;\n t.jhagurmukhi = 0x0a1d;\n t.jheharmenian = 0x057b;\n t.jis = 0x3004;\n t.jmonospace = 0xff4a;\n t.jparen = 0x24a5;\n t.jsuperior = 0x02b2;\n t.k = 0x006b;\n t.kabashkircyrillic = 0x04a1;\n t.kabengali = 0x0995;\n t.kacute = 0x1e31;\n t.kacyrillic = 0x043a;\n t.kadescendercyrillic = 0x049b;\n t.kadeva = 0x0915;\n t.kaf = 0x05db;\n t.kafarabic = 0x0643;\n t.kafdagesh = 0xfb3b;\n t.kafdageshhebrew = 0xfb3b;\n t.kaffinalarabic = 0xfeda;\n t.kafhebrew = 0x05db;\n t.kafinitialarabic = 0xfedb;\n t.kafmedialarabic = 0xfedc;\n t.kafrafehebrew = 0xfb4d;\n t.kagujarati = 0x0a95;\n t.kagurmukhi = 0x0a15;\n t.kahiragana = 0x304b;\n t.kahookcyrillic = 0x04c4;\n t.kakatakana = 0x30ab;\n t.kakatakanahalfwidth = 0xff76;\n t.kappa = 0x03ba;\n t.kappasymbolgreek = 0x03f0;\n t.kapyeounmieumkorean = 0x3171;\n t.kapyeounphieuphkorean = 0x3184;\n t.kapyeounpieupkorean = 0x3178;\n t.kapyeounssangpieupkorean = 0x3179;\n t.karoriisquare = 0x330d;\n t.kashidaautoarabic = 0x0640;\n t.kashidaautonosidebearingarabic = 0x0640;\n t.kasmallkatakana = 0x30f5;\n t.kasquare = 0x3384;\n t.kasraarabic = 0x0650;\n t.kasratanarabic = 0x064d;\n t.kastrokecyrillic = 0x049f;\n t.katahiraprolongmarkhalfwidth = 0xff70;\n t.kaverticalstrokecyrillic = 0x049d;\n t.kbopomofo = 0x310e;\n t.kcalsquare = 0x3389;\n t.kcaron = 0x01e9;\n t.kcedilla = 0x0137;\n t.kcircle = 0x24da;\n t.kcommaaccent = 0x0137;\n t.kdotbelow = 0x1e33;\n t.keharmenian = 0x0584;\n t.kehiragana = 0x3051;\n t.kekatakana = 0x30b1;\n t.kekatakanahalfwidth = 0xff79;\n t.kenarmenian = 0x056f;\n t.kesmallkatakana = 0x30f6;\n t.kgreenlandic = 0x0138;\n t.khabengali = 0x0996;\n t.khacyrillic = 0x0445;\n t.khadeva = 0x0916;\n t.khagujarati = 0x0a96;\n t.khagurmukhi = 0x0a16;\n t.khaharabic = 0x062e;\n t.khahfinalarabic = 0xfea6;\n t.khahinitialarabic = 0xfea7;\n t.khahmedialarabic = 0xfea8;\n t.kheicoptic = 0x03e7;\n t.khhadeva = 0x0959;\n t.khhagurmukhi = 0x0a59;\n t.khieukhacirclekorean = 0x3278;\n t.khieukhaparenkorean = 0x3218;\n t.khieukhcirclekorean = 0x326a;\n t.khieukhkorean = 0x314b;\n t.khieukhparenkorean = 0x320a;\n t.khokhaithai = 0x0e02;\n t.khokhonthai = 0x0e05;\n t.khokhuatthai = 0x0e03;\n t.khokhwaithai = 0x0e04;\n t.khomutthai = 0x0e5b;\n t.khook = 0x0199;\n t.khorakhangthai = 0x0e06;\n t.khzsquare = 0x3391;\n t.kihiragana = 0x304d;\n t.kikatakana = 0x30ad;\n t.kikatakanahalfwidth = 0xff77;\n t.kiroguramusquare = 0x3315;\n t.kiromeetorusquare = 0x3316;\n t.kirosquare = 0x3314;\n t.kiyeokacirclekorean = 0x326e;\n t.kiyeokaparenkorean = 0x320e;\n t.kiyeokcirclekorean = 0x3260;\n t.kiyeokkorean = 0x3131;\n t.kiyeokparenkorean = 0x3200;\n t.kiyeoksioskorean = 0x3133;\n t.kjecyrillic = 0x045c;\n t.klinebelow = 0x1e35;\n t.klsquare = 0x3398;\n t.kmcubedsquare = 0x33a6;\n t.kmonospace = 0xff4b;\n t.kmsquaredsquare = 0x33a2;\n t.kohiragana = 0x3053;\n t.kohmsquare = 0x33c0;\n t.kokaithai = 0x0e01;\n t.kokatakana = 0x30b3;\n t.kokatakanahalfwidth = 0xff7a;\n t.kooposquare = 0x331e;\n t.koppacyrillic = 0x0481;\n t.koreanstandardsymbol = 0x327f;\n t.koroniscmb = 0x0343;\n t.kparen = 0x24a6;\n t.kpasquare = 0x33aa;\n t.ksicyrillic = 0x046f;\n t.ktsquare = 0x33cf;\n t.kturned = 0x029e;\n t.kuhiragana = 0x304f;\n t.kukatakana = 0x30af;\n t.kukatakanahalfwidth = 0xff78;\n t.kvsquare = 0x33b8;\n t.kwsquare = 0x33be;\n t.l = 0x006c;\n t.labengali = 0x09b2;\n t.lacute = 0x013a;\n t.ladeva = 0x0932;\n t.lagujarati = 0x0ab2;\n t.lagurmukhi = 0x0a32;\n t.lakkhangyaothai = 0x0e45;\n t.lamaleffinalarabic = 0xfefc;\n t.lamalefhamzaabovefinalarabic = 0xfef8;\n t.lamalefhamzaaboveisolatedarabic = 0xfef7;\n t.lamalefhamzabelowfinalarabic = 0xfefa;\n t.lamalefhamzabelowisolatedarabic = 0xfef9;\n t.lamalefisolatedarabic = 0xfefb;\n t.lamalefmaddaabovefinalarabic = 0xfef6;\n t.lamalefmaddaaboveisolatedarabic = 0xfef5;\n t.lamarabic = 0x0644;\n t.lambda = 0x03bb;\n t.lambdastroke = 0x019b;\n t.lamed = 0x05dc;\n t.lameddagesh = 0xfb3c;\n t.lameddageshhebrew = 0xfb3c;\n t.lamedhebrew = 0x05dc;\n t.lamfinalarabic = 0xfede;\n t.lamhahinitialarabic = 0xfcca;\n t.laminitialarabic = 0xfedf;\n t.lamjeeminitialarabic = 0xfcc9;\n t.lamkhahinitialarabic = 0xfccb;\n t.lamlamhehisolatedarabic = 0xfdf2;\n t.lammedialarabic = 0xfee0;\n t.lammeemhahinitialarabic = 0xfd88;\n t.lammeeminitialarabic = 0xfccc;\n t.largecircle = 0x25ef;\n t.lbar = 0x019a;\n t.lbelt = 0x026c;\n t.lbopomofo = 0x310c;\n t.lcaron = 0x013e;\n t.lcedilla = 0x013c;\n t.lcircle = 0x24db;\n t.lcircumflexbelow = 0x1e3d;\n t.lcommaaccent = 0x013c;\n t.ldot = 0x0140;\n t.ldotaccent = 0x0140;\n t.ldotbelow = 0x1e37;\n t.ldotbelowmacron = 0x1e39;\n t.leftangleabovecmb = 0x031a;\n t.lefttackbelowcmb = 0x0318;\n t.less = 0x003c;\n t.lessequal = 0x2264;\n t.lessequalorgreater = 0x22da;\n t.lessmonospace = 0xff1c;\n t.lessorequivalent = 0x2272;\n t.lessorgreater = 0x2276;\n t.lessoverequal = 0x2266;\n t.lesssmall = 0xfe64;\n t.lezh = 0x026e;\n t.lfblock = 0x258c;\n t.lhookretroflex = 0x026d;\n t.lira = 0x20a4;\n t.liwnarmenian = 0x056c;\n t.lj = 0x01c9;\n t.ljecyrillic = 0x0459;\n t.ll = 0xf6c0;\n t.lladeva = 0x0933;\n t.llagujarati = 0x0ab3;\n t.llinebelow = 0x1e3b;\n t.llladeva = 0x0934;\n t.llvocalicbengali = 0x09e1;\n t.llvocalicdeva = 0x0961;\n t.llvocalicvowelsignbengali = 0x09e3;\n t.llvocalicvowelsigndeva = 0x0963;\n t.lmiddletilde = 0x026b;\n t.lmonospace = 0xff4c;\n t.lmsquare = 0x33d0;\n t.lochulathai = 0x0e2c;\n t.logicaland = 0x2227;\n t.logicalnot = 0x00ac;\n t.logicalnotreversed = 0x2310;\n t.logicalor = 0x2228;\n t.lolingthai = 0x0e25;\n t.longs = 0x017f;\n t.lowlinecenterline = 0xfe4e;\n t.lowlinecmb = 0x0332;\n t.lowlinedashed = 0xfe4d;\n t.lozenge = 0x25ca;\n t.lparen = 0x24a7;\n t.lslash = 0x0142;\n t.lsquare = 0x2113;\n t.lsuperior = 0xf6ee;\n t.ltshade = 0x2591;\n t.luthai = 0x0e26;\n t.lvocalicbengali = 0x098c;\n t.lvocalicdeva = 0x090c;\n t.lvocalicvowelsignbengali = 0x09e2;\n t.lvocalicvowelsigndeva = 0x0962;\n t.lxsquare = 0x33d3;\n t.m = 0x006d;\n t.mabengali = 0x09ae;\n t.macron = 0x00af;\n t.macronbelowcmb = 0x0331;\n t.macroncmb = 0x0304;\n t.macronlowmod = 0x02cd;\n t.macronmonospace = 0xffe3;\n t.macute = 0x1e3f;\n t.madeva = 0x092e;\n t.magujarati = 0x0aae;\n t.magurmukhi = 0x0a2e;\n t.mahapakhhebrew = 0x05a4;\n t.mahapakhlefthebrew = 0x05a4;\n t.mahiragana = 0x307e;\n t.maichattawalowleftthai = 0xf895;\n t.maichattawalowrightthai = 0xf894;\n t.maichattawathai = 0x0e4b;\n t.maichattawaupperleftthai = 0xf893;\n t.maieklowleftthai = 0xf88c;\n t.maieklowrightthai = 0xf88b;\n t.maiekthai = 0x0e48;\n t.maiekupperleftthai = 0xf88a;\n t.maihanakatleftthai = 0xf884;\n t.maihanakatthai = 0x0e31;\n t.maitaikhuleftthai = 0xf889;\n t.maitaikhuthai = 0x0e47;\n t.maitholowleftthai = 0xf88f;\n t.maitholowrightthai = 0xf88e;\n t.maithothai = 0x0e49;\n t.maithoupperleftthai = 0xf88d;\n t.maitrilowleftthai = 0xf892;\n t.maitrilowrightthai = 0xf891;\n t.maitrithai = 0x0e4a;\n t.maitriupperleftthai = 0xf890;\n t.maiyamokthai = 0x0e46;\n t.makatakana = 0x30de;\n t.makatakanahalfwidth = 0xff8f;\n t.male = 0x2642;\n t.mansyonsquare = 0x3347;\n t.maqafhebrew = 0x05be;\n t.mars = 0x2642;\n t.masoracirclehebrew = 0x05af;\n t.masquare = 0x3383;\n t.mbopomofo = 0x3107;\n t.mbsquare = 0x33d4;\n t.mcircle = 0x24dc;\n t.mcubedsquare = 0x33a5;\n t.mdotaccent = 0x1e41;\n t.mdotbelow = 0x1e43;\n t.meemarabic = 0x0645;\n t.meemfinalarabic = 0xfee2;\n t.meeminitialarabic = 0xfee3;\n t.meemmedialarabic = 0xfee4;\n t.meemmeeminitialarabic = 0xfcd1;\n t.meemmeemisolatedarabic = 0xfc48;\n t.meetorusquare = 0x334d;\n t.mehiragana = 0x3081;\n t.meizierasquare = 0x337e;\n t.mekatakana = 0x30e1;\n t.mekatakanahalfwidth = 0xff92;\n t.mem = 0x05de;\n t.memdagesh = 0xfb3e;\n t.memdageshhebrew = 0xfb3e;\n t.memhebrew = 0x05de;\n t.menarmenian = 0x0574;\n t.merkhahebrew = 0x05a5;\n t.merkhakefulahebrew = 0x05a6;\n t.merkhakefulalefthebrew = 0x05a6;\n t.merkhalefthebrew = 0x05a5;\n t.mhook = 0x0271;\n t.mhzsquare = 0x3392;\n t.middledotkatakanahalfwidth = 0xff65;\n t.middot = 0x00b7;\n t.mieumacirclekorean = 0x3272;\n t.mieumaparenkorean = 0x3212;\n t.mieumcirclekorean = 0x3264;\n t.mieumkorean = 0x3141;\n t.mieumpansioskorean = 0x3170;\n t.mieumparenkorean = 0x3204;\n t.mieumpieupkorean = 0x316e;\n t.mieumsioskorean = 0x316f;\n t.mihiragana = 0x307f;\n t.mikatakana = 0x30df;\n t.mikatakanahalfwidth = 0xff90;\n t.minus = 0x2212;\n t.minusbelowcmb = 0x0320;\n t.minuscircle = 0x2296;\n t.minusmod = 0x02d7;\n t.minusplus = 0x2213;\n t.minute = 0x2032;\n t.miribaarusquare = 0x334a;\n t.mirisquare = 0x3349;\n t.mlonglegturned = 0x0270;\n t.mlsquare = 0x3396;\n t.mmcubedsquare = 0x33a3;\n t.mmonospace = 0xff4d;\n t.mmsquaredsquare = 0x339f;\n t.mohiragana = 0x3082;\n t.mohmsquare = 0x33c1;\n t.mokatakana = 0x30e2;\n t.mokatakanahalfwidth = 0xff93;\n t.molsquare = 0x33d6;\n t.momathai = 0x0e21;\n t.moverssquare = 0x33a7;\n t.moverssquaredsquare = 0x33a8;\n t.mparen = 0x24a8;\n t.mpasquare = 0x33ab;\n t.mssquare = 0x33b3;\n t.msuperior = 0xf6ef;\n t.mturned = 0x026f;\n t.mu = 0x00b5;\n t.mu1 = 0x00b5;\n t.muasquare = 0x3382;\n t.muchgreater = 0x226b;\n t.muchless = 0x226a;\n t.mufsquare = 0x338c;\n t.mugreek = 0x03bc;\n t.mugsquare = 0x338d;\n t.muhiragana = 0x3080;\n t.mukatakana = 0x30e0;\n t.mukatakanahalfwidth = 0xff91;\n t.mulsquare = 0x3395;\n t.multiply = 0x00d7;\n t.mumsquare = 0x339b;\n t.munahhebrew = 0x05a3;\n t.munahlefthebrew = 0x05a3;\n t.musicalnote = 0x266a;\n t.musicalnotedbl = 0x266b;\n t.musicflatsign = 0x266d;\n t.musicsharpsign = 0x266f;\n t.mussquare = 0x33b2;\n t.muvsquare = 0x33b6;\n t.muwsquare = 0x33bc;\n t.mvmegasquare = 0x33b9;\n t.mvsquare = 0x33b7;\n t.mwmegasquare = 0x33bf;\n t.mwsquare = 0x33bd;\n t.n = 0x006e;\n t.nabengali = 0x09a8;\n t.nabla = 0x2207;\n t.nacute = 0x0144;\n t.nadeva = 0x0928;\n t.nagujarati = 0x0aa8;\n t.nagurmukhi = 0x0a28;\n t.nahiragana = 0x306a;\n t.nakatakana = 0x30ca;\n t.nakatakanahalfwidth = 0xff85;\n t.napostrophe = 0x0149;\n t.nasquare = 0x3381;\n t.nbopomofo = 0x310b;\n t.nbspace = 0x00a0;\n t.ncaron = 0x0148;\n t.ncedilla = 0x0146;\n t.ncircle = 0x24dd;\n t.ncircumflexbelow = 0x1e4b;\n t.ncommaaccent = 0x0146;\n t.ndotaccent = 0x1e45;\n t.ndotbelow = 0x1e47;\n t.nehiragana = 0x306d;\n t.nekatakana = 0x30cd;\n t.nekatakanahalfwidth = 0xff88;\n t.newsheqelsign = 0x20aa;\n t.nfsquare = 0x338b;\n t.ngabengali = 0x0999;\n t.ngadeva = 0x0919;\n t.ngagujarati = 0x0a99;\n t.ngagurmukhi = 0x0a19;\n t.ngonguthai = 0x0e07;\n t.nhiragana = 0x3093;\n t.nhookleft = 0x0272;\n t.nhookretroflex = 0x0273;\n t.nieunacirclekorean = 0x326f;\n t.nieunaparenkorean = 0x320f;\n t.nieuncieuckorean = 0x3135;\n t.nieuncirclekorean = 0x3261;\n t.nieunhieuhkorean = 0x3136;\n t.nieunkorean = 0x3134;\n t.nieunpansioskorean = 0x3168;\n t.nieunparenkorean = 0x3201;\n t.nieunsioskorean = 0x3167;\n t.nieuntikeutkorean = 0x3166;\n t.nihiragana = 0x306b;\n t.nikatakana = 0x30cb;\n t.nikatakanahalfwidth = 0xff86;\n t.nikhahitleftthai = 0xf899;\n t.nikhahitthai = 0x0e4d;\n t.nine = 0x0039;\n t.ninearabic = 0x0669;\n t.ninebengali = 0x09ef;\n t.ninecircle = 0x2468;\n t.ninecircleinversesansserif = 0x2792;\n t.ninedeva = 0x096f;\n t.ninegujarati = 0x0aef;\n t.ninegurmukhi = 0x0a6f;\n t.ninehackarabic = 0x0669;\n t.ninehangzhou = 0x3029;\n t.nineideographicparen = 0x3228;\n t.nineinferior = 0x2089;\n t.ninemonospace = 0xff19;\n t.nineoldstyle = 0xf739;\n t.nineparen = 0x247c;\n t.nineperiod = 0x2490;\n t.ninepersian = 0x06f9;\n t.nineroman = 0x2178;\n t.ninesuperior = 0x2079;\n t.nineteencircle = 0x2472;\n t.nineteenparen = 0x2486;\n t.nineteenperiod = 0x249a;\n t.ninethai = 0x0e59;\n t.nj = 0x01cc;\n t.njecyrillic = 0x045a;\n t.nkatakana = 0x30f3;\n t.nkatakanahalfwidth = 0xff9d;\n t.nlegrightlong = 0x019e;\n t.nlinebelow = 0x1e49;\n t.nmonospace = 0xff4e;\n t.nmsquare = 0x339a;\n t.nnabengali = 0x09a3;\n t.nnadeva = 0x0923;\n t.nnagujarati = 0x0aa3;\n t.nnagurmukhi = 0x0a23;\n t.nnnadeva = 0x0929;\n t.nohiragana = 0x306e;\n t.nokatakana = 0x30ce;\n t.nokatakanahalfwidth = 0xff89;\n t.nonbreakingspace = 0x00a0;\n t.nonenthai = 0x0e13;\n t.nonuthai = 0x0e19;\n t.noonarabic = 0x0646;\n t.noonfinalarabic = 0xfee6;\n t.noonghunnaarabic = 0x06ba;\n t.noonghunnafinalarabic = 0xfb9f;\n t.nooninitialarabic = 0xfee7;\n t.noonjeeminitialarabic = 0xfcd2;\n t.noonjeemisolatedarabic = 0xfc4b;\n t.noonmedialarabic = 0xfee8;\n t.noonmeeminitialarabic = 0xfcd5;\n t.noonmeemisolatedarabic = 0xfc4e;\n t.noonnoonfinalarabic = 0xfc8d;\n t.notcontains = 0x220c;\n t.notelement = 0x2209;\n t.notelementof = 0x2209;\n t.notequal = 0x2260;\n t.notgreater = 0x226f;\n t.notgreaternorequal = 0x2271;\n t.notgreaternorless = 0x2279;\n t.notidentical = 0x2262;\n t.notless = 0x226e;\n t.notlessnorequal = 0x2270;\n t.notparallel = 0x2226;\n t.notprecedes = 0x2280;\n t.notsubset = 0x2284;\n t.notsucceeds = 0x2281;\n t.notsuperset = 0x2285;\n t.nowarmenian = 0x0576;\n t.nparen = 0x24a9;\n t.nssquare = 0x33b1;\n t.nsuperior = 0x207f;\n t.ntilde = 0x00f1;\n t.nu = 0x03bd;\n t.nuhiragana = 0x306c;\n t.nukatakana = 0x30cc;\n t.nukatakanahalfwidth = 0xff87;\n t.nuktabengali = 0x09bc;\n t.nuktadeva = 0x093c;\n t.nuktagujarati = 0x0abc;\n t.nuktagurmukhi = 0x0a3c;\n t.numbersign = 0x0023;\n t.numbersignmonospace = 0xff03;\n t.numbersignsmall = 0xfe5f;\n t.numeralsigngreek = 0x0374;\n t.numeralsignlowergreek = 0x0375;\n t.numero = 0x2116;\n t.nun = 0x05e0;\n t.nundagesh = 0xfb40;\n t.nundageshhebrew = 0xfb40;\n t.nunhebrew = 0x05e0;\n t.nvsquare = 0x33b5;\n t.nwsquare = 0x33bb;\n t.nyabengali = 0x099e;\n t.nyadeva = 0x091e;\n t.nyagujarati = 0x0a9e;\n t.nyagurmukhi = 0x0a1e;\n t.o = 0x006f;\n t.oacute = 0x00f3;\n t.oangthai = 0x0e2d;\n t.obarred = 0x0275;\n t.obarredcyrillic = 0x04e9;\n t.obarreddieresiscyrillic = 0x04eb;\n t.obengali = 0x0993;\n t.obopomofo = 0x311b;\n t.obreve = 0x014f;\n t.ocandradeva = 0x0911;\n t.ocandragujarati = 0x0a91;\n t.ocandravowelsigndeva = 0x0949;\n t.ocandravowelsigngujarati = 0x0ac9;\n t.ocaron = 0x01d2;\n t.ocircle = 0x24de;\n t.ocircumflex = 0x00f4;\n t.ocircumflexacute = 0x1ed1;\n t.ocircumflexdotbelow = 0x1ed9;\n t.ocircumflexgrave = 0x1ed3;\n t.ocircumflexhookabove = 0x1ed5;\n t.ocircumflextilde = 0x1ed7;\n t.ocyrillic = 0x043e;\n t.odblacute = 0x0151;\n t.odblgrave = 0x020d;\n t.odeva = 0x0913;\n t.odieresis = 0x00f6;\n t.odieresiscyrillic = 0x04e7;\n t.odotbelow = 0x1ecd;\n t.oe = 0x0153;\n t.oekorean = 0x315a;\n t.ogonek = 0x02db;\n t.ogonekcmb = 0x0328;\n t.ograve = 0x00f2;\n t.ogujarati = 0x0a93;\n t.oharmenian = 0x0585;\n t.ohiragana = 0x304a;\n t.ohookabove = 0x1ecf;\n t.ohorn = 0x01a1;\n t.ohornacute = 0x1edb;\n t.ohorndotbelow = 0x1ee3;\n t.ohorngrave = 0x1edd;\n t.ohornhookabove = 0x1edf;\n t.ohorntilde = 0x1ee1;\n t.ohungarumlaut = 0x0151;\n t.oi = 0x01a3;\n t.oinvertedbreve = 0x020f;\n t.okatakana = 0x30aa;\n t.okatakanahalfwidth = 0xff75;\n t.okorean = 0x3157;\n t.olehebrew = 0x05ab;\n t.omacron = 0x014d;\n t.omacronacute = 0x1e53;\n t.omacrongrave = 0x1e51;\n t.omdeva = 0x0950;\n t.omega = 0x03c9;\n t.omega1 = 0x03d6;\n t.omegacyrillic = 0x0461;\n t.omegalatinclosed = 0x0277;\n t.omegaroundcyrillic = 0x047b;\n t.omegatitlocyrillic = 0x047d;\n t.omegatonos = 0x03ce;\n t.omgujarati = 0x0ad0;\n t.omicron = 0x03bf;\n t.omicrontonos = 0x03cc;\n t.omonospace = 0xff4f;\n t.one = 0x0031;\n t.onearabic = 0x0661;\n t.onebengali = 0x09e7;\n t.onecircle = 0x2460;\n t.onecircleinversesansserif = 0x278a;\n t.onedeva = 0x0967;\n t.onedotenleader = 0x2024;\n t.oneeighth = 0x215b;\n t.onefitted = 0xf6dc;\n t.onegujarati = 0x0ae7;\n t.onegurmukhi = 0x0a67;\n t.onehackarabic = 0x0661;\n t.onehalf = 0x00bd;\n t.onehangzhou = 0x3021;\n t.oneideographicparen = 0x3220;\n t.oneinferior = 0x2081;\n t.onemonospace = 0xff11;\n t.onenumeratorbengali = 0x09f4;\n t.oneoldstyle = 0xf731;\n t.oneparen = 0x2474;\n t.oneperiod = 0x2488;\n t.onepersian = 0x06f1;\n t.onequarter = 0x00bc;\n t.oneroman = 0x2170;\n t.onesuperior = 0x00b9;\n t.onethai = 0x0e51;\n t.onethird = 0x2153;\n t.oogonek = 0x01eb;\n t.oogonekmacron = 0x01ed;\n t.oogurmukhi = 0x0a13;\n t.oomatragurmukhi = 0x0a4b;\n t.oopen = 0x0254;\n t.oparen = 0x24aa;\n t.openbullet = 0x25e6;\n t.option = 0x2325;\n t.ordfeminine = 0x00aa;\n t.ordmasculine = 0x00ba;\n t.orthogonal = 0x221f;\n t.oshortdeva = 0x0912;\n t.oshortvowelsigndeva = 0x094a;\n t.oslash = 0x00f8;\n t.oslashacute = 0x01ff;\n t.osmallhiragana = 0x3049;\n t.osmallkatakana = 0x30a9;\n t.osmallkatakanahalfwidth = 0xff6b;\n t.ostrokeacute = 0x01ff;\n t.osuperior = 0xf6f0;\n t.otcyrillic = 0x047f;\n t.otilde = 0x00f5;\n t.otildeacute = 0x1e4d;\n t.otildedieresis = 0x1e4f;\n t.oubopomofo = 0x3121;\n t.overline = 0x203e;\n t.overlinecenterline = 0xfe4a;\n t.overlinecmb = 0x0305;\n t.overlinedashed = 0xfe49;\n t.overlinedblwavy = 0xfe4c;\n t.overlinewavy = 0xfe4b;\n t.overscore = 0x00af;\n t.ovowelsignbengali = 0x09cb;\n t.ovowelsigndeva = 0x094b;\n t.ovowelsigngujarati = 0x0acb;\n t.p = 0x0070;\n t.paampssquare = 0x3380;\n t.paasentosquare = 0x332b;\n t.pabengali = 0x09aa;\n t.pacute = 0x1e55;\n t.padeva = 0x092a;\n t.pagedown = 0x21df;\n t.pageup = 0x21de;\n t.pagujarati = 0x0aaa;\n t.pagurmukhi = 0x0a2a;\n t.pahiragana = 0x3071;\n t.paiyannoithai = 0x0e2f;\n t.pakatakana = 0x30d1;\n t.palatalizationcyrilliccmb = 0x0484;\n t.palochkacyrillic = 0x04c0;\n t.pansioskorean = 0x317f;\n t.paragraph = 0x00b6;\n t.parallel = 0x2225;\n t.parenleft = 0x0028;\n t.parenleftaltonearabic = 0xfd3e;\n t.parenleftbt = 0xf8ed;\n t.parenleftex = 0xf8ec;\n t.parenleftinferior = 0x208d;\n t.parenleftmonospace = 0xff08;\n t.parenleftsmall = 0xfe59;\n t.parenleftsuperior = 0x207d;\n t.parenlefttp = 0xf8eb;\n t.parenleftvertical = 0xfe35;\n t.parenright = 0x0029;\n t.parenrightaltonearabic = 0xfd3f;\n t.parenrightbt = 0xf8f8;\n t.parenrightex = 0xf8f7;\n t.parenrightinferior = 0x208e;\n t.parenrightmonospace = 0xff09;\n t.parenrightsmall = 0xfe5a;\n t.parenrightsuperior = 0x207e;\n t.parenrighttp = 0xf8f6;\n t.parenrightvertical = 0xfe36;\n t.partialdiff = 0x2202;\n t.paseqhebrew = 0x05c0;\n t.pashtahebrew = 0x0599;\n t.pasquare = 0x33a9;\n t.patah = 0x05b7;\n t.patah11 = 0x05b7;\n t.patah1d = 0x05b7;\n t.patah2a = 0x05b7;\n t.patahhebrew = 0x05b7;\n t.patahnarrowhebrew = 0x05b7;\n t.patahquarterhebrew = 0x05b7;\n t.patahwidehebrew = 0x05b7;\n t.pazerhebrew = 0x05a1;\n t.pbopomofo = 0x3106;\n t.pcircle = 0x24df;\n t.pdotaccent = 0x1e57;\n t.pe = 0x05e4;\n t.pecyrillic = 0x043f;\n t.pedagesh = 0xfb44;\n t.pedageshhebrew = 0xfb44;\n t.peezisquare = 0x333b;\n t.pefinaldageshhebrew = 0xfb43;\n t.peharabic = 0x067e;\n t.peharmenian = 0x057a;\n t.pehebrew = 0x05e4;\n t.pehfinalarabic = 0xfb57;\n t.pehinitialarabic = 0xfb58;\n t.pehiragana = 0x307a;\n t.pehmedialarabic = 0xfb59;\n t.pekatakana = 0x30da;\n t.pemiddlehookcyrillic = 0x04a7;\n t.perafehebrew = 0xfb4e;\n t.percent = 0x0025;\n t.percentarabic = 0x066a;\n t.percentmonospace = 0xff05;\n t.percentsmall = 0xfe6a;\n t.period = 0x002e;\n t.periodarmenian = 0x0589;\n t.periodcentered = 0x00b7;\n t.periodhalfwidth = 0xff61;\n t.periodinferior = 0xf6e7;\n t.periodmonospace = 0xff0e;\n t.periodsmall = 0xfe52;\n t.periodsuperior = 0xf6e8;\n t.perispomenigreekcmb = 0x0342;\n t.perpendicular = 0x22a5;\n t.perthousand = 0x2030;\n t.peseta = 0x20a7;\n t.pfsquare = 0x338a;\n t.phabengali = 0x09ab;\n t.phadeva = 0x092b;\n t.phagujarati = 0x0aab;\n t.phagurmukhi = 0x0a2b;\n t.phi = 0x03c6;\n t.phi1 = 0x03d5;\n t.phieuphacirclekorean = 0x327a;\n t.phieuphaparenkorean = 0x321a;\n t.phieuphcirclekorean = 0x326c;\n t.phieuphkorean = 0x314d;\n t.phieuphparenkorean = 0x320c;\n t.philatin = 0x0278;\n t.phinthuthai = 0x0e3a;\n t.phisymbolgreek = 0x03d5;\n t.phook = 0x01a5;\n t.phophanthai = 0x0e1e;\n t.phophungthai = 0x0e1c;\n t.phosamphaothai = 0x0e20;\n t.pi = 0x03c0;\n t.pieupacirclekorean = 0x3273;\n t.pieupaparenkorean = 0x3213;\n t.pieupcieuckorean = 0x3176;\n t.pieupcirclekorean = 0x3265;\n t.pieupkiyeokkorean = 0x3172;\n t.pieupkorean = 0x3142;\n t.pieupparenkorean = 0x3205;\n t.pieupsioskiyeokkorean = 0x3174;\n t.pieupsioskorean = 0x3144;\n t.pieupsiostikeutkorean = 0x3175;\n t.pieupthieuthkorean = 0x3177;\n t.pieuptikeutkorean = 0x3173;\n t.pihiragana = 0x3074;\n t.pikatakana = 0x30d4;\n t.pisymbolgreek = 0x03d6;\n t.piwrarmenian = 0x0583;\n t.planckover2pi = 0x210f;\n t.planckover2pi1 = 0x210f;\n t.plus = 0x002b;\n t.plusbelowcmb = 0x031f;\n t.pluscircle = 0x2295;\n t.plusminus = 0x00b1;\n t.plusmod = 0x02d6;\n t.plusmonospace = 0xff0b;\n t.plussmall = 0xfe62;\n t.plussuperior = 0x207a;\n t.pmonospace = 0xff50;\n t.pmsquare = 0x33d8;\n t.pohiragana = 0x307d;\n t.pointingindexdownwhite = 0x261f;\n t.pointingindexleftwhite = 0x261c;\n t.pointingindexrightwhite = 0x261e;\n t.pointingindexupwhite = 0x261d;\n t.pokatakana = 0x30dd;\n t.poplathai = 0x0e1b;\n t.postalmark = 0x3012;\n t.postalmarkface = 0x3020;\n t.pparen = 0x24ab;\n t.precedes = 0x227a;\n t.prescription = 0x211e;\n t.primemod = 0x02b9;\n t.primereversed = 0x2035;\n t.product = 0x220f;\n t.projective = 0x2305;\n t.prolongedkana = 0x30fc;\n t.propellor = 0x2318;\n t.propersubset = 0x2282;\n t.propersuperset = 0x2283;\n t.proportion = 0x2237;\n t.proportional = 0x221d;\n t.psi = 0x03c8;\n t.psicyrillic = 0x0471;\n t.psilipneumatacyrilliccmb = 0x0486;\n t.pssquare = 0x33b0;\n t.puhiragana = 0x3077;\n t.pukatakana = 0x30d7;\n t.pvsquare = 0x33b4;\n t.pwsquare = 0x33ba;\n t.q = 0x0071;\n t.qadeva = 0x0958;\n t.qadmahebrew = 0x05a8;\n t.qafarabic = 0x0642;\n t.qaffinalarabic = 0xfed6;\n t.qafinitialarabic = 0xfed7;\n t.qafmedialarabic = 0xfed8;\n t.qamats = 0x05b8;\n t.qamats10 = 0x05b8;\n t.qamats1a = 0x05b8;\n t.qamats1c = 0x05b8;\n t.qamats27 = 0x05b8;\n t.qamats29 = 0x05b8;\n t.qamats33 = 0x05b8;\n t.qamatsde = 0x05b8;\n t.qamatshebrew = 0x05b8;\n t.qamatsnarrowhebrew = 0x05b8;\n t.qamatsqatanhebrew = 0x05b8;\n t.qamatsqatannarrowhebrew = 0x05b8;\n t.qamatsqatanquarterhebrew = 0x05b8;\n t.qamatsqatanwidehebrew = 0x05b8;\n t.qamatsquarterhebrew = 0x05b8;\n t.qamatswidehebrew = 0x05b8;\n t.qarneyparahebrew = 0x059f;\n t.qbopomofo = 0x3111;\n t.qcircle = 0x24e0;\n t.qhook = 0x02a0;\n t.qmonospace = 0xff51;\n t.qof = 0x05e7;\n t.qofdagesh = 0xfb47;\n t.qofdageshhebrew = 0xfb47;\n t.qofhebrew = 0x05e7;\n t.qparen = 0x24ac;\n t.quarternote = 0x2669;\n t.qubuts = 0x05bb;\n t.qubuts18 = 0x05bb;\n t.qubuts25 = 0x05bb;\n t.qubuts31 = 0x05bb;\n t.qubutshebrew = 0x05bb;\n t.qubutsnarrowhebrew = 0x05bb;\n t.qubutsquarterhebrew = 0x05bb;\n t.qubutswidehebrew = 0x05bb;\n t.question = 0x003f;\n t.questionarabic = 0x061f;\n t.questionarmenian = 0x055e;\n t.questiondown = 0x00bf;\n t.questiondownsmall = 0xf7bf;\n t.questiongreek = 0x037e;\n t.questionmonospace = 0xff1f;\n t.questionsmall = 0xf73f;\n t.quotedbl = 0x0022;\n t.quotedblbase = 0x201e;\n t.quotedblleft = 0x201c;\n t.quotedblmonospace = 0xff02;\n t.quotedblprime = 0x301e;\n t.quotedblprimereversed = 0x301d;\n t.quotedblright = 0x201d;\n t.quoteleft = 0x2018;\n t.quoteleftreversed = 0x201b;\n t.quotereversed = 0x201b;\n t.quoteright = 0x2019;\n t.quoterightn = 0x0149;\n t.quotesinglbase = 0x201a;\n t.quotesingle = 0x0027;\n t.quotesinglemonospace = 0xff07;\n t.r = 0x0072;\n t.raarmenian = 0x057c;\n t.rabengali = 0x09b0;\n t.racute = 0x0155;\n t.radeva = 0x0930;\n t.radical = 0x221a;\n t.radicalex = 0xf8e5;\n t.radoverssquare = 0x33ae;\n t.radoverssquaredsquare = 0x33af;\n t.radsquare = 0x33ad;\n t.rafe = 0x05bf;\n t.rafehebrew = 0x05bf;\n t.ragujarati = 0x0ab0;\n t.ragurmukhi = 0x0a30;\n t.rahiragana = 0x3089;\n t.rakatakana = 0x30e9;\n t.rakatakanahalfwidth = 0xff97;\n t.ralowerdiagonalbengali = 0x09f1;\n t.ramiddlediagonalbengali = 0x09f0;\n t.ramshorn = 0x0264;\n t.ratio = 0x2236;\n t.rbopomofo = 0x3116;\n t.rcaron = 0x0159;\n t.rcedilla = 0x0157;\n t.rcircle = 0x24e1;\n t.rcommaaccent = 0x0157;\n t.rdblgrave = 0x0211;\n t.rdotaccent = 0x1e59;\n t.rdotbelow = 0x1e5b;\n t.rdotbelowmacron = 0x1e5d;\n t.referencemark = 0x203b;\n t.reflexsubset = 0x2286;\n t.reflexsuperset = 0x2287;\n t.registered = 0x00ae;\n t.registersans = 0xf8e8;\n t.registerserif = 0xf6da;\n t.reharabic = 0x0631;\n t.reharmenian = 0x0580;\n t.rehfinalarabic = 0xfeae;\n t.rehiragana = 0x308c;\n t.rekatakana = 0x30ec;\n t.rekatakanahalfwidth = 0xff9a;\n t.resh = 0x05e8;\n t.reshdageshhebrew = 0xfb48;\n t.reshhebrew = 0x05e8;\n t.reversedtilde = 0x223d;\n t.reviahebrew = 0x0597;\n t.reviamugrashhebrew = 0x0597;\n t.revlogicalnot = 0x2310;\n t.rfishhook = 0x027e;\n t.rfishhookreversed = 0x027f;\n t.rhabengali = 0x09dd;\n t.rhadeva = 0x095d;\n t.rho = 0x03c1;\n t.rhook = 0x027d;\n t.rhookturned = 0x027b;\n t.rhookturnedsuperior = 0x02b5;\n t.rhosymbolgreek = 0x03f1;\n t.rhotichookmod = 0x02de;\n t.rieulacirclekorean = 0x3271;\n t.rieulaparenkorean = 0x3211;\n t.rieulcirclekorean = 0x3263;\n t.rieulhieuhkorean = 0x3140;\n t.rieulkiyeokkorean = 0x313a;\n t.rieulkiyeoksioskorean = 0x3169;\n t.rieulkorean = 0x3139;\n t.rieulmieumkorean = 0x313b;\n t.rieulpansioskorean = 0x316c;\n t.rieulparenkorean = 0x3203;\n t.rieulphieuphkorean = 0x313f;\n t.rieulpieupkorean = 0x313c;\n t.rieulpieupsioskorean = 0x316b;\n t.rieulsioskorean = 0x313d;\n t.rieulthieuthkorean = 0x313e;\n t.rieultikeutkorean = 0x316a;\n t.rieulyeorinhieuhkorean = 0x316d;\n t.rightangle = 0x221f;\n t.righttackbelowcmb = 0x0319;\n t.righttriangle = 0x22bf;\n t.rihiragana = 0x308a;\n t.rikatakana = 0x30ea;\n t.rikatakanahalfwidth = 0xff98;\n t.ring = 0x02da;\n t.ringbelowcmb = 0x0325;\n t.ringcmb = 0x030a;\n t.ringhalfleft = 0x02bf;\n t.ringhalfleftarmenian = 0x0559;\n t.ringhalfleftbelowcmb = 0x031c;\n t.ringhalfleftcentered = 0x02d3;\n t.ringhalfright = 0x02be;\n t.ringhalfrightbelowcmb = 0x0339;\n t.ringhalfrightcentered = 0x02d2;\n t.rinvertedbreve = 0x0213;\n t.rittorusquare = 0x3351;\n t.rlinebelow = 0x1e5f;\n t.rlongleg = 0x027c;\n t.rlonglegturned = 0x027a;\n t.rmonospace = 0xff52;\n t.rohiragana = 0x308d;\n t.rokatakana = 0x30ed;\n t.rokatakanahalfwidth = 0xff9b;\n t.roruathai = 0x0e23;\n t.rparen = 0x24ad;\n t.rrabengali = 0x09dc;\n t.rradeva = 0x0931;\n t.rragurmukhi = 0x0a5c;\n t.rreharabic = 0x0691;\n t.rrehfinalarabic = 0xfb8d;\n t.rrvocalicbengali = 0x09e0;\n t.rrvocalicdeva = 0x0960;\n t.rrvocalicgujarati = 0x0ae0;\n t.rrvocalicvowelsignbengali = 0x09c4;\n t.rrvocalicvowelsigndeva = 0x0944;\n t.rrvocalicvowelsigngujarati = 0x0ac4;\n t.rsuperior = 0xf6f1;\n t.rtblock = 0x2590;\n t.rturned = 0x0279;\n t.rturnedsuperior = 0x02b4;\n t.ruhiragana = 0x308b;\n t.rukatakana = 0x30eb;\n t.rukatakanahalfwidth = 0xff99;\n t.rupeemarkbengali = 0x09f2;\n t.rupeesignbengali = 0x09f3;\n t.rupiah = 0xf6dd;\n t.ruthai = 0x0e24;\n t.rvocalicbengali = 0x098b;\n t.rvocalicdeva = 0x090b;\n t.rvocalicgujarati = 0x0a8b;\n t.rvocalicvowelsignbengali = 0x09c3;\n t.rvocalicvowelsigndeva = 0x0943;\n t.rvocalicvowelsigngujarati = 0x0ac3;\n t.s = 0x0073;\n t.sabengali = 0x09b8;\n t.sacute = 0x015b;\n t.sacutedotaccent = 0x1e65;\n t.sadarabic = 0x0635;\n t.sadeva = 0x0938;\n t.sadfinalarabic = 0xfeba;\n t.sadinitialarabic = 0xfebb;\n t.sadmedialarabic = 0xfebc;\n t.sagujarati = 0x0ab8;\n t.sagurmukhi = 0x0a38;\n t.sahiragana = 0x3055;\n t.sakatakana = 0x30b5;\n t.sakatakanahalfwidth = 0xff7b;\n t.sallallahoualayhewasallamarabic = 0xfdfa;\n t.samekh = 0x05e1;\n t.samekhdagesh = 0xfb41;\n t.samekhdageshhebrew = 0xfb41;\n t.samekhhebrew = 0x05e1;\n t.saraaathai = 0x0e32;\n t.saraaethai = 0x0e41;\n t.saraaimaimalaithai = 0x0e44;\n t.saraaimaimuanthai = 0x0e43;\n t.saraamthai = 0x0e33;\n t.saraathai = 0x0e30;\n t.saraethai = 0x0e40;\n t.saraiileftthai = 0xf886;\n t.saraiithai = 0x0e35;\n t.saraileftthai = 0xf885;\n t.saraithai = 0x0e34;\n t.saraothai = 0x0e42;\n t.saraueeleftthai = 0xf888;\n t.saraueethai = 0x0e37;\n t.saraueleftthai = 0xf887;\n t.sarauethai = 0x0e36;\n t.sarauthai = 0x0e38;\n t.sarauuthai = 0x0e39;\n t.sbopomofo = 0x3119;\n t.scaron = 0x0161;\n t.scarondotaccent = 0x1e67;\n t.scedilla = 0x015f;\n t.schwa = 0x0259;\n t.schwacyrillic = 0x04d9;\n t.schwadieresiscyrillic = 0x04db;\n t.schwahook = 0x025a;\n t.scircle = 0x24e2;\n t.scircumflex = 0x015d;\n t.scommaaccent = 0x0219;\n t.sdotaccent = 0x1e61;\n t.sdotbelow = 0x1e63;\n t.sdotbelowdotaccent = 0x1e69;\n t.seagullbelowcmb = 0x033c;\n t.second = 0x2033;\n t.secondtonechinese = 0x02ca;\n t.section = 0x00a7;\n t.seenarabic = 0x0633;\n t.seenfinalarabic = 0xfeb2;\n t.seeninitialarabic = 0xfeb3;\n t.seenmedialarabic = 0xfeb4;\n t.segol = 0x05b6;\n t.segol13 = 0x05b6;\n t.segol1f = 0x05b6;\n t.segol2c = 0x05b6;\n t.segolhebrew = 0x05b6;\n t.segolnarrowhebrew = 0x05b6;\n t.segolquarterhebrew = 0x05b6;\n t.segoltahebrew = 0x0592;\n t.segolwidehebrew = 0x05b6;\n t.seharmenian = 0x057d;\n t.sehiragana = 0x305b;\n t.sekatakana = 0x30bb;\n t.sekatakanahalfwidth = 0xff7e;\n t.semicolon = 0x003b;\n t.semicolonarabic = 0x061b;\n t.semicolonmonospace = 0xff1b;\n t.semicolonsmall = 0xfe54;\n t.semivoicedmarkkana = 0x309c;\n t.semivoicedmarkkanahalfwidth = 0xff9f;\n t.sentisquare = 0x3322;\n t.sentosquare = 0x3323;\n t.seven = 0x0037;\n t.sevenarabic = 0x0667;\n t.sevenbengali = 0x09ed;\n t.sevencircle = 0x2466;\n t.sevencircleinversesansserif = 0x2790;\n t.sevendeva = 0x096d;\n t.seveneighths = 0x215e;\n t.sevengujarati = 0x0aed;\n t.sevengurmukhi = 0x0a6d;\n t.sevenhackarabic = 0x0667;\n t.sevenhangzhou = 0x3027;\n t.sevenideographicparen = 0x3226;\n t.seveninferior = 0x2087;\n t.sevenmonospace = 0xff17;\n t.sevenoldstyle = 0xf737;\n t.sevenparen = 0x247a;\n t.sevenperiod = 0x248e;\n t.sevenpersian = 0x06f7;\n t.sevenroman = 0x2176;\n t.sevensuperior = 0x2077;\n t.seventeencircle = 0x2470;\n t.seventeenparen = 0x2484;\n t.seventeenperiod = 0x2498;\n t.seventhai = 0x0e57;\n t.sfthyphen = 0x00ad;\n t.shaarmenian = 0x0577;\n t.shabengali = 0x09b6;\n t.shacyrillic = 0x0448;\n t.shaddaarabic = 0x0651;\n t.shaddadammaarabic = 0xfc61;\n t.shaddadammatanarabic = 0xfc5e;\n t.shaddafathaarabic = 0xfc60;\n t.shaddakasraarabic = 0xfc62;\n t.shaddakasratanarabic = 0xfc5f;\n t.shade = 0x2592;\n t.shadedark = 0x2593;\n t.shadelight = 0x2591;\n t.shademedium = 0x2592;\n t.shadeva = 0x0936;\n t.shagujarati = 0x0ab6;\n t.shagurmukhi = 0x0a36;\n t.shalshelethebrew = 0x0593;\n t.shbopomofo = 0x3115;\n t.shchacyrillic = 0x0449;\n t.sheenarabic = 0x0634;\n t.sheenfinalarabic = 0xfeb6;\n t.sheeninitialarabic = 0xfeb7;\n t.sheenmedialarabic = 0xfeb8;\n t.sheicoptic = 0x03e3;\n t.sheqel = 0x20aa;\n t.sheqelhebrew = 0x20aa;\n t.sheva = 0x05b0;\n t.sheva115 = 0x05b0;\n t.sheva15 = 0x05b0;\n t.sheva22 = 0x05b0;\n t.sheva2e = 0x05b0;\n t.shevahebrew = 0x05b0;\n t.shevanarrowhebrew = 0x05b0;\n t.shevaquarterhebrew = 0x05b0;\n t.shevawidehebrew = 0x05b0;\n t.shhacyrillic = 0x04bb;\n t.shimacoptic = 0x03ed;\n t.shin = 0x05e9;\n t.shindagesh = 0xfb49;\n t.shindageshhebrew = 0xfb49;\n t.shindageshshindot = 0xfb2c;\n t.shindageshshindothebrew = 0xfb2c;\n t.shindageshsindot = 0xfb2d;\n t.shindageshsindothebrew = 0xfb2d;\n t.shindothebrew = 0x05c1;\n t.shinhebrew = 0x05e9;\n t.shinshindot = 0xfb2a;\n t.shinshindothebrew = 0xfb2a;\n t.shinsindot = 0xfb2b;\n t.shinsindothebrew = 0xfb2b;\n t.shook = 0x0282;\n t.sigma = 0x03c3;\n t.sigma1 = 0x03c2;\n t.sigmafinal = 0x03c2;\n t.sigmalunatesymbolgreek = 0x03f2;\n t.sihiragana = 0x3057;\n t.sikatakana = 0x30b7;\n t.sikatakanahalfwidth = 0xff7c;\n t.siluqhebrew = 0x05bd;\n t.siluqlefthebrew = 0x05bd;\n t.similar = 0x223c;\n t.sindothebrew = 0x05c2;\n t.siosacirclekorean = 0x3274;\n t.siosaparenkorean = 0x3214;\n t.sioscieuckorean = 0x317e;\n t.sioscirclekorean = 0x3266;\n t.sioskiyeokkorean = 0x317a;\n t.sioskorean = 0x3145;\n t.siosnieunkorean = 0x317b;\n t.siosparenkorean = 0x3206;\n t.siospieupkorean = 0x317d;\n t.siostikeutkorean = 0x317c;\n t.six = 0x0036;\n t.sixarabic = 0x0666;\n t.sixbengali = 0x09ec;\n t.sixcircle = 0x2465;\n t.sixcircleinversesansserif = 0x278f;\n t.sixdeva = 0x096c;\n t.sixgujarati = 0x0aec;\n t.sixgurmukhi = 0x0a6c;\n t.sixhackarabic = 0x0666;\n t.sixhangzhou = 0x3026;\n t.sixideographicparen = 0x3225;\n t.sixinferior = 0x2086;\n t.sixmonospace = 0xff16;\n t.sixoldstyle = 0xf736;\n t.sixparen = 0x2479;\n t.sixperiod = 0x248d;\n t.sixpersian = 0x06f6;\n t.sixroman = 0x2175;\n t.sixsuperior = 0x2076;\n t.sixteencircle = 0x246f;\n t.sixteencurrencydenominatorbengali = 0x09f9;\n t.sixteenparen = 0x2483;\n t.sixteenperiod = 0x2497;\n t.sixthai = 0x0e56;\n t.slash = 0x002f;\n t.slashmonospace = 0xff0f;\n t.slong = 0x017f;\n t.slongdotaccent = 0x1e9b;\n t.smileface = 0x263a;\n t.smonospace = 0xff53;\n t.sofpasuqhebrew = 0x05c3;\n t.softhyphen = 0x00ad;\n t.softsigncyrillic = 0x044c;\n t.sohiragana = 0x305d;\n t.sokatakana = 0x30bd;\n t.sokatakanahalfwidth = 0xff7f;\n t.soliduslongoverlaycmb = 0x0338;\n t.solidusshortoverlaycmb = 0x0337;\n t.sorusithai = 0x0e29;\n t.sosalathai = 0x0e28;\n t.sosothai = 0x0e0b;\n t.sosuathai = 0x0e2a;\n t.space = 0x0020;\n t.spacehackarabic = 0x0020;\n t.spade = 0x2660;\n t.spadesuitblack = 0x2660;\n t.spadesuitwhite = 0x2664;\n t.sparen = 0x24ae;\n t.squarebelowcmb = 0x033b;\n t.squarecc = 0x33c4;\n t.squarecm = 0x339d;\n t.squarediagonalcrosshatchfill = 0x25a9;\n t.squarehorizontalfill = 0x25a4;\n t.squarekg = 0x338f;\n t.squarekm = 0x339e;\n t.squarekmcapital = 0x33ce;\n t.squareln = 0x33d1;\n t.squarelog = 0x33d2;\n t.squaremg = 0x338e;\n t.squaremil = 0x33d5;\n t.squaremm = 0x339c;\n t.squaremsquared = 0x33a1;\n t.squareorthogonalcrosshatchfill = 0x25a6;\n t.squareupperlefttolowerrightfill = 0x25a7;\n t.squareupperrighttolowerleftfill = 0x25a8;\n t.squareverticalfill = 0x25a5;\n t.squarewhitewithsmallblack = 0x25a3;\n t.srsquare = 0x33db;\n t.ssabengali = 0x09b7;\n t.ssadeva = 0x0937;\n t.ssagujarati = 0x0ab7;\n t.ssangcieuckorean = 0x3149;\n t.ssanghieuhkorean = 0x3185;\n t.ssangieungkorean = 0x3180;\n t.ssangkiyeokkorean = 0x3132;\n t.ssangnieunkorean = 0x3165;\n t.ssangpieupkorean = 0x3143;\n t.ssangsioskorean = 0x3146;\n t.ssangtikeutkorean = 0x3138;\n t.ssuperior = 0xf6f2;\n t.sterling = 0x00a3;\n t.sterlingmonospace = 0xffe1;\n t.strokelongoverlaycmb = 0x0336;\n t.strokeshortoverlaycmb = 0x0335;\n t.subset = 0x2282;\n t.subsetnotequal = 0x228a;\n t.subsetorequal = 0x2286;\n t.succeeds = 0x227b;\n t.suchthat = 0x220b;\n t.suhiragana = 0x3059;\n t.sukatakana = 0x30b9;\n t.sukatakanahalfwidth = 0xff7d;\n t.sukunarabic = 0x0652;\n t.summation = 0x2211;\n t.sun = 0x263c;\n t.superset = 0x2283;\n t.supersetnotequal = 0x228b;\n t.supersetorequal = 0x2287;\n t.svsquare = 0x33dc;\n t.syouwaerasquare = 0x337c;\n t.t = 0x0074;\n t.tabengali = 0x09a4;\n t.tackdown = 0x22a4;\n t.tackleft = 0x22a3;\n t.tadeva = 0x0924;\n t.tagujarati = 0x0aa4;\n t.tagurmukhi = 0x0a24;\n t.taharabic = 0x0637;\n t.tahfinalarabic = 0xfec2;\n t.tahinitialarabic = 0xfec3;\n t.tahiragana = 0x305f;\n t.tahmedialarabic = 0xfec4;\n t.taisyouerasquare = 0x337d;\n t.takatakana = 0x30bf;\n t.takatakanahalfwidth = 0xff80;\n t.tatweelarabic = 0x0640;\n t.tau = 0x03c4;\n t.tav = 0x05ea;\n t.tavdages = 0xfb4a;\n t.tavdagesh = 0xfb4a;\n t.tavdageshhebrew = 0xfb4a;\n t.tavhebrew = 0x05ea;\n t.tbar = 0x0167;\n t.tbopomofo = 0x310a;\n t.tcaron = 0x0165;\n t.tccurl = 0x02a8;\n t.tcedilla = 0x0163;\n t.tcheharabic = 0x0686;\n t.tchehfinalarabic = 0xfb7b;\n t.tchehinitialarabic = 0xfb7c;\n t.tchehmedialarabic = 0xfb7d;\n t.tcircle = 0x24e3;\n t.tcircumflexbelow = 0x1e71;\n t.tcommaaccent = 0x0163;\n t.tdieresis = 0x1e97;\n t.tdotaccent = 0x1e6b;\n t.tdotbelow = 0x1e6d;\n t.tecyrillic = 0x0442;\n t.tedescendercyrillic = 0x04ad;\n t.teharabic = 0x062a;\n t.tehfinalarabic = 0xfe96;\n t.tehhahinitialarabic = 0xfca2;\n t.tehhahisolatedarabic = 0xfc0c;\n t.tehinitialarabic = 0xfe97;\n t.tehiragana = 0x3066;\n t.tehjeeminitialarabic = 0xfca1;\n t.tehjeemisolatedarabic = 0xfc0b;\n t.tehmarbutaarabic = 0x0629;\n t.tehmarbutafinalarabic = 0xfe94;\n t.tehmedialarabic = 0xfe98;\n t.tehmeeminitialarabic = 0xfca4;\n t.tehmeemisolatedarabic = 0xfc0e;\n t.tehnoonfinalarabic = 0xfc73;\n t.tekatakana = 0x30c6;\n t.tekatakanahalfwidth = 0xff83;\n t.telephone = 0x2121;\n t.telephoneblack = 0x260e;\n t.telishagedolahebrew = 0x05a0;\n t.telishaqetanahebrew = 0x05a9;\n t.tencircle = 0x2469;\n t.tenideographicparen = 0x3229;\n t.tenparen = 0x247d;\n t.tenperiod = 0x2491;\n t.tenroman = 0x2179;\n t.tesh = 0x02a7;\n t.tet = 0x05d8;\n t.tetdagesh = 0xfb38;\n t.tetdageshhebrew = 0xfb38;\n t.tethebrew = 0x05d8;\n t.tetsecyrillic = 0x04b5;\n t.tevirhebrew = 0x059b;\n t.tevirlefthebrew = 0x059b;\n t.thabengali = 0x09a5;\n t.thadeva = 0x0925;\n t.thagujarati = 0x0aa5;\n t.thagurmukhi = 0x0a25;\n t.thalarabic = 0x0630;\n t.thalfinalarabic = 0xfeac;\n t.thanthakhatlowleftthai = 0xf898;\n t.thanthakhatlowrightthai = 0xf897;\n t.thanthakhatthai = 0x0e4c;\n t.thanthakhatupperleftthai = 0xf896;\n t.theharabic = 0x062b;\n t.thehfinalarabic = 0xfe9a;\n t.thehinitialarabic = 0xfe9b;\n t.thehmedialarabic = 0xfe9c;\n t.thereexists = 0x2203;\n t.therefore = 0x2234;\n t.theta = 0x03b8;\n t.theta1 = 0x03d1;\n t.thetasymbolgreek = 0x03d1;\n t.thieuthacirclekorean = 0x3279;\n t.thieuthaparenkorean = 0x3219;\n t.thieuthcirclekorean = 0x326b;\n t.thieuthkorean = 0x314c;\n t.thieuthparenkorean = 0x320b;\n t.thirteencircle = 0x246c;\n t.thirteenparen = 0x2480;\n t.thirteenperiod = 0x2494;\n t.thonangmonthothai = 0x0e11;\n t.thook = 0x01ad;\n t.thophuthaothai = 0x0e12;\n t.thorn = 0x00fe;\n t.thothahanthai = 0x0e17;\n t.thothanthai = 0x0e10;\n t.thothongthai = 0x0e18;\n t.thothungthai = 0x0e16;\n t.thousandcyrillic = 0x0482;\n t.thousandsseparatorarabic = 0x066c;\n t.thousandsseparatorpersian = 0x066c;\n t.three = 0x0033;\n t.threearabic = 0x0663;\n t.threebengali = 0x09e9;\n t.threecircle = 0x2462;\n t.threecircleinversesansserif = 0x278c;\n t.threedeva = 0x0969;\n t.threeeighths = 0x215c;\n t.threegujarati = 0x0ae9;\n t.threegurmukhi = 0x0a69;\n t.threehackarabic = 0x0663;\n t.threehangzhou = 0x3023;\n t.threeideographicparen = 0x3222;\n t.threeinferior = 0x2083;\n t.threemonospace = 0xff13;\n t.threenumeratorbengali = 0x09f6;\n t.threeoldstyle = 0xf733;\n t.threeparen = 0x2476;\n t.threeperiod = 0x248a;\n t.threepersian = 0x06f3;\n t.threequarters = 0x00be;\n t.threequartersemdash = 0xf6de;\n t.threeroman = 0x2172;\n t.threesuperior = 0x00b3;\n t.threethai = 0x0e53;\n t.thzsquare = 0x3394;\n t.tihiragana = 0x3061;\n t.tikatakana = 0x30c1;\n t.tikatakanahalfwidth = 0xff81;\n t.tikeutacirclekorean = 0x3270;\n t.tikeutaparenkorean = 0x3210;\n t.tikeutcirclekorean = 0x3262;\n t.tikeutkorean = 0x3137;\n t.tikeutparenkorean = 0x3202;\n t.tilde = 0x02dc;\n t.tildebelowcmb = 0x0330;\n t.tildecmb = 0x0303;\n t.tildecomb = 0x0303;\n t.tildedoublecmb = 0x0360;\n t.tildeoperator = 0x223c;\n t.tildeoverlaycmb = 0x0334;\n t.tildeverticalcmb = 0x033e;\n t.timescircle = 0x2297;\n t.tipehahebrew = 0x0596;\n t.tipehalefthebrew = 0x0596;\n t.tippigurmukhi = 0x0a70;\n t.titlocyrilliccmb = 0x0483;\n t.tiwnarmenian = 0x057f;\n t.tlinebelow = 0x1e6f;\n t.tmonospace = 0xff54;\n t.toarmenian = 0x0569;\n t.tohiragana = 0x3068;\n t.tokatakana = 0x30c8;\n t.tokatakanahalfwidth = 0xff84;\n t.tonebarextrahighmod = 0x02e5;\n t.tonebarextralowmod = 0x02e9;\n t.tonebarhighmod = 0x02e6;\n t.tonebarlowmod = 0x02e8;\n t.tonebarmidmod = 0x02e7;\n t.tonefive = 0x01bd;\n t.tonesix = 0x0185;\n t.tonetwo = 0x01a8;\n t.tonos = 0x0384;\n t.tonsquare = 0x3327;\n t.topatakthai = 0x0e0f;\n t.tortoiseshellbracketleft = 0x3014;\n t.tortoiseshellbracketleftsmall = 0xfe5d;\n t.tortoiseshellbracketleftvertical = 0xfe39;\n t.tortoiseshellbracketright = 0x3015;\n t.tortoiseshellbracketrightsmall = 0xfe5e;\n t.tortoiseshellbracketrightvertical = 0xfe3a;\n t.totaothai = 0x0e15;\n t.tpalatalhook = 0x01ab;\n t.tparen = 0x24af;\n t.trademark = 0x2122;\n t.trademarksans = 0xf8ea;\n t.trademarkserif = 0xf6db;\n t.tretroflexhook = 0x0288;\n t.triagdn = 0x25bc;\n t.triaglf = 0x25c4;\n t.triagrt = 0x25ba;\n t.triagup = 0x25b2;\n t.ts = 0x02a6;\n t.tsadi = 0x05e6;\n t.tsadidagesh = 0xfb46;\n t.tsadidageshhebrew = 0xfb46;\n t.tsadihebrew = 0x05e6;\n t.tsecyrillic = 0x0446;\n t.tsere = 0x05b5;\n t.tsere12 = 0x05b5;\n t.tsere1e = 0x05b5;\n t.tsere2b = 0x05b5;\n t.tserehebrew = 0x05b5;\n t.tserenarrowhebrew = 0x05b5;\n t.tserequarterhebrew = 0x05b5;\n t.tserewidehebrew = 0x05b5;\n t.tshecyrillic = 0x045b;\n t.tsuperior = 0xf6f3;\n t.ttabengali = 0x099f;\n t.ttadeva = 0x091f;\n t.ttagujarati = 0x0a9f;\n t.ttagurmukhi = 0x0a1f;\n t.tteharabic = 0x0679;\n t.ttehfinalarabic = 0xfb67;\n t.ttehinitialarabic = 0xfb68;\n t.ttehmedialarabic = 0xfb69;\n t.tthabengali = 0x09a0;\n t.tthadeva = 0x0920;\n t.tthagujarati = 0x0aa0;\n t.tthagurmukhi = 0x0a20;\n t.tturned = 0x0287;\n t.tuhiragana = 0x3064;\n t.tukatakana = 0x30c4;\n t.tukatakanahalfwidth = 0xff82;\n t.tusmallhiragana = 0x3063;\n t.tusmallkatakana = 0x30c3;\n t.tusmallkatakanahalfwidth = 0xff6f;\n t.twelvecircle = 0x246b;\n t.twelveparen = 0x247f;\n t.twelveperiod = 0x2493;\n t.twelveroman = 0x217b;\n t.twentycircle = 0x2473;\n t.twentyhangzhou = 0x5344;\n t.twentyparen = 0x2487;\n t.twentyperiod = 0x249b;\n t.two = 0x0032;\n t.twoarabic = 0x0662;\n t.twobengali = 0x09e8;\n t.twocircle = 0x2461;\n t.twocircleinversesansserif = 0x278b;\n t.twodeva = 0x0968;\n t.twodotenleader = 0x2025;\n t.twodotleader = 0x2025;\n t.twodotleadervertical = 0xfe30;\n t.twogujarati = 0x0ae8;\n t.twogurmukhi = 0x0a68;\n t.twohackarabic = 0x0662;\n t.twohangzhou = 0x3022;\n t.twoideographicparen = 0x3221;\n t.twoinferior = 0x2082;\n t.twomonospace = 0xff12;\n t.twonumeratorbengali = 0x09f5;\n t.twooldstyle = 0xf732;\n t.twoparen = 0x2475;\n t.twoperiod = 0x2489;\n t.twopersian = 0x06f2;\n t.tworoman = 0x2171;\n t.twostroke = 0x01bb;\n t.twosuperior = 0x00b2;\n t.twothai = 0x0e52;\n t.twothirds = 0x2154;\n t.u = 0x0075;\n t.uacute = 0x00fa;\n t.ubar = 0x0289;\n t.ubengali = 0x0989;\n t.ubopomofo = 0x3128;\n t.ubreve = 0x016d;\n t.ucaron = 0x01d4;\n t.ucircle = 0x24e4;\n t.ucircumflex = 0x00fb;\n t.ucircumflexbelow = 0x1e77;\n t.ucyrillic = 0x0443;\n t.udattadeva = 0x0951;\n t.udblacute = 0x0171;\n t.udblgrave = 0x0215;\n t.udeva = 0x0909;\n t.udieresis = 0x00fc;\n t.udieresisacute = 0x01d8;\n t.udieresisbelow = 0x1e73;\n t.udieresiscaron = 0x01da;\n t.udieresiscyrillic = 0x04f1;\n t.udieresisgrave = 0x01dc;\n t.udieresismacron = 0x01d6;\n t.udotbelow = 0x1ee5;\n t.ugrave = 0x00f9;\n t.ugujarati = 0x0a89;\n t.ugurmukhi = 0x0a09;\n t.uhiragana = 0x3046;\n t.uhookabove = 0x1ee7;\n t.uhorn = 0x01b0;\n t.uhornacute = 0x1ee9;\n t.uhorndotbelow = 0x1ef1;\n t.uhorngrave = 0x1eeb;\n t.uhornhookabove = 0x1eed;\n t.uhorntilde = 0x1eef;\n t.uhungarumlaut = 0x0171;\n t.uhungarumlautcyrillic = 0x04f3;\n t.uinvertedbreve = 0x0217;\n t.ukatakana = 0x30a6;\n t.ukatakanahalfwidth = 0xff73;\n t.ukcyrillic = 0x0479;\n t.ukorean = 0x315c;\n t.umacron = 0x016b;\n t.umacroncyrillic = 0x04ef;\n t.umacrondieresis = 0x1e7b;\n t.umatragurmukhi = 0x0a41;\n t.umonospace = 0xff55;\n t.underscore = 0x005f;\n t.underscoredbl = 0x2017;\n t.underscoremonospace = 0xff3f;\n t.underscorevertical = 0xfe33;\n t.underscorewavy = 0xfe4f;\n t.union = 0x222a;\n t.universal = 0x2200;\n t.uogonek = 0x0173;\n t.uparen = 0x24b0;\n t.upblock = 0x2580;\n t.upperdothebrew = 0x05c4;\n t.upsilon = 0x03c5;\n t.upsilondieresis = 0x03cb;\n t.upsilondieresistonos = 0x03b0;\n t.upsilonlatin = 0x028a;\n t.upsilontonos = 0x03cd;\n t.uptackbelowcmb = 0x031d;\n t.uptackmod = 0x02d4;\n t.uragurmukhi = 0x0a73;\n t.uring = 0x016f;\n t.ushortcyrillic = 0x045e;\n t.usmallhiragana = 0x3045;\n t.usmallkatakana = 0x30a5;\n t.usmallkatakanahalfwidth = 0xff69;\n t.ustraightcyrillic = 0x04af;\n t.ustraightstrokecyrillic = 0x04b1;\n t.utilde = 0x0169;\n t.utildeacute = 0x1e79;\n t.utildebelow = 0x1e75;\n t.uubengali = 0x098a;\n t.uudeva = 0x090a;\n t.uugujarati = 0x0a8a;\n t.uugurmukhi = 0x0a0a;\n t.uumatragurmukhi = 0x0a42;\n t.uuvowelsignbengali = 0x09c2;\n t.uuvowelsigndeva = 0x0942;\n t.uuvowelsigngujarati = 0x0ac2;\n t.uvowelsignbengali = 0x09c1;\n t.uvowelsigndeva = 0x0941;\n t.uvowelsigngujarati = 0x0ac1;\n t.v = 0x0076;\n t.vadeva = 0x0935;\n t.vagujarati = 0x0ab5;\n t.vagurmukhi = 0x0a35;\n t.vakatakana = 0x30f7;\n t.vav = 0x05d5;\n t.vavdagesh = 0xfb35;\n t.vavdagesh65 = 0xfb35;\n t.vavdageshhebrew = 0xfb35;\n t.vavhebrew = 0x05d5;\n t.vavholam = 0xfb4b;\n t.vavholamhebrew = 0xfb4b;\n t.vavvavhebrew = 0x05f0;\n t.vavyodhebrew = 0x05f1;\n t.vcircle = 0x24e5;\n t.vdotbelow = 0x1e7f;\n t.vecyrillic = 0x0432;\n t.veharabic = 0x06a4;\n t.vehfinalarabic = 0xfb6b;\n t.vehinitialarabic = 0xfb6c;\n t.vehmedialarabic = 0xfb6d;\n t.vekatakana = 0x30f9;\n t.venus = 0x2640;\n t.verticalbar = 0x007c;\n t.verticallineabovecmb = 0x030d;\n t.verticallinebelowcmb = 0x0329;\n t.verticallinelowmod = 0x02cc;\n t.verticallinemod = 0x02c8;\n t.vewarmenian = 0x057e;\n t.vhook = 0x028b;\n t.vikatakana = 0x30f8;\n t.viramabengali = 0x09cd;\n t.viramadeva = 0x094d;\n t.viramagujarati = 0x0acd;\n t.visargabengali = 0x0983;\n t.visargadeva = 0x0903;\n t.visargagujarati = 0x0a83;\n t.vmonospace = 0xff56;\n t.voarmenian = 0x0578;\n t.voicediterationhiragana = 0x309e;\n t.voicediterationkatakana = 0x30fe;\n t.voicedmarkkana = 0x309b;\n t.voicedmarkkanahalfwidth = 0xff9e;\n t.vokatakana = 0x30fa;\n t.vparen = 0x24b1;\n t.vtilde = 0x1e7d;\n t.vturned = 0x028c;\n t.vuhiragana = 0x3094;\n t.vukatakana = 0x30f4;\n t.w = 0x0077;\n t.wacute = 0x1e83;\n t.waekorean = 0x3159;\n t.wahiragana = 0x308f;\n t.wakatakana = 0x30ef;\n t.wakatakanahalfwidth = 0xff9c;\n t.wakorean = 0x3158;\n t.wasmallhiragana = 0x308e;\n t.wasmallkatakana = 0x30ee;\n t.wattosquare = 0x3357;\n t.wavedash = 0x301c;\n t.wavyunderscorevertical = 0xfe34;\n t.wawarabic = 0x0648;\n t.wawfinalarabic = 0xfeee;\n t.wawhamzaabovearabic = 0x0624;\n t.wawhamzaabovefinalarabic = 0xfe86;\n t.wbsquare = 0x33dd;\n t.wcircle = 0x24e6;\n t.wcircumflex = 0x0175;\n t.wdieresis = 0x1e85;\n t.wdotaccent = 0x1e87;\n t.wdotbelow = 0x1e89;\n t.wehiragana = 0x3091;\n t.weierstrass = 0x2118;\n t.wekatakana = 0x30f1;\n t.wekorean = 0x315e;\n t.weokorean = 0x315d;\n t.wgrave = 0x1e81;\n t.whitebullet = 0x25e6;\n t.whitecircle = 0x25cb;\n t.whitecircleinverse = 0x25d9;\n t.whitecornerbracketleft = 0x300e;\n t.whitecornerbracketleftvertical = 0xfe43;\n t.whitecornerbracketright = 0x300f;\n t.whitecornerbracketrightvertical = 0xfe44;\n t.whitediamond = 0x25c7;\n t.whitediamondcontainingblacksmalldiamond = 0x25c8;\n t.whitedownpointingsmalltriangle = 0x25bf;\n t.whitedownpointingtriangle = 0x25bd;\n t.whiteleftpointingsmalltriangle = 0x25c3;\n t.whiteleftpointingtriangle = 0x25c1;\n t.whitelenticularbracketleft = 0x3016;\n t.whitelenticularbracketright = 0x3017;\n t.whiterightpointingsmalltriangle = 0x25b9;\n t.whiterightpointingtriangle = 0x25b7;\n t.whitesmallsquare = 0x25ab;\n t.whitesmilingface = 0x263a;\n t.whitesquare = 0x25a1;\n t.whitestar = 0x2606;\n t.whitetelephone = 0x260f;\n t.whitetortoiseshellbracketleft = 0x3018;\n t.whitetortoiseshellbracketright = 0x3019;\n t.whiteuppointingsmalltriangle = 0x25b5;\n t.whiteuppointingtriangle = 0x25b3;\n t.wihiragana = 0x3090;\n t.wikatakana = 0x30f0;\n t.wikorean = 0x315f;\n t.wmonospace = 0xff57;\n t.wohiragana = 0x3092;\n t.wokatakana = 0x30f2;\n t.wokatakanahalfwidth = 0xff66;\n t.won = 0x20a9;\n t.wonmonospace = 0xffe6;\n t.wowaenthai = 0x0e27;\n t.wparen = 0x24b2;\n t.wring = 0x1e98;\n t.wsuperior = 0x02b7;\n t.wturned = 0x028d;\n t.wynn = 0x01bf;\n t.x = 0x0078;\n t.xabovecmb = 0x033d;\n t.xbopomofo = 0x3112;\n t.xcircle = 0x24e7;\n t.xdieresis = 0x1e8d;\n t.xdotaccent = 0x1e8b;\n t.xeharmenian = 0x056d;\n t.xi = 0x03be;\n t.xmonospace = 0xff58;\n t.xparen = 0x24b3;\n t.xsuperior = 0x02e3;\n t.y = 0x0079;\n t.yaadosquare = 0x334e;\n t.yabengali = 0x09af;\n t.yacute = 0x00fd;\n t.yadeva = 0x092f;\n t.yaekorean = 0x3152;\n t.yagujarati = 0x0aaf;\n t.yagurmukhi = 0x0a2f;\n t.yahiragana = 0x3084;\n t.yakatakana = 0x30e4;\n t.yakatakanahalfwidth = 0xff94;\n t.yakorean = 0x3151;\n t.yamakkanthai = 0x0e4e;\n t.yasmallhiragana = 0x3083;\n t.yasmallkatakana = 0x30e3;\n t.yasmallkatakanahalfwidth = 0xff6c;\n t.yatcyrillic = 0x0463;\n t.ycircle = 0x24e8;\n t.ycircumflex = 0x0177;\n t.ydieresis = 0x00ff;\n t.ydotaccent = 0x1e8f;\n t.ydotbelow = 0x1ef5;\n t.yeharabic = 0x064a;\n t.yehbarreearabic = 0x06d2;\n t.yehbarreefinalarabic = 0xfbaf;\n t.yehfinalarabic = 0xfef2;\n t.yehhamzaabovearabic = 0x0626;\n t.yehhamzaabovefinalarabic = 0xfe8a;\n t.yehhamzaaboveinitialarabic = 0xfe8b;\n t.yehhamzaabovemedialarabic = 0xfe8c;\n t.yehinitialarabic = 0xfef3;\n t.yehmedialarabic = 0xfef4;\n t.yehmeeminitialarabic = 0xfcdd;\n t.yehmeemisolatedarabic = 0xfc58;\n t.yehnoonfinalarabic = 0xfc94;\n t.yehthreedotsbelowarabic = 0x06d1;\n t.yekorean = 0x3156;\n t.yen = 0x00a5;\n t.yenmonospace = 0xffe5;\n t.yeokorean = 0x3155;\n t.yeorinhieuhkorean = 0x3186;\n t.yerahbenyomohebrew = 0x05aa;\n t.yerahbenyomolefthebrew = 0x05aa;\n t.yericyrillic = 0x044b;\n t.yerudieresiscyrillic = 0x04f9;\n t.yesieungkorean = 0x3181;\n t.yesieungpansioskorean = 0x3183;\n t.yesieungsioskorean = 0x3182;\n t.yetivhebrew = 0x059a;\n t.ygrave = 0x1ef3;\n t.yhook = 0x01b4;\n t.yhookabove = 0x1ef7;\n t.yiarmenian = 0x0575;\n t.yicyrillic = 0x0457;\n t.yikorean = 0x3162;\n t.yinyang = 0x262f;\n t.yiwnarmenian = 0x0582;\n t.ymonospace = 0xff59;\n t.yod = 0x05d9;\n t.yoddagesh = 0xfb39;\n t.yoddageshhebrew = 0xfb39;\n t.yodhebrew = 0x05d9;\n t.yodyodhebrew = 0x05f2;\n t.yodyodpatahhebrew = 0xfb1f;\n t.yohiragana = 0x3088;\n t.yoikorean = 0x3189;\n t.yokatakana = 0x30e8;\n t.yokatakanahalfwidth = 0xff96;\n t.yokorean = 0x315b;\n t.yosmallhiragana = 0x3087;\n t.yosmallkatakana = 0x30e7;\n t.yosmallkatakanahalfwidth = 0xff6e;\n t.yotgreek = 0x03f3;\n t.yoyaekorean = 0x3188;\n t.yoyakorean = 0x3187;\n t.yoyakthai = 0x0e22;\n t.yoyingthai = 0x0e0d;\n t.yparen = 0x24b4;\n t.ypogegrammeni = 0x037a;\n t.ypogegrammenigreekcmb = 0x0345;\n t.yr = 0x01a6;\n t.yring = 0x1e99;\n t.ysuperior = 0x02b8;\n t.ytilde = 0x1ef9;\n t.yturned = 0x028e;\n t.yuhiragana = 0x3086;\n t.yuikorean = 0x318c;\n t.yukatakana = 0x30e6;\n t.yukatakanahalfwidth = 0xff95;\n t.yukorean = 0x3160;\n t.yusbigcyrillic = 0x046b;\n t.yusbigiotifiedcyrillic = 0x046d;\n t.yuslittlecyrillic = 0x0467;\n t.yuslittleiotifiedcyrillic = 0x0469;\n t.yusmallhiragana = 0x3085;\n t.yusmallkatakana = 0x30e5;\n t.yusmallkatakanahalfwidth = 0xff6d;\n t.yuyekorean = 0x318b;\n t.yuyeokorean = 0x318a;\n t.yyabengali = 0x09df;\n t.yyadeva = 0x095f;\n t.z = 0x007a;\n t.zaarmenian = 0x0566;\n t.zacute = 0x017a;\n t.zadeva = 0x095b;\n t.zagurmukhi = 0x0a5b;\n t.zaharabic = 0x0638;\n t.zahfinalarabic = 0xfec6;\n t.zahinitialarabic = 0xfec7;\n t.zahiragana = 0x3056;\n t.zahmedialarabic = 0xfec8;\n t.zainarabic = 0x0632;\n t.zainfinalarabic = 0xfeb0;\n t.zakatakana = 0x30b6;\n t.zaqefgadolhebrew = 0x0595;\n t.zaqefqatanhebrew = 0x0594;\n t.zarqahebrew = 0x0598;\n t.zayin = 0x05d6;\n t.zayindagesh = 0xfb36;\n t.zayindageshhebrew = 0xfb36;\n t.zayinhebrew = 0x05d6;\n t.zbopomofo = 0x3117;\n t.zcaron = 0x017e;\n t.zcircle = 0x24e9;\n t.zcircumflex = 0x1e91;\n t.zcurl = 0x0291;\n t.zdot = 0x017c;\n t.zdotaccent = 0x017c;\n t.zdotbelow = 0x1e93;\n t.zecyrillic = 0x0437;\n t.zedescendercyrillic = 0x0499;\n t.zedieresiscyrillic = 0x04df;\n t.zehiragana = 0x305c;\n t.zekatakana = 0x30bc;\n t.zero = 0x0030;\n t.zeroarabic = 0x0660;\n t.zerobengali = 0x09e6;\n t.zerodeva = 0x0966;\n t.zerogujarati = 0x0ae6;\n t.zerogurmukhi = 0x0a66;\n t.zerohackarabic = 0x0660;\n t.zeroinferior = 0x2080;\n t.zeromonospace = 0xff10;\n t.zerooldstyle = 0xf730;\n t.zeropersian = 0x06f0;\n t.zerosuperior = 0x2070;\n t.zerothai = 0x0e50;\n t.zerowidthjoiner = 0xfeff;\n t.zerowidthnonjoiner = 0x200c;\n t.zerowidthspace = 0x200b;\n t.zeta = 0x03b6;\n t.zhbopomofo = 0x3113;\n t.zhearmenian = 0x056a;\n t.zhebrevecyrillic = 0x04c2;\n t.zhecyrillic = 0x0436;\n t.zhedescendercyrillic = 0x0497;\n t.zhedieresiscyrillic = 0x04dd;\n t.zihiragana = 0x3058;\n t.zikatakana = 0x30b8;\n t.zinorhebrew = 0x05ae;\n t.zlinebelow = 0x1e95;\n t.zmonospace = 0xff5a;\n t.zohiragana = 0x305e;\n t.zokatakana = 0x30be;\n t.zparen = 0x24b5;\n t.zretroflexhook = 0x0290;\n t.zstroke = 0x01b6;\n t.zuhiragana = 0x305a;\n t.zukatakana = 0x30ba;\n t[\".notdef\"] = 0x0000;\n t.angbracketleftbig = 0x2329;\n t.angbracketleftBig = 0x2329;\n t.angbracketleftbigg = 0x2329;\n t.angbracketleftBigg = 0x2329;\n t.angbracketrightBig = 0x232a;\n t.angbracketrightbig = 0x232a;\n t.angbracketrightBigg = 0x232a;\n t.angbracketrightbigg = 0x232a;\n t.arrowhookleft = 0x21aa;\n t.arrowhookright = 0x21a9;\n t.arrowlefttophalf = 0x21bc;\n t.arrowleftbothalf = 0x21bd;\n t.arrownortheast = 0x2197;\n t.arrownorthwest = 0x2196;\n t.arrowrighttophalf = 0x21c0;\n t.arrowrightbothalf = 0x21c1;\n t.arrowsoutheast = 0x2198;\n t.arrowsouthwest = 0x2199;\n t.backslashbig = 0x2216;\n t.backslashBig = 0x2216;\n t.backslashBigg = 0x2216;\n t.backslashbigg = 0x2216;\n t.bardbl = 0x2016;\n t.bracehtipdownleft = 0xfe37;\n t.bracehtipdownright = 0xfe37;\n t.bracehtipupleft = 0xfe38;\n t.bracehtipupright = 0xfe38;\n t.braceleftBig = 0x007b;\n t.braceleftbig = 0x007b;\n t.braceleftbigg = 0x007b;\n t.braceleftBigg = 0x007b;\n t.bracerightBig = 0x007d;\n t.bracerightbig = 0x007d;\n t.bracerightbigg = 0x007d;\n t.bracerightBigg = 0x007d;\n t.bracketleftbig = 0x005b;\n t.bracketleftBig = 0x005b;\n t.bracketleftbigg = 0x005b;\n t.bracketleftBigg = 0x005b;\n t.bracketrightBig = 0x005d;\n t.bracketrightbig = 0x005d;\n t.bracketrightbigg = 0x005d;\n t.bracketrightBigg = 0x005d;\n t.ceilingleftbig = 0x2308;\n t.ceilingleftBig = 0x2308;\n t.ceilingleftBigg = 0x2308;\n t.ceilingleftbigg = 0x2308;\n t.ceilingrightbig = 0x2309;\n t.ceilingrightBig = 0x2309;\n t.ceilingrightbigg = 0x2309;\n t.ceilingrightBigg = 0x2309;\n t.circledotdisplay = 0x2299;\n t.circledottext = 0x2299;\n t.circlemultiplydisplay = 0x2297;\n t.circlemultiplytext = 0x2297;\n t.circleplusdisplay = 0x2295;\n t.circleplustext = 0x2295;\n t.contintegraldisplay = 0x222e;\n t.contintegraltext = 0x222e;\n t.coproductdisplay = 0x2210;\n t.coproducttext = 0x2210;\n t.floorleftBig = 0x230a;\n t.floorleftbig = 0x230a;\n t.floorleftbigg = 0x230a;\n t.floorleftBigg = 0x230a;\n t.floorrightbig = 0x230b;\n t.floorrightBig = 0x230b;\n t.floorrightBigg = 0x230b;\n t.floorrightbigg = 0x230b;\n t.hatwide = 0x0302;\n t.hatwider = 0x0302;\n t.hatwidest = 0x0302;\n t.intercal = 0x1d40;\n t.integraldisplay = 0x222b;\n t.integraltext = 0x222b;\n t.intersectiondisplay = 0x22c2;\n t.intersectiontext = 0x22c2;\n t.logicalanddisplay = 0x2227;\n t.logicalandtext = 0x2227;\n t.logicalordisplay = 0x2228;\n t.logicalortext = 0x2228;\n t.parenleftBig = 0x0028;\n t.parenleftbig = 0x0028;\n t.parenleftBigg = 0x0028;\n t.parenleftbigg = 0x0028;\n t.parenrightBig = 0x0029;\n t.parenrightbig = 0x0029;\n t.parenrightBigg = 0x0029;\n t.parenrightbigg = 0x0029;\n t.prime = 0x2032;\n t.productdisplay = 0x220f;\n t.producttext = 0x220f;\n t.radicalbig = 0x221a;\n t.radicalBig = 0x221a;\n t.radicalBigg = 0x221a;\n t.radicalbigg = 0x221a;\n t.radicalbt = 0x221a;\n t.radicaltp = 0x221a;\n t.radicalvertex = 0x221a;\n t.slashbig = 0x002f;\n t.slashBig = 0x002f;\n t.slashBigg = 0x002f;\n t.slashbigg = 0x002f;\n t.summationdisplay = 0x2211;\n t.summationtext = 0x2211;\n t.tildewide = 0x02dc;\n t.tildewider = 0x02dc;\n t.tildewidest = 0x02dc;\n t.uniondisplay = 0x22c3;\n t.unionmultidisplay = 0x228e;\n t.unionmultitext = 0x228e;\n t.unionsqdisplay = 0x2294;\n t.unionsqtext = 0x2294;\n t.uniontext = 0x22c3;\n t.vextenddouble = 0x2225;\n t.vextendsingle = 0x2223;\n});\nconst getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\n t.space = 0x0020;\n t.a1 = 0x2701;\n t.a2 = 0x2702;\n t.a202 = 0x2703;\n t.a3 = 0x2704;\n t.a4 = 0x260e;\n t.a5 = 0x2706;\n t.a119 = 0x2707;\n t.a118 = 0x2708;\n t.a117 = 0x2709;\n t.a11 = 0x261b;\n t.a12 = 0x261e;\n t.a13 = 0x270c;\n t.a14 = 0x270d;\n t.a15 = 0x270e;\n t.a16 = 0x270f;\n t.a105 = 0x2710;\n t.a17 = 0x2711;\n t.a18 = 0x2712;\n t.a19 = 0x2713;\n t.a20 = 0x2714;\n t.a21 = 0x2715;\n t.a22 = 0x2716;\n t.a23 = 0x2717;\n t.a24 = 0x2718;\n t.a25 = 0x2719;\n t.a26 = 0x271a;\n t.a27 = 0x271b;\n t.a28 = 0x271c;\n t.a6 = 0x271d;\n t.a7 = 0x271e;\n t.a8 = 0x271f;\n t.a9 = 0x2720;\n t.a10 = 0x2721;\n t.a29 = 0x2722;\n t.a30 = 0x2723;\n t.a31 = 0x2724;\n t.a32 = 0x2725;\n t.a33 = 0x2726;\n t.a34 = 0x2727;\n t.a35 = 0x2605;\n t.a36 = 0x2729;\n t.a37 = 0x272a;\n t.a38 = 0x272b;\n t.a39 = 0x272c;\n t.a40 = 0x272d;\n t.a41 = 0x272e;\n t.a42 = 0x272f;\n t.a43 = 0x2730;\n t.a44 = 0x2731;\n t.a45 = 0x2732;\n t.a46 = 0x2733;\n t.a47 = 0x2734;\n t.a48 = 0x2735;\n t.a49 = 0x2736;\n t.a50 = 0x2737;\n t.a51 = 0x2738;\n t.a52 = 0x2739;\n t.a53 = 0x273a;\n t.a54 = 0x273b;\n t.a55 = 0x273c;\n t.a56 = 0x273d;\n t.a57 = 0x273e;\n t.a58 = 0x273f;\n t.a59 = 0x2740;\n t.a60 = 0x2741;\n t.a61 = 0x2742;\n t.a62 = 0x2743;\n t.a63 = 0x2744;\n t.a64 = 0x2745;\n t.a65 = 0x2746;\n t.a66 = 0x2747;\n t.a67 = 0x2748;\n t.a68 = 0x2749;\n t.a69 = 0x274a;\n t.a70 = 0x274b;\n t.a71 = 0x25cf;\n t.a72 = 0x274d;\n t.a73 = 0x25a0;\n t.a74 = 0x274f;\n t.a203 = 0x2750;\n t.a75 = 0x2751;\n t.a204 = 0x2752;\n t.a76 = 0x25b2;\n t.a77 = 0x25bc;\n t.a78 = 0x25c6;\n t.a79 = 0x2756;\n t.a81 = 0x25d7;\n t.a82 = 0x2758;\n t.a83 = 0x2759;\n t.a84 = 0x275a;\n t.a97 = 0x275b;\n t.a98 = 0x275c;\n t.a99 = 0x275d;\n t.a100 = 0x275e;\n t.a101 = 0x2761;\n t.a102 = 0x2762;\n t.a103 = 0x2763;\n t.a104 = 0x2764;\n t.a106 = 0x2765;\n t.a107 = 0x2766;\n t.a108 = 0x2767;\n t.a112 = 0x2663;\n t.a111 = 0x2666;\n t.a110 = 0x2665;\n t.a109 = 0x2660;\n t.a120 = 0x2460;\n t.a121 = 0x2461;\n t.a122 = 0x2462;\n t.a123 = 0x2463;\n t.a124 = 0x2464;\n t.a125 = 0x2465;\n t.a126 = 0x2466;\n t.a127 = 0x2467;\n t.a128 = 0x2468;\n t.a129 = 0x2469;\n t.a130 = 0x2776;\n t.a131 = 0x2777;\n t.a132 = 0x2778;\n t.a133 = 0x2779;\n t.a134 = 0x277a;\n t.a135 = 0x277b;\n t.a136 = 0x277c;\n t.a137 = 0x277d;\n t.a138 = 0x277e;\n t.a139 = 0x277f;\n t.a140 = 0x2780;\n t.a141 = 0x2781;\n t.a142 = 0x2782;\n t.a143 = 0x2783;\n t.a144 = 0x2784;\n t.a145 = 0x2785;\n t.a146 = 0x2786;\n t.a147 = 0x2787;\n t.a148 = 0x2788;\n t.a149 = 0x2789;\n t.a150 = 0x278a;\n t.a151 = 0x278b;\n t.a152 = 0x278c;\n t.a153 = 0x278d;\n t.a154 = 0x278e;\n t.a155 = 0x278f;\n t.a156 = 0x2790;\n t.a157 = 0x2791;\n t.a158 = 0x2792;\n t.a159 = 0x2793;\n t.a160 = 0x2794;\n t.a161 = 0x2192;\n t.a163 = 0x2194;\n t.a164 = 0x2195;\n t.a196 = 0x2798;\n t.a165 = 0x2799;\n t.a192 = 0x279a;\n t.a166 = 0x279b;\n t.a167 = 0x279c;\n t.a168 = 0x279d;\n t.a169 = 0x279e;\n t.a170 = 0x279f;\n t.a171 = 0x27a0;\n t.a172 = 0x27a1;\n t.a173 = 0x27a2;\n t.a162 = 0x27a3;\n t.a174 = 0x27a4;\n t.a175 = 0x27a5;\n t.a176 = 0x27a6;\n t.a177 = 0x27a7;\n t.a178 = 0x27a8;\n t.a179 = 0x27a9;\n t.a193 = 0x27aa;\n t.a180 = 0x27ab;\n t.a199 = 0x27ac;\n t.a181 = 0x27ad;\n t.a200 = 0x27ae;\n t.a182 = 0x27af;\n t.a201 = 0x27b1;\n t.a183 = 0x27b2;\n t.a184 = 0x27b3;\n t.a197 = 0x27b4;\n t.a185 = 0x27b5;\n t.a194 = 0x27b6;\n t.a198 = 0x27b7;\n t.a186 = 0x27b8;\n t.a195 = 0x27b9;\n t.a187 = 0x27ba;\n t.a188 = 0x27bb;\n t.a189 = 0x27bc;\n t.a190 = 0x27bd;\n t.a191 = 0x27be;\n t.a89 = 0x2768;\n t.a90 = 0x2769;\n t.a93 = 0x276a;\n t.a94 = 0x276b;\n t.a91 = 0x276c;\n t.a92 = 0x276d;\n t.a205 = 0x276e;\n t.a85 = 0x276f;\n t.a206 = 0x2770;\n t.a86 = 0x2771;\n t.a87 = 0x2772;\n t.a88 = 0x2773;\n t.a95 = 0x2774;\n t.a96 = 0x2775;\n t[\".notdef\"] = 0x0000;\n});\n\n;// ./src/core/unicode.js\n\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00a9;\n t[63193] = 0x00a9;\n t[63720] = 0x00ae;\n t[63194] = 0x00ae;\n t[63722] = 0x2122;\n t[63195] = 0x2122;\n t[63729] = 0x23a7;\n t[63730] = 0x23a8;\n t[63731] = 0x23a9;\n t[63740] = 0x23ab;\n t[63741] = 0x23ac;\n t[63742] = 0x23ad;\n t[63726] = 0x23a1;\n t[63727] = 0x23a2;\n t[63728] = 0x23a3;\n t[63737] = 0x23a4;\n t[63738] = 0x23a5;\n t[63739] = 0x23a6;\n t[63723] = 0x239b;\n t[63724] = 0x239c;\n t[63725] = 0x239d;\n t[63734] = 0x239e;\n t[63735] = 0x239f;\n t[63736] = 0x23a0;\n});\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xfff0 && code <= 0xffff) {\n return 0;\n } else if (code >= 0xf600 && code <= 0xf8ff) {\n return getSpecialPUASymbols()[code] || code;\n } else if (code === 0x00ad) {\n return 0x002d;\n }\n return code;\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 if (name[0] === \"u\") {\n const nameLen = name.length;\n let hexStr;\n if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n hexStr = name.substring(3);\n } else if (nameLen >= 5 && nameLen <= 7) {\n hexStr = name.substring(1);\n } else {\n return -1;\n }\n if (hexStr === hexStr.toUpperCase()) {\n unicode = parseInt(hexStr, 16);\n if (unicode >= 0) {\n return unicode;\n }\n }\n }\n return -1;\n}\nconst UnicodeRanges = [[0x0000, 0x007f], [0x0080, 0x00ff], [0x0100, 0x017f], [0x0180, 0x024f], [0x0250, 0x02af, 0x1d00, 0x1d7f, 0x1d80, 0x1dbf], [0x02b0, 0x02ff, 0xa700, 0xa71f], [0x0300, 0x036f, 0x1dc0, 0x1dff], [0x0370, 0x03ff], [0x2c80, 0x2cff], [0x0400, 0x04ff, 0x0500, 0x052f, 0x2de0, 0x2dff, 0xa640, 0xa69f], [0x0530, 0x058f], [0x0590, 0x05ff], [0xa500, 0xa63f], [0x0600, 0x06ff, 0x0750, 0x077f], [0x07c0, 0x07ff], [0x0900, 0x097f], [0x0980, 0x09ff], [0x0a00, 0x0a7f], [0x0a80, 0x0aff], [0x0b00, 0x0b7f], [0x0b80, 0x0bff], [0x0c00, 0x0c7f], [0x0c80, 0x0cff], [0x0d00, 0x0d7f], [0x0e00, 0x0e7f], [0x0e80, 0x0eff], [0x10a0, 0x10ff, 0x2d00, 0x2d2f], [0x1b00, 0x1b7f], [0x1100, 0x11ff], [0x1e00, 0x1eff, 0x2c60, 0x2c7f, 0xa720, 0xa7ff], [0x1f00, 0x1fff], [0x2000, 0x206f, 0x2e00, 0x2e7f], [0x2070, 0x209f], [0x20a0, 0x20cf], [0x20d0, 0x20ff], [0x2100, 0x214f], [0x2150, 0x218f], [0x2190, 0x21ff, 0x27f0, 0x27ff, 0x2900, 0x297f, 0x2b00, 0x2bff], [0x2200, 0x22ff, 0x2a00, 0x2aff, 0x27c0, 0x27ef, 0x2980, 0x29ff], [0x2300, 0x23ff], [0x2400, 0x243f], [0x2440, 0x245f], [0x2460, 0x24ff], [0x2500, 0x257f], [0x2580, 0x259f], [0x25a0, 0x25ff], [0x2600, 0x26ff], [0x2700, 0x27bf], [0x3000, 0x303f], [0x3040, 0x309f], [0x30a0, 0x30ff, 0x31f0, 0x31ff], [0x3100, 0x312f, 0x31a0, 0x31bf], [0x3130, 0x318f], [0xa840, 0xa87f], [0x3200, 0x32ff], [0x3300, 0x33ff], [0xac00, 0xd7af], [0xd800, 0xdfff], [0x10900, 0x1091f], [0x4e00, 0x9fff, 0x2e80, 0x2eff, 0x2f00, 0x2fdf, 0x2ff0, 0x2fff, 0x3400, 0x4dbf, 0x20000, 0x2a6df, 0x3190, 0x319f], [0xe000, 0xf8ff], [0x31c0, 0x31ef, 0xf900, 0xfaff, 0x2f800, 0x2fa1f], [0xfb00, 0xfb4f], [0xfb50, 0xfdff], [0xfe20, 0xfe2f], [0xfe10, 0xfe1f], [0xfe50, 0xfe6f], [0xfe70, 0xfeff], [0xff00, 0xffef], [0xfff0, 0xffff], [0x0f00, 0x0fff], [0x0700, 0x074f], [0x0780, 0x07bf], [0x0d80, 0x0dff], [0x1000, 0x109f], [0x1200, 0x137f, 0x1380, 0x139f, 0x2d80, 0x2ddf], [0x13a0, 0x13ff], [0x1400, 0x167f], [0x1680, 0x169f], [0x16a0, 0x16ff], [0x1780, 0x17ff], [0x1800, 0x18af], [0x2800, 0x28ff], [0xa000, 0xa48f], [0x1700, 0x171f, 0x1720, 0x173f, 0x1740, 0x175f, 0x1760, 0x177f], [0x10300, 0x1032f], [0x10330, 0x1034f], [0x10400, 0x1044f], [0x1d000, 0x1d0ff, 0x1d100, 0x1d1ff, 0x1d200, 0x1d24f], [0x1d400, 0x1d7ff], [0xff000, 0xffffd], [0xfe00, 0xfe0f, 0xe0100, 0xe01ef], [0xe0000, 0xe007f], [0x1900, 0x194f], [0x1950, 0x197f], [0x1980, 0x19df], [0x1a00, 0x1a1f], [0x2c00, 0x2c5f], [0x2d30, 0x2d7f], [0x4dc0, 0x4dff], [0xa800, 0xa82f], [0x10000, 0x1007f, 0x10080, 0x100ff, 0x10100, 0x1013f], [0x10140, 0x1018f], [0x10380, 0x1039f], [0x103a0, 0x103df], [0x10450, 0x1047f], [0x10480, 0x104af], [0x10800, 0x1083f], [0x10a00, 0x10a5f], [0x1d300, 0x1d35f], [0x12000, 0x123ff, 0x12400, 0x1247f], [0x1d360, 0x1d37f], [0x1b80, 0x1bbf], [0x1c00, 0x1c4f], [0x1c50, 0x1c7f], [0xa880, 0xa8df], [0xa900, 0xa92f], [0xa930, 0xa95f], [0xaa00, 0xaa5f], [0x10190, 0x101cf], [0x101d0, 0x101ff], [0x102a0, 0x102df, 0x10280, 0x1029f, 0x10920, 0x1093f], [0x1f030, 0x1f09f, 0x1f000, 0x1f02f]];\nfunction getUnicodeRangeFor(value, lastPosition = -1) {\n if (lastPosition !== -1) {\n const range = UnicodeRanges[lastPosition];\n for (let i = 0, ii = range.length; i < ii; i += 2) {\n if (value >= range[i] && value <= range[i + 1]) {\n return lastPosition;\n }\n }\n }\n for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n const range = UnicodeRanges[i];\n for (let j = 0, jj = range.length; j < jj; j += 2) {\n if (value >= range[j] && value <= range[j + 1]) {\n return i;\n }\n }\n }\n return -1;\n}\nconst SpecialCharRegExp = new RegExp(\"^(\\\\s)|(\\\\p{Mn})|(\\\\p{Cf})$\", \"u\");\nconst CategoryCache = new Map();\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?.[1],\n isZeroWidthDiacritic: !!groups?.[2],\n isInvisibleFormatMark: !!groups?.[3]\n };\n CategoryCache.set(char, category);\n return category;\n}\nfunction clearUnicodeCaches() {\n CategoryCache.clear();\n}\n\n;// ./src/core/fonts_utils.js\n\n\n\n\n\nconst SEAC_ANALYSIS_ENABLED = true;\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};\nconst MacStandardGlyphOrdering = [\".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\", \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\", \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\", \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\", \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\", \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n if (glyphsUnicodeMap[name] !== undefined) {\n return name;\n }\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}\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n const charCodeToGlyphId = Object.create(null);\n let glyphId, charCode, baseEncoding;\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n if (properties.isInternalFont) {\n baseEncoding = builtInEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n }\n } else if (properties.baseEncodingName) {\n baseEncoding = getEncoding(properties.baseEncodingName);\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n }\n } else if (isSymbolicFont) {\n for (charCode in builtInEncoding) {\n charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n }\n } else {\n baseEncoding = StandardEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n }\n }\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 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 charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n }\n }\n return charCodeToGlyphId;\n}\nfunction normalizeFontName(name) {\n return name.replaceAll(/[,_]/g, \"-\").replaceAll(/\\s/g, \"\");\n}\nconst getVerticalPresentationForm = getLookupTableFactory(t => {\n t[0x2013] = 0xfe32;\n t[0x2014] = 0xfe31;\n t[0x2025] = 0xfe30;\n t[0x2026] = 0xfe19;\n t[0x3001] = 0xfe11;\n t[0x3002] = 0xfe12;\n t[0x3008] = 0xfe3f;\n t[0x3009] = 0xfe40;\n t[0x300a] = 0xfe3d;\n t[0x300b] = 0xfe3e;\n t[0x300c] = 0xfe41;\n t[0x300d] = 0xfe42;\n t[0x300e] = 0xfe43;\n t[0x300f] = 0xfe44;\n t[0x3010] = 0xfe3b;\n t[0x3011] = 0xfe3c;\n t[0x3014] = 0xfe39;\n t[0x3015] = 0xfe3a;\n t[0x3016] = 0xfe17;\n t[0x3017] = 0xfe18;\n t[0xfe4f] = 0xfe34;\n t[0xff01] = 0xfe15;\n t[0xff08] = 0xfe35;\n t[0xff09] = 0xfe36;\n t[0xff0c] = 0xfe10;\n t[0xff1a] = 0xfe13;\n t[0xff1b] = 0xfe14;\n t[0xff1f] = 0xfe16;\n t[0xff3b] = 0xfe47;\n t[0xff3d] = 0xfe48;\n t[0xff3f] = 0xfe33;\n t[0xff5b] = 0xfe37;\n t[0xff5d] = 0xfe38;\n});\n\n;// ./src/core/standard_fonts.js\n\n\nconst getStdFontMap = getLookupTableFactory(function (t) {\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 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.ArialMT = \"Helvetica\";\n t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n t[\"Arial-BoldItalicMT-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT-Italic\"] = \"Helvetica-Oblique\";\n t.ArialUnicodeMS = \"Helvetica\";\n t[\"ArialUnicodeMS-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialUnicodeMS-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialUnicodeMS-Italic\"] = \"Helvetica-Oblique\";\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[\"HelveticaLTStd-Bold\"] = \"Helvetica-Bold\";\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});\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 = \"LiberationSans-Regular.ttf\";\n t[\"Helvetica-Bold\"] = \"LiberationSans-Bold.ttf\";\n t[\"Helvetica-BoldOblique\"] = \"LiberationSans-BoldItalic.ttf\";\n t[\"Helvetica-Oblique\"] = \"LiberationSans-Italic.ttf\";\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});\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.GillSansMT = \"Helvetica\";\n t[\"GillSansMT-Bold\"] = \"Helvetica-Bold\";\n t[\"GillSansMT-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"GillSansMT-Italic\"] = \"Helvetica-Oblique\";\n t.Impact = \"Helvetica\";\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});\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});\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n t.Dingbats = true;\n t.Symbol = true;\n t.ZapfDingbats = true;\n t.Wingdings = true;\n t[\"Wingdings-Bold\"] = true;\n t[\"Wingdings-Regular\"] = true;\n});\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[179] = 8220;\n t[180] = 8221;\n t[181] = 8216;\n t[182] = 8217;\n t[200] = 193;\n t[203] = 205;\n t[207] = 211;\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[672] = 1488;\n t[673] = 1489;\n t[674] = 1490;\n t[675] = 1491;\n t[676] = 1492;\n t[677] = 1493;\n t[678] = 1494;\n t[679] = 1495;\n t[680] = 1496;\n t[681] = 1497;\n t[682] = 1498;\n t[683] = 1499;\n t[684] = 1500;\n t[685] = 1501;\n t[686] = 1502;\n t[687] = 1503;\n t[688] = 1504;\n t[689] = 1505;\n t[690] = 1506;\n t[691] = 1507;\n t[692] = 1508;\n t[693] = 1509;\n t[694] = 1510;\n t[695] = 1511;\n t[696] = 1512;\n t[697] = 1513;\n t[698] = 1514;\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});\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (t) {\n t[227] = 322;\n t[264] = 261;\n t[291] = 346;\n});\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n t[1] = 32;\n t[4] = 65;\n t[5] = 192;\n t[6] = 193;\n t[9] = 196;\n t[17] = 66;\n t[18] = 67;\n t[21] = 268;\n t[24] = 68;\n t[28] = 69;\n t[29] = 200;\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[48] = 204;\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[76] = 210;\n t[80] = 214;\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[109] = 220;\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[259] = 224;\n t[260] = 225;\n t[263] = 228;\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[287] = 232;\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[350] = 236;\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[382] = 242;\n t[383] = 243;\n t[386] = 246;\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[442] = 252;\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});\nfunction getStandardFontName(name) {\n const fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap();\n return stdFontMap[fontName];\n}\nfunction isKnownFontName(name) {\n const fontName = normalizeFontName(name);\n return !!(getStdFontMap()[fontName] || getNonStdFontMap()[fontName] || getSerifFonts()[fontName] || getSymbolsFonts()[fontName]);\n}\n\n;// ./src/core/to_unicode_map.js\n\nclass ToUnicodeMap {\n constructor(cmap = []) {\n this._map = cmap;\n }\n get length() {\n return this._map.length;\n }\n forEach(callback) {\n for (const charCode in this._map) {\n callback(charCode, this._map[charCode].codePointAt(0));\n }\n }\n has(i) {\n return this._map[i] !== undefined;\n }\n get(i) {\n return this._map[i];\n }\n charCodeOf(value) {\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 amend(map) {\n for (const charCode in map) {\n this._map[charCode] = map[charCode];\n }\n }\n}\nclass IdentityToUnicodeMap {\n constructor(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n get length() {\n return this.lastChar + 1 - this.firstChar;\n }\n forEach(callback) {\n for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n callback(i, i);\n }\n }\n has(i) {\n return this.firstChar <= i && i <= this.lastChar;\n }\n get(i) {\n if (this.firstChar <= i && i <= this.lastChar) {\n return String.fromCharCode(i);\n }\n return undefined;\n }\n charCodeOf(v) {\n return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1;\n }\n amend(map) {\n unreachable(\"Should not call amend()\");\n }\n}\n\n;// ./src/core/cff_font.js\n\n\n\nclass CFFFont {\n constructor(file, properties) {\n this.properties = properties;\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 {\n warn(\"Failed to compile font \" + properties.loadedName);\n this.data = file;\n }\n this._createBuiltInEncoding();\n }\n get numGlyphs() {\n return this.cff.charStrings.count;\n }\n getCharset() {\n return this.cff.charset.charset;\n }\n getGlyphMapping() {\n const cff = this.cff;\n const properties = this.properties;\n const {\n cidToGidMap,\n cMap\n } = properties;\n const charsets = cff.charset.charset;\n let charCodeToGlyphId;\n let glyphId;\n if (properties.composite) {\n let invCidToGidMap;\n if (cidToGidMap?.length > 0) {\n invCidToGidMap = Object.create(null);\n for (let i = 0, ii = cidToGidMap.length; i < ii; i++) {\n const gid = cidToGidMap[i];\n if (gid !== undefined) {\n invCidToGidMap[gid] = i;\n }\n }\n }\n charCodeToGlyphId = Object.create(null);\n let charCode;\n if (cff.isCIDFont) {\n for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n const cid = charsets[glyphId];\n charCode = cMap.charCodeOf(cid);\n if (invCidToGidMap?.[charCode] !== undefined) {\n charCode = invCidToGidMap[charCode];\n }\n charCodeToGlyphId[charCode] = glyphId;\n }\n } else {\n for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n charCode = cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId;\n }\n }\n return charCodeToGlyphId;\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 hasGlyphId(id) {\n return this.cff.hasGlyphId(id);\n }\n _createBuiltInEncoding() {\n const {\n charset,\n encoding\n } = this.cff;\n if (!charset || !encoding) {\n return;\n }\n const charsets = charset.charset,\n encodings = encoding.encoding;\n const map = [];\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\n;// ./src/core/font_renderer.js\n\n\n\n\n\n\nfunction getUint32(data, offset) {\n return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;\n}\nfunction getUint16(data, offset) {\n return data[offset] << 8 | data[offset + 1];\n}\nfunction getInt16(data, offset) {\n return (data[offset] << 24 | data[offset + 1] << 16) >> 16;\n}\nfunction getInt8(data, offset) {\n return data[offset] << 24 >> 24;\n}\nfunction getFloat214(data, offset) {\n return getInt16(data, offset) / 16384;\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}\nfunction parseCmap(data, start, end) {\n const offset = getUint16(data, start + 2) === 1 ? getUint32(data, start + 8) : 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);\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] = {\n end: getUint16(data, p)\n };\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}\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n const properties = {};\n const parser = new CFFParser(new Stream(data, start, end - start), properties, seacAnalysisEnabled);\n const cff = parser.parse();\n return {\n glyphs: cff.charStrings.objects,\n subrs: cff.topDict.privateDict?.subrsIndex?.objects,\n gsubrs: cff.globalSubrIndex?.objects,\n isCFFCIDFont: cff.isCIDFont,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray\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}\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 = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xffff;\n }\n return {\n charCode: code,\n glyphId: gid\n };\n}\nfunction compileGlyf(code, cmds, font) {\n function moveTo(x, y) {\n cmds.add(\"M\", [x, y]);\n }\n function lineTo(x, y) {\n cmds.add(\"L\", [x, y]);\n }\n function quadraticCurveTo(xa, ya, x, y) {\n cmds.add(\"Q\", [xa, ya, x, y]);\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 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 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 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 cmds.save();\n cmds.transform([scaleX, scale01, scale10, scaleY, x, y]);\n if (!(flags & 0x02)) {}\n compileGlyf(subglyph, cmds, font);\n cmds.restore();\n }\n } while (flags & 0x20);\n } else {\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;\n const numberOfPoints = endPtsOfContours.at(-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({\n flags\n });\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 let startPoint = 0;\n for (i = 0; i < numberOfContours; i++) {\n const endPoint = endPtsOfContours[i];\n const contour = points.slice(startPoint, endPoint + 1);\n if (contour[0].flags & 1) {\n contour.push(contour[0]);\n } else if (contour.at(-1).flags & 1) {\n contour.unshift(contour.at(-1));\n } else {\n const p = {\n flags: 1,\n x: (contour[0].x + contour.at(-1).x) / 2,\n y: (contour[0].y + contour.at(-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(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y);\n j++;\n } else {\n quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2);\n }\n }\n startPoint = endPoint + 1;\n }\n }\n}\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n function moveTo(x, y) {\n cmds.add(\"M\", [x, y]);\n }\n function lineTo(x, y) {\n cmds.add(\"L\", [x, y]);\n }\n function bezierCurveTo(x1, y1, x2, y2, x, y) {\n cmds.add(\"C\", [x1, y1, x2, y2, x, y]);\n }\n const stack = [];\n let x = 0,\n y = 0;\n let stems = 0;\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:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 3:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 4:\n y += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 5:\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 6:\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:\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:\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:\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?.subrsIndex) {\n subrs = fontDict.privateDict.subrsIndex.objects;\n }\n if (subrs) {\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:\n return;\n case 12:\n v = code[i++];\n switch (v) {\n case 34:\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:\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();\n break;\n case 36:\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:\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:\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.save();\n cmds.translate(x, y);\n let cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]]));\n compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n cmds.restore();\n cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]]));\n compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n }\n return;\n case 18:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 19:\n stems += stack.length >> 1;\n i += stems + 7 >> 3;\n stackClean = true;\n break;\n case 20:\n stems += stack.length >> 1;\n i += stems + 7 >> 3;\n stackClean = true;\n break;\n case 21:\n y += stack.pop();\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 22:\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 23:\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 24:\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:\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:\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:\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:\n n = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[n];\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 30:\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 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:\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 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((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536);\n i += 4;\n }\n break;\n }\n if (stackClean) {\n stack.length = 0;\n }\n }\n }\n parse(charStringCode);\n}\nconst NOOP = \"\";\nclass Commands {\n cmds = [];\n transformStack = [];\n currentTransform = [1, 0, 0, 1, 0, 0];\n add(cmd, args) {\n if (args) {\n const [a, b, c, d, e, f] = this.currentTransform;\n for (let i = 0, ii = args.length; i < ii; i += 2) {\n const x = args[i];\n const y = args[i + 1];\n args[i] = a * x + c * y + e;\n args[i + 1] = b * x + d * y + f;\n }\n this.cmds.push(`${cmd}${args.join(\" \")}`);\n } else {\n this.cmds.push(cmd);\n }\n }\n transform(transf) {\n this.currentTransform = Util.transform(this.currentTransform, transf);\n }\n translate(x, y) {\n this.transform([1, 0, 0, 1, x, y]);\n }\n save() {\n this.transformStack.push(this.currentTransform.slice());\n }\n restore() {\n this.currentTransform = this.transformStack.pop() || [1, 0, 0, 1, 0, 0];\n }\n getSVG() {\n return this.cmds.join(\"\");\n }\n}\nclass CompiledFont {\n constructor(fontMatrix) {\n this.fontMatrix = fontMatrix;\n this.compiledGlyphs = Object.create(null);\n this.compiledCharCodeToGlyphId = Object.create(null);\n }\n getPathJs(unicode) {\n const {\n charCode,\n glyphId\n } = lookupCmap(this.cmap, unicode);\n let fn = this.compiledGlyphs[glyphId],\n compileEx;\n if (fn === undefined) {\n try {\n fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n } catch (ex) {\n fn = NOOP;\n compileEx = ex;\n }\n this.compiledGlyphs[glyphId] = fn;\n }\n this.compiledCharCodeToGlyphId[charCode] ??= glyphId;\n if (compileEx) {\n throw compileEx;\n }\n return fn;\n }\n compileGlyph(code, glyphId) {\n if (!code?.length || code[0] === 14) {\n return NOOP;\n }\n let fontMatrix = this.fontMatrix;\n if (this.isCFFCIDFont) {\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 assert(isNumberArray(fontMatrix, 6), \"Expected a valid fontMatrix.\");\n const cmds = new Commands();\n cmds.transform(fontMatrix.slice());\n this.compileGlyphImpl(code, cmds, glyphId);\n cmds.add(\"Z\");\n return cmds.getSVG();\n }\n compileGlyphImpl() {\n unreachable(\"Children classes should implement this.\");\n }\n hasBuiltPath(unicode) {\n const {\n charCode,\n glyphId\n } = lookupCmap(this.cmap, unicode);\n return this.compiledGlyphs[glyphId] !== undefined && this.compiledCharCodeToGlyphId[charCode] !== undefined;\n }\n}\nclass TrueTypeCompiled extends CompiledFont {\n constructor(glyphs, cmap, fontMatrix) {\n super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n this.glyphs = glyphs;\n this.cmap = cmap;\n }\n compileGlyphImpl(code, cmds) {\n compileGlyf(code, cmds, this);\n }\n}\nclass Type2Compiled extends CompiledFont {\n constructor(cffInfo, cmap, fontMatrix) {\n super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n this.glyphs = cffInfo.glyphs;\n this.gsubrs = cffInfo.gsubrs || [];\n this.subrs = cffInfo.subrs || [];\n this.cmap = cmap;\n this.glyphNameMap = getGlyphsUnicode();\n this.gsubrsBias = getSubroutineBias(this.gsubrs);\n this.subrsBias = getSubroutineBias(this.subrs);\n this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n this.fdSelect = cffInfo.fdSelect;\n this.fdArray = cffInfo.fdArray;\n }\n compileGlyphImpl(code, cmds, glyphId) {\n compileCharString(code, cmds, this, glyphId);\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 if (glyf) {\n const fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);\n }\n return new Type2Compiled(cff, cmap, font.fontMatrix);\n }\n}\n\n;// ./src/core/metrics.js\n\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 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 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 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 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 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 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 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 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 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 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});\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\n;// ./src/core/glyf.js\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;\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\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;\nclass GlyfTable {\n constructor({\n glyfTable,\n isGlyphLocationsLong,\n locaTable,\n numGlyphs\n }) {\n this.glyphs = [];\n const loca = new DataView(locaTable.buffer, locaTable.byteOffset, locaTable.byteLength);\n const glyf = new DataView(glyfTable.buffer, glyfTable.byteOffset, glyfTable.byteLength);\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 ? loca.getUint32(pos) : 2 * loca.getUint16(pos);\n if (next === prev) {\n this.glyphs.push(new Glyph({}));\n continue;\n }\n const glyph = Glyph.parse(prev, glyf);\n this.glyphs.push(glyph);\n prev = next;\n }\n }\n getSize() {\n return this.glyphs.reduce((a, g) => {\n const size = g.getSize();\n return a + (size + 3 & ~3);\n }, 0);\n }\n write() {\n const totalSize = this.getSize();\n const glyfTable = new DataView(new ArrayBuffer(totalSize));\n const isLocationLong = totalSize > 0x1fffe;\n const offsetSize = isLocationLong ? 4 : 2;\n const locaTable = new DataView(new ArrayBuffer((this.glyphs.length + 1) * offsetSize));\n if (isLocationLong) {\n locaTable.setUint32(0, 0);\n } else {\n locaTable.setUint16(0, 0);\n }\n let pos = 0;\n let locaIndex = 0;\n for (const glyph of this.glyphs) {\n pos += glyph.write(pos, glyfTable);\n pos = pos + 3 & ~3;\n locaIndex += offsetSize;\n if (isLocationLong) {\n locaTable.setUint32(locaIndex, pos);\n } else {\n locaTable.setUint16(locaIndex, pos >> 1);\n }\n }\n return {\n isLocationLong,\n loca: new Uint8Array(locaTable.buffer),\n glyf: new Uint8Array(glyfTable.buffer)\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}\nclass Glyph {\n constructor({\n header = null,\n simple = null,\n composites = null\n }) {\n this.header = header;\n this.simple = simple;\n this.composites = composites;\n }\n static parse(pos, glyf) {\n const [read, header] = GlyphHeader.parse(pos, glyf);\n pos += read;\n if (header.numberOfContours < 0) {\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 return new Glyph({\n header,\n composites\n });\n }\n const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n return new Glyph({\n header,\n simple\n });\n }\n getSize() {\n if (!this.header) {\n return 0;\n }\n const size = this.simple ? this.simple.getSize() : this.composites.reduce((a, c) => a + c.getSize(), 0);\n return this.header.getSize() + size;\n }\n write(pos, buf) {\n if (!this.header) {\n return 0;\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 return pos - spos;\n }\n scale(factor) {\n if (!this.header) {\n return;\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}\nclass GlyphHeader {\n constructor({\n numberOfContours,\n xMin,\n yMin,\n xMax,\n yMax\n }) {\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n static parse(pos, glyf) {\n return [10, 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 getSize() {\n return 10;\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 return 10;\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}\nclass Contour {\n constructor({\n flags,\n xCoordinates,\n yCoordinates\n }) {\n this.xCoordinates = xCoordinates;\n this.yCoordinates = yCoordinates;\n this.flags = flags;\n }\n}\nclass SimpleGlyph {\n constructor({\n contours,\n instructions\n }) {\n this.contours = contours;\n this.instructions = instructions;\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(pos, pos + instructionLength);\n pos += instructionLength;\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 const allXCoordinates = [];\n let xCoordinates = [];\n let yCoordinates = [];\n let pointFlags = [];\n const contours = [];\n let endPtsOfContoursIndex = 0;\n let lastCoordinate = 0;\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\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 xCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n xCoordinates.push(lastCoordinate);\n }\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n endPtsOfContoursIndex++;\n allXCoordinates.push(xCoordinates);\n xCoordinates = [];\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 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 yCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n yCoordinates.push(lastCoordinate);\n }\n pointFlags.push(flag & ON_CURVE_POINT | flag & OVERLAP_SIMPLE);\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n endPtsOfContoursIndex++;\n contours.push(new Contour({\n flags: pointFlags,\n xCoordinates,\n yCoordinates\n }));\n yCoordinates = [];\n pointFlags = [];\n }\n }\n return new SimpleGlyph({\n contours,\n instructions\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 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 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 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 |= delta >= 0 ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR : X_SHORT_VECTOR;\n xCoordinates.push(abs);\n } else {\n xCoordinates.push(delta);\n }\n }\n lastX = x;\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 |= delta >= 0 ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR : Y_SHORT_VECTOR;\n yCoordinates.push(abs);\n } else {\n yCoordinates.push(delta);\n }\n }\n lastY = y;\n flags.push(flag);\n }\n buf.setUint16(pos, xCoordinates.length - 1);\n pos += 2;\n }\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos);\n pos += this.instructions.length;\n }\n for (const flag of flags) {\n buf.setUint8(pos++, flag);\n }\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 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 return pos - spos;\n }\n scale(x, factor) {\n for (const contour of this.contours) {\n if (contour.xCoordinates.length === 0) {\n continue;\n }\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n contour.xCoordinates[i] = Math.round(x + (contour.xCoordinates[i] - x) * factor);\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 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 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 if (flags & WE_HAVE_A_SCALE) {\n transf.push(glyf.getUint16(pos));\n pos += 2;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n pos += 4;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2), glyf.getUint16(pos + 4), glyf.getUint16(pos + 6));\n pos += 8;\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 return [pos - spos, new CompositeGlyph({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions\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 size += 2;\n if (this.flags & 2) {\n if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) {\n size += 2;\n }\n } else if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) {\n size += 2;\n }\n return size;\n }\n write(pos, buf) {\n const spos = pos;\n if (this.flags & ARGS_ARE_XY_VALUES) {\n if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n } else if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n buf.setUint16(pos, this.flags);\n buf.setUint16(pos + 2, this.glyphIndex);\n pos += 4;\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 if (this.flags & WE_HAVE_INSTRUCTIONS) {\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos);\n pos += this.instructions.length;\n }\n }\n return pos - spos;\n }\n scale(x, factor) {}\n}\n\n;// ./src/core/opentype_file_builder.js\n\n\nfunction writeInt16(dest, offset, num) {\n dest[offset] = num >> 8 & 0xff;\n dest[offset + 1] = num & 0xff;\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}\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 for (const num of data) {\n dest[offset++] = num & 0xff;\n }\n }\n}\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\nclass OpenTypeFileBuilder {\n constructor(sfnt) {\n this.sfnt = sfnt;\n this.tables = Object.create(null);\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 toArray() {\n let sfnt = this.sfnt;\n const tables = this.tables;\n const tablesNames = Object.keys(tables);\n tablesNames.sort();\n const numTables = tablesNames.length;\n let i, j, jj, table, tableName;\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 const file = new Uint8Array(offset);\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n writeData(file, tableOffsets[i], table);\n }\n if (sfnt === \"true\") {\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 writeInt16(file, 4, numTables);\n const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n writeInt16(file, 6, searchParams.range);\n writeInt16(file, 8, searchParams.entry);\n writeInt16(file, 10, searchParams.rangeShift);\n offset = OTF_HEADER_SIZE;\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 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 writeInt32(file, offset + 8, tableOffsets[i]);\n writeInt32(file, offset + 12, tables[tableName].length);\n offset += OTF_TABLE_ENTRY_SIZE;\n }\n return file;\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\n;// ./src/core/type1_parser.js\n\n\n\n\nconst HINTING_ENABLED = false;\nconst 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};\nclass Type1CharString {\n constructor() {\n this.width = 0;\n this.lsb = 0;\n this.flexing = false;\n this.output = [];\n this.stack = [];\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:\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case 3:\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case 4:\n if (this.flexing) {\n if (this.stack.length < 1) {\n error = true;\n break;\n }\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:\n error = this.executeCommand(2, COMMAND_MAP.rlineto);\n break;\n case 6:\n error = this.executeCommand(1, COMMAND_MAP.hlineto);\n break;\n case 7:\n error = this.executeCommand(1, COMMAND_MAP.vlineto);\n break;\n case 8:\n error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n break;\n case 9:\n this.stack = [];\n break;\n case 10:\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(subrs[subrNumber], subrs, seacAnalysisEnabled);\n break;\n case 11:\n return error;\n case 13:\n if (this.stack.length < 2) {\n error = true;\n break;\n }\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:\n this.output.push(COMMAND_MAP.endchar[0]);\n break;\n case 21:\n if (this.flexing) {\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n break;\n case 22:\n if (this.flexing) {\n this.stack.push(0);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n break;\n case 30:\n error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n break;\n case 31:\n error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n break;\n case (12 << 8) + 0:\n this.stack = [];\n break;\n case (12 << 8) + 1:\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case (12 << 8) + 2:\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case (12 << 8) + 6:\n if (seacAnalysisEnabled) {\n const asb = this.stack.at(-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:\n if (this.stack.length < 4) {\n error = true;\n break;\n }\n this.stack.pop();\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:\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:\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(-17, 17);\n this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]);\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:\n break;\n case (12 << 8) + 33:\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 = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;\n }\n this.stack.push(value);\n }\n return error;\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 value = 65536 * value | 0;\n this.output.push(255, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n }\n }\n this.output.push(...command);\n if (keepStack) {\n this.stack.splice(start, howManyArgs);\n } else {\n this.stack.length = 0;\n }\n return false;\n }\n}\nconst EEXEC_ENCRYPT_KEY = 55665;\nconst CHAR_STRS_ENCRYPT_KEY = 4330;\nfunction isHexDigit(code) {\n return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102;\n}\nfunction 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}\nfunction 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}\nfunction isSpecial(c) {\n return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29;\n}\nclass Type1Parser {\n constructor(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n const data = stream.getBytes();\n const isBinary = !((isHexDigit(data[0]) || isWhiteSpace(data[0])) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7]));\n stream = new Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));\n }\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n this.stream = stream;\n this.nextChar();\n }\n readNumberArray() {\n this.getToken();\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 readNumber() {\n const token = this.getToken();\n return parseFloat(token || 0);\n }\n readInt() {\n const token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n }\n readBoolean() {\n const token = this.getToken();\n return token === \"true\" ? 1 : 0;\n }\n nextChar() {\n return this.currentChar = this.stream.getByte();\n }\n prevChar() {\n this.stream.skip(-2);\n return this.currentChar = this.stream.getByte();\n }\n getToken() {\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch === -1) {\n return null;\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 readCharStrings(bytes, lenIV) {\n if (lenIV === -1) {\n return bytes;\n }\n return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n }\n extractFontProgram(properties) {\n const stream = this.stream;\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;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"CharStrings\":\n this.getToken();\n this.getToken();\n this.getToken();\n this.getToken();\n while (true) {\n token = this.getToken();\n if (token === null || token === \"end\") {\n break;\n }\n if (token !== \"/\") {\n continue;\n }\n const glyph = this.getToken();\n length = this.readInt();\n this.getToken();\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n const encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken();\n if (token === \"noaccess\") {\n this.getToken();\n } else if (token === \"/\") {\n this.prevChar();\n }\n charstrings.push({\n glyph,\n encoded\n });\n }\n break;\n case \"Subrs\":\n this.readInt();\n this.getToken();\n while (this.getToken() === \"dup\") {\n const index = this.readInt();\n length = this.readInt();\n this.getToken();\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n const encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken();\n if (token === \"noaccess\") {\n this.getToken();\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 if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) {\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 program.properties.privateData[token] = this.readNumber();\n break;\n case \"ExpansionFactor\":\n program.properties.privateData[token] = this.readNumber() || 0.06;\n break;\n case \"ForceBold\":\n program.properties.privateData[token] = this.readBoolean();\n break;\n }\n }\n for (const {\n encoded,\n glyph\n } of charstrings) {\n const charString = new Type1CharString();\n const error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);\n let output = charString.output;\n if (error) {\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 program.charstrings.unshift(charStringObject);\n } else {\n program.charstrings.push(charStringObject);\n }\n if (properties.builtInEncoding) {\n const index = properties.builtInEncoding.indexOf(glyph);\n if (index > -1 && properties.widths[index] === undefined && index >= properties.firstChar && index <= properties.lastChar) {\n properties.widths[index] = charString.width;\n }\n }\n }\n return program;\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 = getEncoding(encodingArg);\n } else {\n encoding = [];\n const size = parseInt(encodingArg, 10) | 0;\n this.getToken();\n for (let j = 0; j < size; j++) {\n token = this.getToken();\n while (token !== \"dup\" && token !== \"def\") {\n token = this.getToken();\n if (token === null) {\n return;\n }\n }\n if (token === \"def\") {\n break;\n }\n const index = this.readInt();\n this.getToken();\n const glyph = this.getToken();\n encoding[index] = glyph;\n this.getToken();\n }\n }\n properties.builtInEncoding = encoding;\n break;\n case \"FontBBox\":\n const fontBBox = this.readNumberArray();\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;// ./src/core/type1_font.js\n\n\n\n\n\n\nfunction findBlock(streamBytes, signature, startIndex) {\n const streamBytesLength = streamBytes.length;\n const signatureLength = signature.length;\n const scanLength = streamBytesLength - signatureLength;\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 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}\nfunction getHeaderBlock(stream, suggestedLength) {\n const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n const streamStartPos = stream.pos;\n let headerBytes, headerBytesLength, block;\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch {}\n if (headerBytesLength === suggestedLength) {\n block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length);\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;\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 if (block.length === 0) {\n break;\n }\n stream.pos += block.length;\n if (block.found) {\n actualLength = stream.pos - streamStartPos;\n break;\n }\n }\n stream.pos = streamStartPos;\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}\nfunction getEexecBlock(stream, suggestedLength) {\n const eexecBytes = stream.getBytes();\n if (eexecBytes.length === 0) {\n throw new FormatError(\"getEexecBlock - no font program found.\");\n }\n return {\n stream: new Stream(eexecBytes),\n length: eexecBytes.length\n };\n}\nclass Type1Font {\n constructor(name, file, properties) {\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 = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n }\n const headerBlock = getHeaderBlock(file, headerBlockLength);\n const headerBlockParser = new Type1Parser(headerBlock.stream, false, SEAC_ANALYSIS_ENABLED);\n headerBlockParser.extractFontHeader(properties);\n if (pfbHeaderPresent) {\n pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n }\n const eexecBlock = getEexecBlock(file, eexecBlockLength);\n const eexecBlockParser = new Type1Parser(eexecBlock.stream, true, SEAC_ANALYSIS_ENABLED);\n const data = eexecBlockParser.extractFontProgram(properties);\n for (const key in data.properties) {\n properties[key] = data.properties[key];\n }\n const charstrings = data.charstrings;\n const type2Charstrings = this.getType2Charstrings(charstrings);\n const subrs = this.getType2Subrs(data.subrs);\n this.charstrings = charstrings;\n this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties);\n this.seacs = this.getSeacs(data.charstrings);\n }\n get numGlyphs() {\n return this.charstrings.length + 1;\n }\n getCharset() {\n const charset = [\".notdef\"];\n for (const {\n glyphName\n } of this.charstrings) {\n charset.push(glyphName);\n }\n return charset;\n }\n getGlyphMapping(properties) {\n const charstrings = this.charstrings;\n if (properties.composite) {\n const charCodeToGlyphId = Object.create(null);\n for (let glyphId = 0, charstringsLen = charstrings.length; glyphId < charstringsLen; glyphId++) {\n const charCode = properties.cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId + 1;\n }\n return charCodeToGlyphId;\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 return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n }\n hasGlyphId(id) {\n if (id < 0 || id >= this.numGlyphs) {\n return false;\n }\n if (id === 0) {\n return true;\n }\n const glyph = this.charstrings[id - 1];\n return glyph.charstring.length > 0;\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 seacMap[i + 1] = charstring.seac;\n }\n }\n return seacMap;\n }\n getType2Charstrings(type1Charstrings) {\n const type2Charstrings = [];\n for (const type1Charstring of type1Charstrings) {\n type2Charstrings.push(type1Charstring.charstring);\n }\n return type2Charstrings;\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 const type2Subrs = [];\n let i;\n for (i = 0; i < bias; i++) {\n type2Subrs.push([0x0b]);\n }\n for (i = 0; i < count; i++) {\n type2Subrs.push(type1Subrs[i]);\n }\n return type2Subrs;\n }\n wrap(name, glyphs, charstrings, subrs, properties) {\n const cff = new CFF();\n cff.header = new CFFHeader(1, 0, 4, 4);\n cff.names = [name];\n const topDict = new CFFTopDict();\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);\n topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n topDict.setByName(\"FontBBox\", properties.bbox);\n topDict.setByName(\"charset\", null);\n topDict.setByName(\"CharStrings\", null);\n topDict.setByName(\"Private\", null);\n cff.topDict = topDict;\n const strings = new CFFStrings();\n strings.add(\"Version 0.11\");\n strings.add(\"See original notice\");\n strings.add(name);\n strings.add(name);\n strings.add(\"Medium\");\n cff.strings = strings;\n cff.globalSubrIndex = new CFFIndex();\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 const charStringsIndex = new CFFIndex();\n charStringsIndex.add([0x8b, 0x0e]);\n for (i = 0; i < count; i++) {\n charStringsIndex.add(glyphs[i]);\n }\n cff.charStrings = charStringsIndex;\n const privateDict = new CFFPrivateDict();\n privateDict.setByName(\"Subrs\", null);\n const fields = [\"BlueValues\", \"OtherBlues\", \"FamilyBlues\", \"FamilyOtherBlues\", \"StemSnapH\", \"StemSnapV\", \"BlueShift\", \"BlueFuzz\", \"BlueScale\", \"LanguageGroup\", \"ExpansionFactor\", \"ForceBold\", \"StdHW\", \"StdVW\"];\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 for (let j = value.length - 1; j > 0; j--) {\n value[j] -= value[j - 1];\n }\n }\n privateDict.setByName(field, value);\n }\n cff.topDict.privateDict = privateDict;\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 const compiler = new CFFCompiler(cff);\n return compiler.compile();\n }\n}\n\n;// ./src/core/fonts.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];\nconst PDF_GLYPH_SPACE_UNITS = 1000;\nconst EXPORT_DATA_PROPERTIES = [\"ascent\", \"bbox\", \"black\", \"bold\", \"charProcOperatorList\", \"composite\", \"cssFontInfo\", \"data\", \"defaultVMetrics\", \"defaultWidth\", \"descent\", \"fallbackName\", \"fontMatrix\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"loadedName\", \"mimetype\", \"missingFile\", \"name\", \"remeasure\", \"subtype\", \"systemFontInfo\", \"type\", \"vertical\"];\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\"cMap\", \"defaultEncoding\", \"differences\", \"isMonospace\", \"isSerifFont\", \"isSymbolicFont\", \"seacMap\", \"toFontChar\", \"toUnicode\", \"vmetrics\", \"widths\"];\nfunction adjustWidths(properties) {\n if (!properties.fontMatrix) {\n return;\n }\n if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n return;\n }\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}\nfunction adjustTrueTypeToUnicode(properties, isSymbolicFont, nameRecords) {\n if (properties.isInternalFont) {\n return;\n }\n if (properties.hasIncludedToUnicodeMap) {\n return;\n }\n if (properties.hasEncoding) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n if (!isSymbolicFont) {\n return;\n }\n if (nameRecords.length === 0) {\n return;\n }\n if (properties.defaultEncoding === WinAnsiEncoding) {\n return;\n }\n for (const r of nameRecords) {\n if (!isWinNameRecord(r)) {\n return;\n }\n }\n const encoding = WinAnsiEncoding;\n const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in encoding) {\n const glyphName = encoding[charCode];\n if (glyphName === \"\") {\n continue;\n }\n const unicode = glyphsUnicodeMap[glyphName];\n if (unicode === undefined) {\n continue;\n }\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\nfunction adjustType1ToUnicode(properties, builtInEncoding) {\n if (properties.isInternalFont) {\n return;\n }\n if (properties.hasIncludedToUnicodeMap) {\n return;\n }\n if (builtInEncoding === properties.defaultEncoding) {\n return;\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.hasEncoding) {\n if (properties.baseEncodingName || properties.differences[charCode] !== undefined) {\n continue;\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}\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;\n }\n toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\nclass fonts_Glyph {\n constructor(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {\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 get category() {\n return shadow(this, \"category\", getCharUnicodeCategory(this.unicode), true);\n }\n}\nfunction int16(b0, b1) {\n return (b0 << 8) + b1;\n}\nfunction writeSignedInt16(bytes, index, value) {\n bytes[index + 1] = value;\n bytes[index] = value >>> 8;\n}\nfunction signedInt16(b0, b1) {\n const value = (b0 << 8) + b1;\n return value & 1 << 15 ? value - 0x10000 : value;\n}\nfunction writeUint32(bytes, index, value) {\n bytes[index + 3] = value & 0xff;\n bytes[index + 2] = value >>> 8;\n bytes[index + 1] = value >>> 16;\n bytes[index] = value >>> 24;\n}\nfunction int32(b0, b1, b2, b3) {\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n}\nfunction string16(value) {\n return String.fromCharCode(value >> 8 & 0xff, value & 0xff);\n}\nfunction safeString16(value) {\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}\nfunction isTrueTypeFile(file) {\n const header = file.peekBytes(4);\n return readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\";\n}\nfunction isTrueTypeCollectionFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"ttcf\";\n}\nfunction isOpenTypeFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"OTTO\";\n}\nfunction isType1File(file) {\n const header = file.peekBytes(2);\n if (header[0] === 0x25 && header[1] === 0x21) {\n return true;\n }\n if (header[0] === 0x80 && header[1] === 0x01) {\n return true;\n }\n return false;\n}\nfunction isCFFFile(file) {\n const header = file.peekBytes(4);\n if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) {\n return true;\n }\n return false;\n}\nfunction getFontFileType(file, {\n type,\n subtype,\n composite\n}) {\n let fileType, fileSubtype;\n if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n fileType = composite ? \"CIDFontType2\" : \"TrueType\";\n } else if (isOpenTypeFile(file)) {\n fileType = composite ? \"CIDFontType2\" : \"OpenType\";\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 return [fileType, fileSubtype];\n}\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n for (const charCode in glyphMap) {\n map[+charCode] = glyphMap[charCode];\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}\nfunction isMacNameRecord(r) {\n return r.platform === 1 && r.encoding === 0 && r.language === 0;\n}\nfunction isWinNameRecord(r) {\n return r.platform === 3 && r.encoding === 1 && r.language === 0x409;\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}\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId, toUnicode) {\n const newMap = Object.create(null);\n const toUnicodeExtraMap = new Map();\n const toFontChar = [];\n const usedGlyphIds = new Set();\n let privateUseAreaIndex = 0;\n const privateUseOffetStart = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n let nextAvailableFontCharCode = privateUseOffetStart;\n let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n const isInPrivateArea = code => PRIVATE_USE_AREAS[0][0] <= code && code <= PRIVATE_USE_AREAS[0][1] || PRIVATE_USE_AREAS[1][0] <= code && code <= PRIVATE_USE_AREAS[1][1];\n for (const originalCharCode in charCodeToGlyphId) {\n let glyphId = charCodeToGlyphId[originalCharCode];\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 let unicode = toUnicode.get(originalCharCode);\n if (typeof unicode === \"string\") {\n unicode = unicode.codePointAt(0);\n }\n if (unicode && !isInPrivateArea(unicode) && !usedGlyphIds.has(glyphId)) {\n toUnicodeExtraMap.set(unicode, glyphId);\n usedGlyphIds.add(glyphId);\n }\n newMap[fontCharCode] = glyphId;\n toFontChar[originalCharCode] = fontCharCode;\n }\n return {\n toFontChar,\n charCodeToGlyphId: newMap,\n toUnicodeExtraMap,\n nextAvailableFontCharCode\n };\n}\nfunction getRanges(glyphs, toUnicodeExtraMap, numGlyphs) {\n const codes = [];\n for (const charCode in glyphs) {\n if (glyphs[charCode] >= numGlyphs) {\n continue;\n }\n codes.push({\n fontCharCode: charCode | 0,\n glyphId: glyphs[charCode]\n });\n }\n if (toUnicodeExtraMap) {\n for (const [unicode, glyphId] of toUnicodeExtraMap) {\n if (glyphId >= numGlyphs) {\n continue;\n }\n codes.push({\n fontCharCode: unicode,\n glyphId\n });\n }\n }\n if (codes.length === 0) {\n codes.push({\n fontCharCode: 0,\n glyphId: 0\n });\n }\n codes.sort(function fontGetRangesSort(a, b) {\n return a.fontCharCode - b.fontCharCode;\n });\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 return ranges;\n}\nfunction createCmapTable(glyphs, toUnicodeExtraMap, numGlyphs) {\n const ranges = getRanges(glyphs, toUnicodeExtraMap, numGlyphs);\n const numTables = ranges.at(-1)[1] > 0xffff ? 2 : 1;\n let cmap = \"\\x00\\x00\" + string16(numTables) + \"\\x00\\x03\" + \"\\x00\\x01\" + string32(4 + numTables * 8);\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 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 let startCount = \"\";\n let endCount = \"\";\n let idDeltas = \"\";\n let idRangeOffsets = \"\";\n let glyphsIds = \"\";\n let bias = 0;\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 idDeltas += string16(0);\n idRangeOffsets += string16(offset);\n for (j = 0, jj = codes.length; j < jj; ++j) {\n glyphsIds += string16(codes[j]);\n }\n } else {\n const startCode = codes[0];\n idDeltas += string16(startCode - start & 0xffff);\n idRangeOffsets += string16(0);\n }\n }\n if (trailingRangesCount > 0) {\n endCount += \"\\xFF\\xFF\";\n startCount += \"\\xFF\\xFF\";\n idDeltas += \"\\x00\\x01\";\n idRangeOffsets += \"\\x00\\x00\";\n }\n const format314 = \"\\x00\\x00\" + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + \"\\x00\\x00\" + startCount + idDeltas + idRangeOffsets + glyphsIds;\n let format31012 = \"\";\n let header31012 = \"\";\n if (numTables > 1) {\n cmap += \"\\x00\\x03\" + \"\\x00\\x0A\" + string32(4 + numTables * 8 + 4 + format314.length);\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 += string32(start) + string32(end) + string32(code);\n start = end + 1;\n code = codes[j];\n }\n }\n format31012 += string32(start) + string32(range[1]) + string32(code);\n }\n header31012 = \"\\x00\\x0C\" + \"\\x00\\x00\" + string32(format31012.length + 16) + \"\\x00\\x00\\x00\\x00\" + string32(format31012.length / 12);\n }\n return cmap + \"\\x00\\x04\" + string16(format314.length + 4) + format314 + header31012 + format31012;\n}\nfunction validateOS2Table(os2, file) {\n file.pos = (file.start || 0) + os2.offset;\n const version = file.getUint16();\n file.skip(60);\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);\n const usWinAscent = file.getUint16();\n if (usWinAscent === 0) {\n return false;\n }\n os2.data[8] = os2.data[9] = 0;\n return true;\n}\nfunction createOS2Table(properties, charstrings, override) {\n override ||= {\n unitsPerEm: 0,\n yMax: 0,\n yMin: 0,\n ascent: 0,\n descent: 0\n };\n let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n let firstCharIndex = null;\n let lastCharIndex = 0;\n let position = -1;\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 position = getUnicodeRangeFor(code, position);\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(\"Unicode ranges Bits > 123 are reserved for internal usage\");\n }\n }\n if (lastCharIndex > 0xffff) {\n lastCharIndex = 0xffff;\n }\n } else {\n firstCharIndex = 0;\n lastCharIndex = 255;\n }\n const bbox = properties.bbox || [0, 0, 0, 0];\n const unitsPerEm = override.unitsPerEm || (properties.fontMatrix ? 1 / Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs)) : 1000);\n const scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n const typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n let typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));\n if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n typoDescent = -typoDescent;\n }\n const winAscent = override.yMax || typoAscent;\n const winDescent = -override.yMin || -typoDescent;\n return \"\\x00\\x03\" + \"\\x02\\x24\" + \"\\x01\\xF4\" + \"\\x00\\x05\" + \"\\x00\\x00\" + \"\\x02\\x8A\" + \"\\x02\\xBB\" + \"\\x00\\x00\" + \"\\x00\\x8C\" + \"\\x02\\x8A\" + \"\\x02\\xBB\" + \"\\x00\\x00\" + \"\\x01\\xDF\" + \"\\x00\\x31\" + \"\\x01\\x02\" + \"\\x00\\x00\" + \"\\x00\\x00\\x06\" + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + \"\\x00\\x00\\x00\\x00\\x00\\x00\" + string32(ulUnicodeRange1) + string32(ulUnicodeRange2) + string32(ulUnicodeRange3) + string32(ulUnicodeRange4) + \"\\x2A\\x32\\x31\\x2A\" + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + \"\\x00\\x64\" + string16(winAscent) + string16(winDescent) + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + \"\\x00\\x03\";\n}\nfunction createPostTable(properties) {\n const angle = Math.floor(properties.italicAngle * 2 ** 16);\n return \"\\x00\\x03\\x00\\x00\" + string32(angle) + \"\\x00\\x00\" + \"\\x00\\x00\" + string32(properties.fixedPitch ? 1 : 0) + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\";\n}\nfunction createPostscriptName(name) {\n return name.replaceAll(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\nfunction createNameTable(name, proto) {\n if (!proto) {\n proto = [[], []];\n }\n const strings = [proto[0][0] || \"Original licence\", proto[0][1] || name, proto[0][2] || \"Unknown\", proto[0][3] || \"uniqueID\", proto[0][4] || name, proto[0][5] || \"Version 0.11\", proto[0][6] || createPostscriptName(name), proto[0][7] || \"Unknown\", proto[0][8] || \"Unknown\", proto[0][9] || \"Unknown\"];\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 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 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 const namesRecordCount = strings.length * platforms.length;\n let nameTable = \"\\x00\\x00\" + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6);\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 = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset);\n nameTable += nameRecord;\n strOffset += str.length;\n }\n }\n nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n return nameTable;\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 this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.missingFile = false;\n this.cssFontInfo = properties.cssFontInfo;\n this._charsCache = Object.create(null);\n this._glyphCache = Object.create(null);\n let isSerifFont = !!(properties.flags & FontFlags.Serif);\n if (!isSerifFont && !properties.isSimulatedFlags) {\n const baseName = name.replaceAll(/[,_]/g, \"-\").split(\"-\", 1)[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 this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n let {\n type,\n subtype\n } = properties;\n this.type = type;\n this.subtype = subtype;\n this.systemFontInfo = properties.systemFontInfo;\n const matches = name.match(/^InvalidPDFjsFont_(.*)_\\d+$/);\n this.isInvalidPDFjsFont = !!matches;\n if (this.isInvalidPDFjsFont) {\n this.fallbackName = matches[1];\n } else if (this.isMonospace) {\n this.fallbackName = \"monospace\";\n } else if (this.isSerifFont) {\n this.fallbackName = \"serif\";\n } else {\n this.fallbackName = \"sans-serif\";\n }\n if (this.systemFontInfo?.guessFallback) {\n this.systemFontInfo.guessFallback = false;\n this.systemFontInfo.css += `,${this.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 this.toUnicode = properties.toUnicode;\n this.toFontChar = [];\n if (properties.type === \"Type3\") {\n for (let charCode = 0; charCode < 256; charCode++) {\n this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode];\n }\n return;\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 if (!file || file.isEmpty) {\n if (file) {\n warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n }\n this.fallbackToSystemFont(properties);\n return;\n }\n [type, subtype] = getFontFileType(file, properties);\n if (type !== this.type || subtype !== this.subtype) {\n info(\"Inconsistent font file Type/SubType, expected: \" + `${this.type}/${this.subtype} but found: ${type}/${subtype}.`);\n }\n let data;\n try {\n switch (type) {\n case \"MMType1\":\n info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n case \"Type1\":\n case \"CIDFontType0\":\n this.mimetype = \"font/opentype\";\n const cff = subtype === \"Type1C\" || subtype === \"CIDFontType0C\" ? new CFFFont(file, properties) : new Type1Font(name, file, properties);\n adjustWidths(properties);\n data = this.convert(name, cff, properties);\n break;\n case \"OpenType\":\n case \"TrueType\":\n case \"CIDFontType2\":\n this.mimetype = \"font/opentype\";\n data = this.checkAndRepair(name, file, properties);\n if (this.isOpenType) {\n adjustWidths(properties);\n type = \"OpenType\";\n }\n break;\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 amendFallbackToUnicode(properties);\n this.data = data;\n this.type = type;\n this.subtype = subtype;\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 get renderer() {\n const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n return shadow(this, \"renderer\", renderer);\n }\n exportData(extraProperties = false) {\n const exportDataProperties = extraProperties ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES] : EXPORT_DATA_PROPERTIES;\n const data = Object.create(null);\n let property, value;\n for (property of exportDataProperties) {\n value = this[property];\n if (value !== undefined) {\n data[property] = value;\n }\n }\n return data;\n }\n fallbackToSystemFont(properties) {\n this.missingFile = true;\n const {\n name,\n type\n } = this;\n let fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap(),\n nonStdFontMap = getNonStdFontMap();\n const isStandardFont = !!stdFontMap[fontName];\n const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\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 this.bold = /bold/gi.test(fontName);\n this.italic = /oblique|italic/gi.test(fontName);\n this.black = /Black/g.test(name);\n const isNarrow = /Narrow/g.test(name);\n this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n if ((isStandardFont || isMappedToStandardFont) && type === \"CIDFontType2\" && this.cidEncoding.startsWith(\"Identity-\")) {\n const cidToGidMap = properties.cidToGidMap;\n const map = [];\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n if (/Arial-?Black/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n } else if (/Calibri/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n }\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 if (cidToGidMap.length !== this.toUnicode.length && properties.hasIncludedToUnicodeMap && this.toUnicode instanceof IdentityToUnicodeMap) {\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 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(SymbolSetEncoding, getGlyphsUnicode(), this.differences);\n } else if (/Dingbats/i.test(fontName)) {\n this.toFontChar = buildToFontChar(ZapfDingbatsEncoding, getDingbatsGlyphsUnicode(), this.differences);\n } else if (isStandardFont || isMappedToStandardFont) {\n const map = buildToFontChar(this.defaultEncoding, getGlyphsUnicode(), this.differences);\n if (type === \"CIDFontType2\" && !this.cidEncoding.startsWith(\"Identity-\") && !(this.toUnicode instanceof IdentityToUnicodeMap)) {\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 = 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 if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n if (/Tahoma|Verdana/i.test(name)) {\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n }\n }\n this.toFontChar = map;\n }\n amendFallbackToUnicode(properties);\n this.loadedName = fontName.split(\"-\", 1)[0];\n }\n checkAndRepair(name, font, properties) {\n const VALID_TABLES = [\"OS/2\", \"cmap\", \"head\", \"hhea\", \"hmtx\", \"maxp\", \"name\", \"post\", \"loca\", \"glyf\", \"fpgm\", \"prep\", \"cvt \", \"CFF \"];\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 for (let i = 0; i < numTables; i++) {\n const table = readTableEntry(file);\n if (!VALID_TABLES.includes(table.tag)) {\n continue;\n }\n if (table.length === 0) {\n continue;\n }\n tables[table.tag] = table;\n }\n return tables;\n }\n function readTableEntry(file) {\n const tag = file.getString(4);\n const checksum = file.getInt32() >>> 0;\n const offset = file.getInt32() >>> 0;\n const length = file.getInt32() >>> 0;\n const previousPosition = file.pos;\n file.pos = file.start || 0;\n file.skip(offset);\n const data = file.getBytes(length);\n file.pos = previousPosition;\n if (tag === \"head\") {\n data[8] = data[9] = data[10] = data[11] = 0;\n data[17] |= 0x20;\n }\n return {\n tag,\n checksum,\n length,\n offset,\n data\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 function readTrueTypeCollectionHeader(ttc) {\n const ttcTag = ttc.getString(4);\n assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\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 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(`Invalid TrueType Collection majorVersion: ${majorVersion}.`);\n }\n function readTrueTypeCollectionData(ttc, fontName) {\n const {\n numFonts,\n offsetTable\n } = readTrueTypeCollectionHeader(ttc);\n const fontNameParts = fontName.split(\"+\");\n let fallbackData;\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 if (!potentialTables.name) {\n throw new FormatError('TrueType Collection font must contain a \"name\" table.');\n }\n const [nameTable] = readNameTable(potentialTables.name);\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 = nameTable[j][k]?.replaceAll(/\\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(`TrueType Collection does not contain \"${fontName}\" font, ` + `falling back to \"${fallbackData.name}\" font instead.`);\n return {\n header: fallbackData.header,\n tables: fallbackData.tables\n };\n }\n throw new FormatError(`TrueType Collection does not contain \"${fontName}\" font.`);\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 || 0) + cmap.offset;\n file.pos = start;\n file.skip(2);\n const numTables = file.getUint16();\n let potentialTable;\n let canBreak = false;\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 if (potentialTable?.platformId === platformId && potentialTable?.encodingId === encodingId) {\n continue;\n }\n if (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 3)) {\n useTable = true;\n } else if (platformId === 1 && encodingId === 0) {\n useTable = true;\n } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) {\n useTable = true;\n if (!isSymbolicFont) {\n canBreak = true;\n }\n } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n useTable = true;\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 if (useTable) {\n potentialTable = {\n platformId,\n encodingId,\n offset\n };\n }\n if (canBreak) {\n break;\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 const format = file.getUint16();\n let hasShortCmap = false;\n const mappings = [];\n let j, glyphId;\n if (format === 0) {\n file.skip(2 + 2);\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 file.skip(2 + 2);\n const subHeaderKeys = [];\n let maxSubHeaderKey = 0;\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 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 file.pos = subHeaders[0].idRangePos + 2 * i;\n glyphId = file.getUint16();\n mappings.push({\n charCode: i,\n glyphId\n });\n } else {\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 file.skip(2 + 2);\n const segCount = file.getUint16() >> 1;\n file.skip(6);\n const segments = [];\n let segIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments.push({\n end: file.getUint16()\n });\n }\n file.skip(2);\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].start = file.getUint16();\n }\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].delta = file.getUint16();\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 offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n segment.offsetIndex = offsetIndex;\n offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1);\n }\n const offsets = [];\n for (j = 0; j < offsetsCount; j++) {\n offsets.push(file.getUint16());\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 for (j = start; j <= end; j++) {\n if (j === 0xffff) {\n continue;\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 file.skip(2 + 2);\n const firstCode = file.getUint16();\n const entryCount = file.getUint16();\n for (j = 0; j < entryCount; j++) {\n glyphId = file.getUint16();\n const charCode = firstCode + j;\n mappings.push({\n charCode,\n glyphId\n });\n }\n } else if (format === 12) {\n file.skip(2 + 4 + 4);\n const nGroups = file.getInt32() >>> 0;\n for (j = 0; j < nGroups; j++) {\n const startCharCode = file.getInt32() >>> 0;\n const endCharCode = file.getInt32() >>> 0;\n let glyphCode = file.getInt32() >>> 0;\n for (let charCode = startCharCode; charCode <= endCharCode; charCode++) {\n mappings.push({\n charCode,\n glyphId: glyphCode++\n });\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 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 return {\n platformId: potentialTable.platformId,\n encodingId: potentialTable.encodingId,\n mappings,\n hasShortCmap\n };\n }\n function sanitizeMetrics(file, header, metrics, headTable, numGlyphs, dupFirstEntry) {\n if (!header) {\n if (metrics) {\n metrics.data = null;\n }\n return;\n }\n file.pos = (file.start || 0) + header.offset;\n file.pos += 4;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n file.pos += 2;\n const caretOffset = file.getUint16();\n file.pos += 8;\n file.pos += 2;\n let numOfMetrics = file.getUint16();\n if (caretOffset !== 0) {\n const macStyle = int16(headTable.data[44], headTable.data[45]);\n if (!(macStyle & 2)) {\n header.data[22] = 0;\n header.data[23] = 0;\n }\n }\n if (numOfMetrics > numGlyphs) {\n info(`The numOfMetrics (${numOfMetrics}) should not be ` + `greater than the numGlyphs (${numGlyphs}).`);\n numOfMetrics = numGlyphs;\n header.data[34] = (numOfMetrics & 0xff00) >> 8;\n header.data[35] = numOfMetrics & 0x00ff;\n }\n const numOfSidebearings = numGlyphs - numOfMetrics;\n const numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1);\n if (numMissing > 0) {\n const entries = new Uint8Array(metrics.length + numMissing * 2);\n entries.set(metrics.data);\n if (dupFirstEntry) {\n entries[metrics.length] = metrics.data[2];\n entries[metrics.length + 1] = metrics.data[3];\n }\n metrics.data = entries;\n }\n }\n function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) {\n const glyphProfile = {\n length: 0,\n sizeOfInstructions: 0\n };\n if (sourceStart < 0 || sourceStart >= source.length || sourceEnd > source.length || sourceEnd - sourceStart <= 12) {\n return glyphProfile;\n }\n const glyf = source.subarray(sourceStart, sourceEnd);\n const xMin = signedInt16(glyf[2], glyf[3]);\n const yMin = signedInt16(glyf[4], glyf[5]);\n const xMax = signedInt16(glyf[6], glyf[7]);\n const yMax = signedInt16(glyf[8], glyf[9]);\n if (xMin > xMax) {\n writeSignedInt16(glyf, 2, xMax);\n writeSignedInt16(glyf, 6, xMin);\n }\n if (yMin > yMax) {\n writeSignedInt16(glyf, 4, yMax);\n writeSignedInt16(glyf, 8, yMin);\n }\n const contoursCount = signedInt16(glyf[0], glyf[1]);\n if (contoursCount < 0) {\n if (contoursCount < -1) {\n return glyphProfile;\n }\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\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 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 let coordinatesLength = 0;\n for (i = 0; i < flagsCount; i++) {\n const flag = glyf[j++];\n if (flag & 0xc0) {\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 if (repeat === 0) {\n glyf[j - 1] ^= 8;\n }\n i += repeat;\n coordinatesLength += repeat * xyLength;\n }\n }\n if (coordinatesLength === 0) {\n return glyphProfile;\n }\n let glyphDataLength = j + coordinatesLength;\n if (glyphDataLength > glyf.length) {\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(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2);\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 glyphDataLength = glyphDataLength + 3 & ~3;\n dest.set(glyf.subarray(0, glyphDataLength), destStart);\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n function sanitizeHead(head, numGlyphs, locaLength) {\n const data = head.data;\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 const indexToLocFormat = int16(data[50], data[51]);\n if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n info(\"Attempting to fix invalid indexToLocFormat in head table: \" + indexToLocFormat);\n const numGlyphsPlusOne = numGlyphs + 1;\n if (locaLength === numGlyphsPlusOne << 1) {\n data[50] = 0;\n data[51] = 0;\n } else if (locaLength === numGlyphsPlusOne << 2) {\n data[50] = 0;\n data[51] = 1;\n } else {\n throw new FormatError(\"Could not fix indexToLocFormat: \" + indexToLocFormat);\n }\n }\n }\n function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) {\n let itemSize, itemDecode, itemEncode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = function fontItemDecodeLong(data, offset) {\n return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\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 const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n const locaDataSize = itemSize * (1 + numGlyphsOut);\n const locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n const oldGlyfData = glyf.data;\n const oldGlyfDataLength = oldGlyfData.length;\n const newGlyfData = new Uint8Array(oldGlyfDataLength);\n let i, j;\n const locaEntries = [];\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) => a.offset - b.offset);\n for (i = 0; i < numGlyphs; i++) {\n locaEntries[i].endOffset = locaEntries[i + 1].offset;\n }\n locaEntries.sort((a, b) => a.index - b.index);\n for (i = 0; i < numGlyphs; i++) {\n const {\n offset,\n endOffset\n } = locaEntries[i];\n if (offset !== 0 || endOffset !== 0) {\n break;\n }\n const nextOffset = locaEntries[i + 1].offset;\n if (nextOffset === 0) {\n continue;\n }\n locaEntries[i].endOffset = nextOffset;\n break;\n }\n const last = locaEntries.at(-2);\n if (last.offset !== 0 && last.endOffset === 0) {\n last.endOffset = oldGlyfDataLength;\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(oldGlyfData, locaEntries[i].offset, locaEntries[i].endOffset, newGlyfData, writeOffset, hintsValid);\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 if (writeOffset === 0) {\n const simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);\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 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(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength);\n } else {\n glyf.data = newGlyfData.subarray(0, writeOffset);\n }\n return {\n missingGlyphs,\n maxSizeOfInstructions\n };\n }\n function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n const start = (font.start || 0) + post.offset;\n font.pos = start;\n const length = post.length,\n end = start + length;\n const version = font.getInt32();\n font.skip(28);\n let glyphNames;\n let valid = true;\n let i;\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 function readNameTable(nameTable) {\n const start = (font.start || 0) + nameTable.offset;\n font.pos = start;\n const names = [[], []],\n records = [];\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 return [names, records];\n }\n const numRecords = font.getUint16();\n const stringsStart = font.getUint16();\n const NAME_RECORD_LENGTH = 12;\n let i, ii;\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 if (isMacNameRecord(r) || isWinNameRecord(r)) {\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;\n }\n const pos = start + stringsStart + record.offset;\n if (pos + record.length > end) {\n continue;\n }\n font.pos = pos;\n const nameIndex = record.name;\n if (record.encoding) {\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, records];\n }\n const TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\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 if (op === 0x40) {\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 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 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 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(signedInt16(b, data[i++]));\n }\n }\n } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n if (!inFDEF && !inELSE) {\n funcId = stack.at(-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 = 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 (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) {\n callstack.push({\n data,\n i,\n stackTop: stack.length - 1\n });\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 if (inFDEF || inELSE) {\n warn(\"TT: nested FDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n lastDeff = i;\n funcId = stack.pop();\n ttContext.functionsDefined[funcId] = {\n data,\n i\n };\n } else if (op === 0x2d) {\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 if (inFDEF || inELSE) {\n warn(\"TT: nested IDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n lastDeff = i;\n } else if (op === 0x58) {\n ++ifLevel;\n } else if (op === 0x1b) {\n inELSE = ifLevel;\n } else if (op === 0x59) {\n if (inELSE === ifLevel) {\n inELSE = 0;\n }\n --ifLevel;\n } else if (op === 0x1c) {\n if (!inFDEF && !inELSE) {\n const offset = stack.at(-1);\n if (offset > 0) {\n i += offset - 1;\n }\n }\n }\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);\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 content.push(new Uint8Array([0x22, 0x2d]));\n }\n foldTTTable(table, content);\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 function foldTTTable(table, content) {\n if (content.length > 1) {\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 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 font = new Stream(new Uint8Array(font.getBytes()));\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 const isTrueType = !tables[\"CFF \"];\n if (!isTrueType) {\n const isComposite = properties.composite && (properties.cidToGidMap?.length > 0 || !(properties.cMap instanceof IdentityCMap));\n if (header.version === \"OTTO\" && !isComposite || !tables.head || !tables.hhea || !tables.maxp || !tables.post) {\n cffFile = new Stream(tables[\"CFF \"].data);\n cff = new CFFFont(cffFile, properties);\n adjustWidths(properties);\n return this.convert(name, cff, properties);\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 tables.glyf = {\n tag: \"glyf\",\n data: new Uint8Array(0)\n };\n }\n this.isOpenType = false;\n }\n if (!tables.maxp) {\n throw new FormatError('Required \"maxp\" table is not found');\n }\n font.pos = (font.start || 0) + tables.maxp.offset;\n let version = font.getInt32();\n const numGlyphs = font.getUint16();\n if (version !== 0x00010000 && version !== 0x00005000) {\n if (tables.maxp.length === 6) {\n version = 0x0005000;\n } else if (tables.maxp.length >= 32) {\n version = 0x00010000;\n } else {\n throw new FormatError(`\"maxp\" table has a wrong version number`);\n }\n writeUint32(tables.maxp.data, 0, version);\n }\n if (properties.scaleFactors?.length === numGlyphs && isTrueType) {\n const {\n scaleFactors\n } = properties;\n const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);\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 const {\n glyf,\n loca,\n isLocationLong\n } = glyphs.write();\n tables.glyf.data = glyf;\n tables.loca.data = loca;\n if (isLocationLong !== !!isGlyphLocationsLong) {\n tables.head.data[50] = 0;\n tables.head.data[51] = isLocationLong ? 1 : 0;\n }\n const metrics = tables.hmtx.data;\n for (let i = 0; i < numGlyphs; i++) {\n const j = 4 * i;\n const advanceWidth = Math.round(scaleFactors[i] * int16(metrics[j], metrics[j + 1]));\n metrics[j] = advanceWidth >> 8 & 0xff;\n metrics[j + 1] = advanceWidth & 0xff;\n const lsb = Math.round(scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3]));\n writeSignedInt16(metrics, j + 2, lsb);\n }\n }\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 >= 32) {\n font.pos += 8;\n const maxZones = font.getUint16();\n if (maxZones > 2) {\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 tables.maxp.data[4] = numGlyphsOut >> 8;\n tables.maxp.data[5] = numGlyphsOut & 255;\n const hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables[\"cvt \"], maxFunctionDefs);\n if (!hintsValid) {\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n }\n sanitizeMetrics(font, tables.hhea, tables.hmtx, tables.head, numGlyphsOut, dupFirstEntry);\n if (!tables.head) {\n throw new FormatError('Required \"head\" table is not found');\n }\n sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n let missingGlyphs = Object.create(null);\n if (isTrueType) {\n const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);\n const glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions);\n missingGlyphs = glyphsInfo.missingGlyphs;\n if (version >= 0x00010000 && tables.maxp.length >= 32) {\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 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 const metricsOverride = {\n unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n yMax: signedInt16(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 this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n if (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 if (tables.post) {\n readPostScriptTable(tables.post, properties, numGlyphs);\n }\n tables.post = {\n tag: \"post\",\n data: createPostTable(properties)\n };\n const charCodeToGlyphId = Object.create(null);\n function hasGlyph(glyphId) {\n return !missingGlyphs[glyphId];\n }\n if (properties.composite) {\n const cidToGidMap = properties.cidToGidMap || [];\n const isCidToGidMapEmpty = cidToGidMap.length === 0;\n properties.cMap.forEach(function (charCode, cid) {\n if (typeof cid === \"string\") {\n cid = convertCidString(charCode, cid, 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 if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n }\n });\n } else {\n const cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding);\n const cmapPlatformId = cmapTable.platformId;\n const cmapEncodingId = cmapTable.encodingId;\n const cmapMappings = cmapTable.mappings;\n let baseEncoding = [],\n forcePostTable = false;\n if (properties.hasEncoding && (properties.baseEncodingName === \"MacRomanEncoding\" || properties.baseEncodingName === \"WinAnsiEncoding\")) {\n baseEncoding = getEncoding(properties.baseEncodingName);\n }\n if (properties.hasEncoding && !this.isSymbolicFont && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0)) {\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 const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n let unicodeOrCharCode;\n if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n }\n if (unicodeOrCharCode === undefined) {\n if (!properties.glyphNames && properties.hasIncludedToUnicodeMap && !(this.toUnicode instanceof IdentityToUnicodeMap)) {\n const unicode = this.toUnicode.get(charCode);\n if (unicode) {\n unicodeOrCharCode = unicode.codePointAt(0);\n }\n }\n if (unicodeOrCharCode === undefined) {\n continue;\n }\n }\n for (const mapping of cmapMappings) {\n if (mapping.charCode !== unicodeOrCharCode) {\n continue;\n }\n charCodeToGlyphId[charCode] = mapping.glyphId;\n break;\n }\n }\n } else if (cmapPlatformId === 0) {\n for (const mapping of cmapMappings) {\n charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\n }\n forcePostTable = true;\n } else if (cmapPlatformId === 3 && cmapEncodingId === 0) {\n for (const mapping of cmapMappings) {\n let charCode = mapping.charCode;\n if (charCode >= 0xf000 && charCode <= 0xf0ff) {\n charCode &= 0xff;\n }\n charCodeToGlyphId[charCode] = mapping.glyphId;\n }\n } else {\n for (const mapping of cmapMappings) {\n charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\n }\n }\n if (properties.glyphNames && (baseEncoding.length || this.differences.length)) {\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 if (charCodeToGlyphId.length === 0) {\n charCodeToGlyphId[0] = 0;\n }\n let glyphZeroId = numGlyphsOut - 1;\n if (!dupFirstEntry) {\n glyphZeroId = 0;\n }\n if (!properties.cssFontInfo) {\n const newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId, this.toUnicode);\n this.toFontChar = newMapping.toFontChar;\n tables.cmap = {\n tag: \"cmap\",\n data: createCmapTable(newMapping.charCodeToGlyphId, newMapping.toUnicodeExtraMap, numGlyphsOut)\n };\n if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n tables[\"OS/2\"] = {\n tag: \"OS/2\",\n data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride)\n };\n }\n }\n if (!isTrueType) {\n try {\n cffFile = new Stream(tables[\"CFF \"].data);\n const parser = new CFFParser(cffFile, properties, SEAC_ANALYSIS_ENABLED);\n cff = parser.parse();\n cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(cff);\n tables[\"CFF \"].data = compiler.compile();\n } catch {\n warn(\"Failed to compile font \" + properties.loadedName);\n }\n }\n if (!tables.name) {\n tables.name = {\n tag: \"name\",\n data: createNameTable(this.name)\n };\n } else {\n const [namePrototype, nameRecords] = readNameTable(tables.name);\n tables.name.data = createNameTable(name, namePrototype);\n this.psName = namePrototype[0][6] || null;\n if (!properties.composite) {\n adjustTrueTypeToUnicode(properties, this.isSymbolicFont, nameRecords);\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 convert(fontName, font, properties) {\n properties.fixedPitch = false;\n if (properties.builtInEncoding) {\n adjustType1ToUnicode(properties, properties.builtInEncoding);\n }\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 let toUnicodeExtraMap = null;\n if (!properties.cssFontInfo) {\n newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId, this.toUnicode);\n this.toFontChar = newMapping.toFontChar;\n newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n toUnicodeExtraMap = newMapping.toUnicodeExtraMap;\n }\n const numGlyphs = font.numGlyphs;\n function getCharCodes(charCodeToGlyphId, glyphId) {\n let charCodes = null;\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n (charCodes ||= []).push(charCode | 0);\n }\n }\n return charCodes;\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] = glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n const seacs = font.seacs;\n if (newMapping && SEAC_ANALYSIS_ENABLED && 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 const charCodes = getCharCodes(mapping, glyphId);\n if (!charCodes) {\n continue;\n }\n for (const charCode of charCodes) {\n const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n const baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId);\n const accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId);\n seacMap[charCode] = {\n baseFontCharCode,\n accentFontCharCode,\n accentOffset\n };\n }\n }\n properties.seacMap = seacMap;\n }\n const unitsPerEm = properties.fontMatrix ? 1 / Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs)) : 1000;\n const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n builder.addTable(\"CFF \", font.data);\n builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, toUnicodeExtraMap, numGlyphs));\n builder.addTable(\"head\", \"\\x00\\x01\\x00\\x00\" + \"\\x00\\x00\\x10\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x5F\\x0F\\x3C\\xF5\" + \"\\x00\\x00\" + safeString16(unitsPerEm) + \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + \"\\x00\\x00\" + safeString16(properties.descent) + \"\\x0F\\xFF\" + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + \"\\x00\\x11\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\");\n builder.addTable(\"hhea\", \"\\x00\\x01\\x00\\x00\" + safeString16(properties.ascent) + safeString16(properties.descent) + \"\\x00\\x00\" + \"\\xFF\\xFF\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + string16(numGlyphs));\n builder.addTable(\"hmtx\", function fontFieldsHmtx() {\n const charstrings = font.charstrings;\n const cffWidths = font.cff ? font.cff.widths : null;\n let hmtx = \"\\x00\\x00\\x00\\x00\";\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 builder.addTable(\"maxp\", \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs));\n builder.addTable(\"name\", createNameTable(fontName));\n builder.addTable(\"post\", createPostTable(properties));\n return builder.toArray();\n }\n get _spaceWidth() {\n const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n let width;\n for (const glyphName of possibleSpaceReplacements) {\n if (glyphName in this.widths) {\n width = this.widths[glyphName];\n break;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n const glyphUnicode = glyphsUnicodeMap[glyphName];\n let charcode = 0;\n if (this.composite && this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n if (typeof charcode === \"string\") {\n charcode = convertCidString(glyphUnicode, charcode);\n }\n }\n if (!charcode && this.toUnicode) {\n charcode = this.toUnicode.charCodeOf(glyphUnicode);\n }\n if (charcode <= 0) {\n charcode = glyphUnicode;\n }\n width = this.widths[charcode];\n if (width) {\n break;\n }\n }\n return shadow(this, \"_spaceWidth\", width || this.defaultWidth);\n }\n _charToGlyph(charcode, isSpace = false) {\n let glyph = this._glyphCache[charcode];\n if (glyph?.isSpace === isSpace) {\n return glyph;\n }\n let fontCharCode, width, operatorListId;\n let widthCode = charcode;\n if (this.cMap?.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\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?.[widthCode];\n let unicode = this.toUnicode.get(charcode) || charcode;\n if (typeof unicode === \"number\") {\n unicode = String.fromCharCode(unicode);\n }\n let isInFont = this.toFontChar[charcode] !== undefined;\n fontCharCode = this.toFontChar[charcode] || charcode;\n if (this.missingFile) {\n const glyphName = this.differences[charcode] || this.defaultEncoding[charcode];\n if ((glyphName === \".notdef\" || glyphName === \"\") && this.type === \"Type1\") {\n fontCharCode = 0x20;\n if (glyphName === \"\") {\n width ||= this._spaceWidth;\n unicode = String.fromCharCode(fontCharCode);\n }\n }\n fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n }\n if (this.isType3Font) {\n operatorListId = fontCharCode;\n }\n let accent = null;\n if (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 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 if (this.missingFile && this.vertical && fontChar.length === 1) {\n const vertical = getVerticalPresentationForm()[fontChar.charCodeAt(0)];\n if (vertical) {\n fontChar = unicode = String.fromCharCode(vertical);\n }\n }\n glyph = new fonts_Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont);\n return this._glyphCache[charcode] = glyph;\n }\n charsToGlyphs(chars) {\n let glyphs = this._charsCache[chars];\n if (glyphs) {\n return glyphs;\n }\n glyphs = [];\n if (this.cMap) {\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 {\n charcode,\n length\n } = c;\n i += length;\n const glyph = this._charToGlyph(charcode, length === 1 && chars.charCodeAt(i - 1) === 0x20);\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 return this._charsCache[chars] = glyphs;\n }\n getCharPositions(chars) {\n const positions = [];\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 return positions;\n }\n get glyphCacheValues() {\n return Object.values(this._glyphCache);\n }\n encodeString(str) {\n const buffers = [];\n const currentBuf = [];\n const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n const getCharCode = this.toUnicode instanceof IdentityToUnicodeMap ? unicode => this.toUnicode.charCodeOf(unicode) : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\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 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 ? this.cMap.getCharCodeLength(charCode) : 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 if (!hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n currentBuf.push(String.fromCodePoint(unicode));\n }\n buffers.push(currentBuf.join(\"\"));\n return buffers;\n }\n}\nclass ErrorFont {\n constructor(error) {\n this.error = error;\n this.loadedName = \"g_font_error\";\n this.missingFile = true;\n }\n charsToGlyphs() {\n return [];\n }\n encodeString(chars) {\n return [chars];\n }\n exportData(extraProperties = false) {\n return {\n error: this.error\n };\n }\n}\n\n;// ./src/core/pattern.js\n\n\n\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};\nclass Pattern {\n constructor() {\n unreachable(\"Cannot initialize Pattern.\");\n }\n static parseShading(shading, xref, res, pdfFunctionFactory, localColorSpaceCache) {\n const dict = shading instanceof BaseStream ? shading.dict : shading;\n const type = dict.get(\"ShadingType\");\n try {\n switch (type) {\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n return new RadialAxialShading(dict, xref, res, pdfFunctionFactory, localColorSpaceCache);\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(shading, xref, res, pdfFunctionFactory, localColorSpaceCache);\n default:\n throw new FormatError(\"Unsupported ShadingType: \" + type);\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(ex);\n return new DummyShading();\n }\n }\n}\nclass BaseShading {\n static SMALL_NUMBER = 1e-6;\n getIR() {\n unreachable(\"Abstract method `getIR` called.\");\n }\n}\nclass RadialAxialShading extends BaseShading {\n constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n super();\n this.shadingType = dict.get(\"ShadingType\");\n let coordsLen = 0;\n if (this.shadingType === ShadingType.AXIAL) {\n coordsLen = 4;\n } else if (this.shadingType === ShadingType.RADIAL) {\n coordsLen = 6;\n }\n this.coordsArr = dict.getArray(\"Coords\");\n if (!isNumberArray(this.coordsArr, coordsLen)) {\n throw new FormatError(\"RadialAxialShading: Invalid /Coords array.\");\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.bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n let t0 = 0.0,\n t1 = 1.0;\n const domainArr = dict.getArray(\"Domain\");\n if (isNumberArray(domainArr, 2)) {\n [t0, t1] = domainArr;\n }\n let extendStart = false,\n extendEnd = false;\n const extendArr = dict.getArray(\"Extend\");\n if (isBooleanArray(extendArr, 2)) {\n [extendStart, extendEnd] = extendArr;\n }\n if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) {\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 this.extendStart = extendStart;\n this.extendEnd = extendEnd;\n const fnObj = dict.getRaw(\"Function\");\n const fn = pdfFunctionFactory.createFromArray(fnObj);\n const NUMBER_OF_SAMPLES = 840;\n const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n const colorStops = this.colorStops = [];\n if (t0 >= t1 || step <= 0) {\n info(\"Bad shading domain.\");\n return;\n }\n const color = new Float32Array(cs.numComps),\n ratio = new Float32Array(1);\n let rgbColor;\n let iBase = 0;\n ratio[0] = t0;\n fn(ratio, 0, color, 0);\n let rgbBase = cs.getRgb(color, 0);\n const cssColorBase = Util.makeHexColor(rgbBase[0], rgbBase[1], rgbBase[2]);\n colorStops.push([0, cssColorBase]);\n let iPrev = 1;\n ratio[0] = t0 + step;\n fn(ratio, 0, color, 0);\n let rgbPrev = cs.getRgb(color, 0);\n let maxSlopeR = rgbPrev[0] - rgbBase[0] + 1;\n let maxSlopeG = rgbPrev[1] - rgbBase[1] + 1;\n let maxSlopeB = rgbPrev[2] - rgbBase[2] + 1;\n let minSlopeR = rgbPrev[0] - rgbBase[0] - 1;\n let minSlopeG = rgbPrev[1] - rgbBase[1] - 1;\n let minSlopeB = rgbPrev[2] - rgbBase[2] - 1;\n for (let i = 2; 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 run = i - iBase;\n maxSlopeR = Math.min(maxSlopeR, (rgbColor[0] - rgbBase[0] + 1) / run);\n maxSlopeG = Math.min(maxSlopeG, (rgbColor[1] - rgbBase[1] + 1) / run);\n maxSlopeB = Math.min(maxSlopeB, (rgbColor[2] - rgbBase[2] + 1) / run);\n minSlopeR = Math.max(minSlopeR, (rgbColor[0] - rgbBase[0] - 1) / run);\n minSlopeG = Math.max(minSlopeG, (rgbColor[1] - rgbBase[1] - 1) / run);\n minSlopeB = Math.max(minSlopeB, (rgbColor[2] - rgbBase[2] - 1) / run);\n const slopesExist = minSlopeR <= maxSlopeR && minSlopeG <= maxSlopeG && minSlopeB <= maxSlopeB;\n if (!slopesExist) {\n const cssColor = Util.makeHexColor(rgbPrev[0], rgbPrev[1], rgbPrev[2]);\n colorStops.push([iPrev / NUMBER_OF_SAMPLES, cssColor]);\n maxSlopeR = rgbColor[0] - rgbPrev[0] + 1;\n maxSlopeG = rgbColor[1] - rgbPrev[1] + 1;\n maxSlopeB = rgbColor[2] - rgbPrev[2] + 1;\n minSlopeR = rgbColor[0] - rgbPrev[0] - 1;\n minSlopeG = rgbColor[1] - rgbPrev[1] - 1;\n minSlopeB = rgbColor[2] - rgbPrev[2] - 1;\n iBase = iPrev;\n rgbBase = rgbPrev;\n }\n iPrev = i;\n rgbPrev = rgbColor;\n }\n const cssColor = Util.makeHexColor(rgbPrev[0], rgbPrev[1], rgbPrev[2]);\n colorStops.push([1, cssColor]);\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 if (!extendStart) {\n colorStops.unshift([0, background]);\n colorStops[1][0] += BaseShading.SMALL_NUMBER;\n }\n if (!extendEnd) {\n colorStops.at(-1)[0] -= BaseShading.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n this.colorStops = colorStops;\n }\n getIR() {\n const {\n coordsArr,\n shadingType\n } = this;\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 return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n }\n}\nclass MeshStreamReader {\n constructor(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n const numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n const csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;\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 readBits(n) {\n let buffer = this.buffer;\n let bufferLength = this.bufferLength;\n if (n === 32) {\n if (bufferLength === 0) {\n return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0;\n }\n buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte();\n const nextByte = this.stream.getByte();\n this.buffer = nextByte & (1 << bufferLength) - 1;\n return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0;\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 align() {\n this.buffer = 0;\n this.bufferLength = 0;\n }\n readFlag() {\n return this.readBits(this.context.bitsPerFlag);\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 = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10;\n return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]];\n }\n readComponents() {\n const numComps = this.context.numComps;\n const bitsPerComponent = this.context.bitsPerComponent;\n const scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10;\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}\nlet bCache = Object.create(null);\nfunction 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(new Float32Array([t_ ** 3, 3 * t * t_ ** 2, 3 * t ** 2 * t_, t ** 3]));\n }\n return lut;\n}\nfunction getB(count) {\n return bCache[count] ||= buildB(count);\n}\nfunction clearPatternCaches() {\n bCache = Object.create(null);\n}\nclass MeshShading extends BaseShading {\n static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n static TRIANGLE_DENSITY = 20;\n constructor(stream, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\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 this.bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\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\") ? cs.getRgb(dict.get(\"Background\"), 0) : null;\n const fnObj = dict.getRaw(\"Function\");\n const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n this.coords = [];\n this.colors = [];\n this.figures = [];\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 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 if (patchMesh) {\n this._updateBounds();\n for (let i = 0, ii = this.figures.length; i < ii; i++) {\n this._buildFigureFromPatch(i);\n }\n }\n this._updateBounds();\n this._packData();\n }\n _decodeType4Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const operators = [];\n const ps = [];\n let verticesLeft = 0;\n while (reader.hasData) {\n const f = reader.readFlag();\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n if (verticesLeft === 0) {\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.at(-2), ps.at(-1));\n verticesLeft = 1;\n break;\n case 2:\n ps.push(ps.at(-3), ps.at(-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 reader.align();\n }\n this.figures.push({\n type: \"triangles\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps)\n });\n }\n _decodeType5Shading(reader, verticesPerRow) {\n const coords = this.coords;\n const colors = this.colors;\n const 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 _decodeType6Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16);\n const cs = new Int32Array(4);\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 case 0:\n ps[12] = pi + 3;\n ps[13] = pi + 4;\n ps[14] = pi + 5;\n ps[15] = pi + 6;\n ps[8] = pi + 2;\n ps[11] = pi + 7;\n ps[4] = pi + 1;\n ps[7] = pi + 8;\n ps[0] = pi;\n ps[1] = pi + 11;\n ps[2] = pi + 10;\n ps[3] = pi + 9;\n cs[2] = ci + 1;\n cs[3] = ci + 2;\n cs[0] = ci;\n cs[1] = ci + 3;\n break;\n case 1:\n tmp1 = ps[12];\n tmp2 = ps[13];\n tmp3 = ps[14];\n tmp4 = ps[15];\n ps[12] = tmp4;\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = tmp3;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[2];\n tmp2 = cs[3];\n cs[2] = tmp2;\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[7];\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1];\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n case 3:\n ps[12] = ps[0];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[1];\n ps[11] = pi + 3;\n ps[4] = ps[2];\n ps[7] = pi + 4;\n ps[0] = ps[3];\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n cs[2] = cs[0];\n cs[3] = ci;\n cs[0] = cs[1];\n cs[1] = ci + 1;\n break;\n }\n ps[5] = coords.length;\n coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]);\n ps[6] = coords.length;\n coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]);\n ps[9] = coords.length;\n coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]);\n ps[10] = coords.length;\n coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]);\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps),\n colors: new Int32Array(cs)\n });\n }\n }\n _decodeType7Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16);\n const cs = new Int32Array(4);\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 case 0:\n ps[12] = pi + 3;\n ps[13] = pi + 4;\n ps[14] = pi + 5;\n ps[15] = pi + 6;\n ps[8] = pi + 2;\n ps[9] = pi + 13;\n ps[10] = pi + 14;\n ps[11] = pi + 7;\n ps[4] = pi + 1;\n ps[5] = pi + 12;\n ps[6] = pi + 15;\n ps[7] = pi + 8;\n ps[0] = pi;\n ps[1] = pi + 11;\n ps[2] = pi + 10;\n ps[3] = pi + 9;\n cs[2] = ci + 1;\n cs[3] = ci + 2;\n cs[0] = ci;\n cs[1] = ci + 3;\n break;\n case 1:\n tmp1 = ps[12];\n tmp2 = ps[13];\n tmp3 = ps[14];\n tmp4 = ps[15];\n ps[12] = tmp4;\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = tmp3;\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[2];\n tmp2 = cs[3];\n cs[2] = tmp2;\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[7];\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = tmp2;\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = tmp1;\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1];\n cs[3] = ci;\n cs[0] = tmp1;\n cs[1] = ci + 1;\n break;\n case 3:\n ps[12] = ps[0];\n ps[13] = pi + 0;\n ps[14] = pi + 1;\n ps[15] = pi + 2;\n ps[8] = ps[1];\n ps[9] = pi + 9;\n ps[10] = pi + 10;\n ps[11] = pi + 3;\n ps[4] = ps[2];\n ps[5] = pi + 8;\n ps[6] = pi + 11;\n ps[7] = pi + 4;\n ps[0] = ps[3];\n ps[1] = pi + 7;\n ps[2] = pi + 6;\n ps[3] = pi + 5;\n cs[2] = cs[0];\n cs[3] = ci;\n cs[0] = cs[1];\n cs[1] = ci + 1;\n break;\n }\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps),\n colors: new Int32Array(cs)\n });\n }\n }\n _buildFigureFromPatch(index) {\n const figure = this.figures[index];\n assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n const coords = this.coords,\n colors = this.colors;\n const pi = figure.coords;\n const ci = figure.colors;\n const figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n const figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n const figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n const figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n let splitXBy = Math.ceil((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY / (this.bounds[2] - this.bounds[0]));\n splitXBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy));\n let splitYBy = Math.ceil((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY / (this.bounds[3] - this.bounds[1]));\n splitYBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy));\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 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 for (let col = 0; col <= splitXBy; col++, k++) {\n if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {\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 this.figures[index] = {\n type: \"lattice\",\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow\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 _packData() {\n let i, ii, j, jj;\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 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 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 getIR() {\n const {\n bounds\n } = this;\n if (bounds[2] - bounds[0] === 0 || bounds[3] - bounds[1] === 0) {\n throw new FormatError(`Invalid MeshShading bounds: [${bounds}].`);\n }\n return [\"Mesh\", this.shadingType, this.coords, this.colors, this.figures, bounds, this.bbox, this.background];\n }\n}\nclass DummyShading extends BaseShading {\n getIR() {\n return [\"Dummy\"];\n }\n}\nfunction getTilingPatternIR(operatorList, dict, color) {\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n const bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n if (!bbox || bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n throw new FormatError(`Invalid getTilingPatternIR /BBox array.`);\n }\n const xstep = dict.get(\"XStep\");\n if (typeof xstep !== \"number\") {\n throw new FormatError(`Invalid getTilingPatternIR /XStep value.`);\n }\n const ystep = dict.get(\"YStep\");\n if (typeof ystep !== \"number\") {\n throw new FormatError(`Invalid getTilingPatternIR /YStep value.`);\n }\n const paintType = dict.get(\"PaintType\");\n if (!Number.isInteger(paintType)) {\n throw new FormatError(`Invalid getTilingPatternIR /PaintType value.`);\n }\n const tilingType = dict.get(\"TilingType\");\n if (!Number.isInteger(tilingType)) {\n throw new FormatError(`Invalid getTilingPatternIR /TilingType value.`);\n }\n return [\"TilingPattern\", color, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];\n}\n\n;// ./src/core/calibri_factors.js\nconst CalibriBoldFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943, 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638, 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriBoldMetrics = {\n lineHeight: 1.2207,\n lineGap: 0.2207\n};\nconst CalibriBoldItalicFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795, 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908, 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411, 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289, 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921, 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958, 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387, 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346, 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356, 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938, 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733, 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988, 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 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, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794, 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527, 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriBoldItalicMetrics = {\n lineHeight: 1.2207,\n lineGap: 0.2207\n};\nconst CalibriItalicFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105, 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118, 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776, 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306, 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824, 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249, 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782, 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516, 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297, 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 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, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309, 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055, 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriItalicMetrics = {\n lineHeight: 1.2207,\n lineGap: 0.2207\n};\nconst CalibriRegularFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128, 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469, 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284, 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469, 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105, 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122, 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692, 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128, 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275, 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122, 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772, 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018, 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181, 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 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, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriRegularMetrics = {\n lineHeight: 1.2207,\n lineGap: 0.2207\n};\n\n;// ./src/core/helvetica_factors.js\nconst HelveticaBoldFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006, 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaBoldMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\nconst HelveticaBoldItalicFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998, 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022, 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064, 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064, 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948, 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035, 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001, 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999, 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaBoldItalicMetrics = {\n lineHeight: 1.35,\n lineGap: 0.2\n};\nconst HelveticaItalicFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022, 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1, 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945, 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036, 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954, 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaItalicMetrics = {\n lineHeight: 1.35,\n lineGap: 0.2\n};\nconst HelveticaRegularFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022, 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1, 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978, 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023, 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035, 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043, 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1, 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1, 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaRegularMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\n\n;// ./src/core/liberationsans_widths.js\nconst LiberationSansBoldWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906, 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722, 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278, 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278, 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753, 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556, 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730, 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556, 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417, 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487, 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333];\nconst LiberationSansBoldMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\nconst LiberationSansBoldItalicWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906, 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722, 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278, 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278, 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773, 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556, 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643, 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729, 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556, 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575, 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600, 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333];\nconst LiberationSansBoldItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\nconst LiberationSansItalicWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556, 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846, 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667, 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278, 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222, 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728, 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500, 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614, 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727, 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556, 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835, 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378, 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492, 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285];\nconst LiberationSansItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\nconst LiberationSansRegularWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556, 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838, 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667, 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278, 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222, 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713, 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500, 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740, 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556, 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365, 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489, 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285];\nconst LiberationSansRegularMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\n\n;// ./src/core/myriadpro_factors.js\nconst MyriadProBoldFactors = [1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938, 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019, 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 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, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169, 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595, 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, 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, 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, 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];\nconst MyriadProBoldMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\nconst MyriadProBoldItalicFactors = [1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582, 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655, 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222, 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605, 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058, 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168, 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236, 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276, 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074, 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729, 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216, 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783, 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651, 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275, 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927, 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655, 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275, 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276, 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646, 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, 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, 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, 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, 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896, 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026, 1.08595, 1.08595, 1, 1.08595, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst MyriadProBoldItalicMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\nconst MyriadProItalicFactors = [1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945, 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058, 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125, 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588, 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832, 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012, 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537, 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353, 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446, 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864, 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424, 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882, 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1, 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475, 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866, 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773, 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012, 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901, 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947, 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588, 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701, 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787, 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737, 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859, 0.91123, 0.86799, 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, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219, 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233, 1.08595, 1.08595, 1, 1.08595, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst MyriadProItalicMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\nconst MyriadProRegularFactors = [1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002, 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051, 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761, 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231, 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034, 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519, 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339, 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023, 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611, 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896, 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224, 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284, 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377, 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441, 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991, 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936, 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226, 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297, 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157, 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088, 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938, 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007, 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 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, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903, 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241, 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1, 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1, 1.08595, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst MyriadProRegularMetrics = {\n lineHeight: 1.2,\n lineGap: 0.2\n};\n\n;// ./src/core/segoeui_factors.js\nconst SegoeuiBoldFactors = [1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406, 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826, 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1, 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418, 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167, 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1, 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, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511, 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004, 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, 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, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst SegoeuiBoldMetrics = {\n lineHeight: 1.33008,\n lineGap: 0\n};\nconst SegoeuiBoldItalicFactors = [1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953, 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378, 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723, 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128, 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042, 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107, 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754, 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047, 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429, 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236, 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042, 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552, 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641, 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168, 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385, 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126, 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815, 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552, 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945, 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961, 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514, 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 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, 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, 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1, 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1, 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004, 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, 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, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst SegoeuiBoldItalicMetrics = {\n lineHeight: 1.33008,\n lineGap: 0\n};\nconst SegoeuiItalicFactors = [1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373, 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308, 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016, 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989, 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143, 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627, 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225, 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748, 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781, 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971, 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146, 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225, 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454, 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1, 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043, 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498, 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965, 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642, 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284, 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205, 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679, 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675, 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973, 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621, 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622, 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 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, 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, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst SegoeuiItalicMetrics = {\n lineHeight: 1.33008,\n lineGap: 0\n};\nconst SegoeuiRegularFactors = [1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985, 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084, 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831, 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968, 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484, 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399, 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912, 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808, 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734, 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714, 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923, 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093, 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444, 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571, 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771, 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572, 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491, 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424, 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424, 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087, 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205, 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1, 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, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965, 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196, 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238, 1.24822, 1.24822, 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, 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, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1, 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst SegoeuiRegularMetrics = {\n lineHeight: 1.33008,\n lineGap: 0\n};\n\n;// ./src/core/xfa_fonts.js\n\n\n\n\n\n\n\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\"] = t[\"MyriadPro-Italic\"] = t[\"PdfJS-Fallback-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: MyriadProItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: MyriadProItalicMetrics\n };\n t[\"MyriadPro-BoldIt\"] = t[\"MyriadPro-BoldItalic\"] = t[\"PdfJS-Fallback-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: MyriadProBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: MyriadProBoldItalicMetrics\n };\n t.ArialMT = t.Arial = t[\"Arial-Regular\"] = {\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});\nfunction getXfaFontName(name) {\n const fontName = normalizeFontName(name);\n const fontMap = getXFAFontMap();\n return fontMap[fontName];\n}\nfunction getXfaFontWidths(name) {\n const info = getXfaFontName(name);\n if (!info) {\n return null;\n }\n const {\n baseWidths,\n baseMapping,\n factors\n } = info;\n const rescaledBaseWidths = !factors ? baseWidths : baseWidths.map((w, i) => w * factors[i]);\n let currentCode = -2;\n let currentArray;\n const newWidths = [];\n for (const [unicode, glyphIndex] of baseMapping.map((charUnicode, index) => [charUnicode, index]).sort(([unicode1], [unicode2]) => unicode1 - unicode2)) {\n if (unicode === -1) {\n continue;\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 return newWidths;\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(\"LastChar\", widths.at(-2) + widths.at(-1).length - 1);\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 return dict;\n}\n\n;// ./src/core/ps_parser.js\n\n\n\nclass PostScriptParser {\n constructor(lexer) {\n this.lexer = lexer;\n this.operators = [];\n this.token = null;\n this.prev = null;\n }\n nextToken() {\n this.prev = this.token;\n this.token = this.lexer.getToken();\n }\n accept(type) {\n if (this.token.type === type) {\n this.nextToken();\n return true;\n }\n return false;\n }\n expect(type) {\n if (this.accept(type)) {\n return true;\n }\n throw new FormatError(`Unexpected symbol: found ${this.token.type} expected ${type}.`);\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 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 parseCondition() {\n const conditionLocation = this.operators.length;\n this.operators.push(null, null);\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n if (this.accept(PostScriptTokenTypes.IF)) {\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 this.operators[jumpLocation] = this.operators.length;\n this.operators[jumpLocation + 1] = \"j\";\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}\nconst PostScriptTokenTypes = {\n LBRACE: 0,\n RBRACE: 1,\n NUMBER: 2,\n OPERATOR: 3,\n IF: 4,\n IFELSE: 5\n};\nclass PostScriptToken {\n static get opCache() {\n return shadow(this, \"opCache\", Object.create(null));\n }\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n static getOperator(op) {\n return PostScriptToken.opCache[op] ||= new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);\n }\n static get LBRACE() {\n return shadow(this, \"LBRACE\", new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\"));\n }\n static get RBRACE() {\n return shadow(this, \"RBRACE\", new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\"));\n }\n static get IF() {\n return shadow(this, \"IF\", new PostScriptToken(PostScriptTokenTypes.IF, \"IF\"));\n }\n static get IFELSE() {\n return shadow(this, \"IFELSE\", new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\"));\n }\n}\nclass PostScriptLexer {\n constructor(stream) {\n this.stream = stream;\n this.nextChar();\n this.strBuf = [];\n }\n nextChar() {\n return this.currentChar = this.stream.getByte();\n }\n getToken() {\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 === 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:\n case 0x31:\n case 0x32:\n case 0x33:\n case 0x34:\n case 0x35:\n case 0x36:\n case 0x37:\n case 0x38:\n case 0x39:\n case 0x2b:\n case 0x2d:\n case 0x2e:\n return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber());\n case 0x7b:\n this.nextChar();\n return PostScriptToken.LBRACE;\n case 0x7d:\n this.nextChar();\n return PostScriptToken.RBRACE;\n }\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5a || ch >= 0x61 && ch <= 0x7a)) {\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 getNumber() {\n let ch = this.currentChar;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= 0x30 && ch <= 0x39 || ch === 0x2d || ch === 0x2e) {\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\n;// ./src/core/image_utils.js\n\n\nclass BaseLocalCache {\n constructor(options) {\n this._onlyRefs = options?.onlyRefs === true;\n if (!this._onlyRefs) {\n this._nameRefMap = new Map();\n this._imageMap = new Map();\n }\n this._imageCache = new RefSetCache();\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 getByRef(ref) {\n return this._imageCache.get(ref) || null;\n }\n set(name, ref, data) {\n unreachable(\"Abstract method `set` called.\");\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 if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\nclass LocalColorSpaceCache extends BaseLocalCache {\n set(name = null, ref = null, data) {\n if (typeof name !== \"string\" && !ref) {\n throw new Error('LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n if (name !== null) {\n this._nameRefMap.set(name, ref);\n }\n this._imageCache.put(ref, data);\n return;\n }\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\nclass LocalFunctionCache extends BaseLocalCache {\n constructor(options) {\n super({\n 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}\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 if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\nclass LocalTilingPatternCache extends BaseLocalCache {\n constructor(options) {\n super({\n 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}\nclass RegionalImageCache extends BaseLocalCache {\n constructor(options) {\n super({\n onlyRefs: true\n });\n }\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('RegionalImageCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\nclass GlobalImageCache {\n static NUM_PAGES_THRESHOLD = 2;\n static MIN_IMAGES_TO_CACHE = 10;\n static MAX_BYTE_SIZE = 5 * MAX_IMAGE_SIZE_TO_CACHE;\n #decodeFailedSet = new RefSet();\n constructor() {\n this._refCache = new RefSetCache();\n this._imageCache = new RefSetCache();\n }\n get #byteSize() {\n let byteSize = 0;\n for (const imageData of this._imageCache) {\n byteSize += imageData.byteSize;\n }\n return byteSize;\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 shouldCache(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 if (pageIndexSet.size < 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 addDecodeFailed(ref) {\n this.#decodeFailedSet.put(ref);\n }\n hasDecodeFailed(ref) {\n return this.#decodeFailedSet.has(ref);\n }\n addByteSize(ref, byteSize) {\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return;\n }\n if (imageData.byteSize) {\n return;\n }\n imageData.byteSize = byteSize;\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 pageIndexSet.add(pageIndex);\n return imageData;\n }\n setData(ref, data) {\n if (!this._refCache.has(ref)) {\n throw new Error('GlobalImageCache.setData - expected \"shouldCache\" to have been called.');\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 clear(onlyData = false) {\n if (!onlyData) {\n this.#decodeFailedSet.clear();\n this._refCache.clear();\n }\n this._imageCache.clear();\n }\n}\n\n;// ./src/core/function.js\n\n\n\n\n\n\nclass PDFFunctionFactory {\n constructor({\n xref,\n isEvalSupported = true\n }) {\n this.xref = xref;\n this.isEvalSupported = isEvalSupported !== false;\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 this._cache(fn, parsedFunction);\n return parsedFunction;\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 this._cache(fnObj, parsedFunction);\n return parsedFunction;\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?.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 _cache(cacheKey, parsedFunction) {\n if (!parsedFunction) {\n throw new Error('PDFFunctionFactory._cache - expected \"parsedFunction\" argument.');\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?.objId;\n }\n if (fnRef) {\n this._localFunctionCache.set(null, fnRef, parsedFunction);\n }\n }\n get _localFunctionCache() {\n return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n }\n}\nfunction toNumberArray(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n if (!isNumberArray(arr, null)) {\n return arr.map(x => +x);\n }\n return arr;\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 const array = new Array(length);\n let codeSize = 0;\n let codeBuf = 0;\n const sampleMul = 1.0 / (2.0 ** bps - 1);\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 static parse({\n xref,\n isEvalSupported,\n fn\n }) {\n const dict = fn.dict || fn;\n const typeNum = dict.get(\"FunctionType\");\n switch (typeNum) {\n case 0:\n return this.constructSampled({\n xref,\n isEvalSupported,\n fn,\n dict\n });\n case 1:\n break;\n case 2:\n return this.constructInterpolated({\n xref,\n isEvalSupported,\n dict\n });\n case 3:\n return this.constructStiched({\n xref,\n isEvalSupported,\n dict\n });\n case 4:\n return this.constructPostScript({\n xref,\n isEvalSupported,\n fn,\n dict\n });\n }\n throw new FormatError(\"Unknown type of function\");\n }\n static parseArray({\n xref,\n isEvalSupported,\n fnObj\n }) {\n if (!Array.isArray(fnObj)) {\n return this.parse({\n xref,\n isEvalSupported,\n fn: fnObj\n });\n }\n const fnArray = [];\n for (const fn of fnObj) {\n fnArray.push(this.parse({\n xref,\n isEvalSupported,\n fn: xref.fetchIfRef(fn)\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 static constructSampled({\n xref,\n isEvalSupported,\n fn,\n dict\n }) {\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 function interpolate(x, xmin, xmax, ymin, ymax) {\n return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n }\n let domain = toNumberArray(dict.getArray(\"Domain\"));\n let range = toNumberArray(dict.getArray(\"Range\"));\n if (!domain || !range) {\n throw new FormatError(\"No domain or range\");\n }\n const inputSize = domain.length / 2;\n const outputSize = range.length / 2;\n domain = toMultiArray(domain);\n range = toMultiArray(range);\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 info(\"No support for cubic spline interpolation: \" + order);\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 let decode = toNumberArray(dict.getArray(\"Decode\"));\n decode = !decode ? range : toMultiArray(decode);\n const samples = this.getSampleArray(size, outputSize, bps, fn);\n return function constructSampledFn(src, srcOffset, dest, destOffset) {\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 let k = outputSize,\n pos = 1;\n for (i = 0; i < inputSize; ++i) {\n const domain_2i = domain[i][0];\n const domain_2i_1 = domain[i][1];\n const xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1);\n let e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]);\n const size_i = size[i];\n e = Math.min(Math.max(e, 0), size_i - 1);\n const e0 = e < size_i - 1 ? Math.floor(e) : e - 1;\n const n0 = e0 + 1 - e;\n const n1 = e - e0;\n const offset0 = e0 * k;\n const offset1 = offset0 + 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 k *= size_i;\n pos <<= 1;\n }\n for (j = 0; j < outputSize; ++j) {\n let rj = 0;\n for (i = 0; i < cubeVertices; i++) {\n rj += samples[cubeVertex[i] + j] * cubeN[i];\n }\n rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n }\n };\n }\n static constructInterpolated({\n xref,\n isEvalSupported,\n dict\n }) {\n const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n const n = dict.get(\"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 return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n for (let j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + x * diff[j];\n }\n };\n }\n static constructStiched({\n xref,\n isEvalSupported,\n dict\n }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n if (!domain) {\n throw new FormatError(\"No domain\");\n }\n const inputSize = domain.length / 2;\n if (inputSize !== 1) {\n throw new FormatError(\"Bad domain for stiched function\");\n }\n const fns = [];\n for (const fn of dict.get(\"Functions\")) {\n fns.push(this.parse({\n xref,\n isEvalSupported,\n fn: xref.fetchIfRef(fn)\n }));\n }\n const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n const encode = toNumberArray(dict.getArray(\"Encode\"));\n const tmpBuf = new Float32Array(1);\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 const v = clip(src[srcOffset], domain[0], domain[1]);\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 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 const rmin = encode[2 * i];\n const rmax = encode[2 * i + 1];\n tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);\n fns[i](tmpBuf, 0, dest, destOffset);\n };\n }\n static constructPostScript({\n xref,\n isEvalSupported,\n fn,\n dict\n }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n const range = toNumberArray(dict.getArray(\"Range\"));\n if (!domain) {\n throw new FormatError(\"No domain.\");\n }\n if (!range) {\n throw new FormatError(\"No range.\");\n }\n const lexer = new PostScriptLexer(fn);\n const parser = new PostScriptParser(lexer);\n const code = parser.parse();\n if (isEvalSupported && FeatureTest.isEvalSupported) {\n const compiled = new PostScriptCompiler().compile(code, domain, range);\n if (compiled) {\n return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n }\n }\n info(\"Unable to compile PS function\");\n const numOutputs = range.length >> 1;\n const numInputs = domain.length >> 1;\n const evaluator = new PostScriptEvaluator(code);\n const cache = Object.create(null);\n const MAX_CACHE_SIZE = 2048 * 4;\n let cache_available = MAX_CACHE_SIZE;\n const tmpBuf = new Float32Array(numInputs);\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 const cachedValue = cache[key];\n if (cachedValue !== undefined) {\n dest.set(cachedValue, destOffset);\n return;\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}\nfunction isPDFFunction(v) {\n let fnDict;\n 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}\nclass PostScriptStack {\n static MAX_STACK_SIZE = 100;\n constructor(initialStack) {\n this.stack = initialStack ? Array.from(initialStack) : [];\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 pop() {\n if (this.stack.length <= 0) {\n throw new Error(\"PostScript function stack underflow.\");\n }\n return this.stack.pop();\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 index(n) {\n this.push(this.stack[this.stack.length - n - 1]);\n }\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 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}\nclass PostScriptEvaluator {\n constructor(operators) {\n this.operators = operators;\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 stack.push(operator);\n continue;\n }\n switch (operator) {\n case \"jz\":\n b = stack.pop();\n a = stack.pop();\n if (!a) {\n counter = b;\n }\n break;\n case \"j\":\n a = stack.pop();\n counter = a;\n break;\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 b = stack.pop();\n a = stack.pop();\n a = Math.atan2(a, b) / Math.PI * 180;\n if (a < 0) {\n a += 360;\n }\n stack.push(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 % 360 / 180 * Math.PI));\n break;\n case \"cvi\":\n a = stack.pop() | 0;\n stack.push(a);\n break;\n case \"cvr\":\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.log10(a));\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 % 360 / 180 * Math.PI));\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}\nclass AstNode {\n constructor(type) {\n this.type = type;\n }\n visit(visitor) {\n unreachable(\"abstract method\");\n }\n}\nclass 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 visit(visitor) {\n visitor.visitArgument(this);\n }\n}\nclass AstLiteral extends AstNode {\n constructor(number) {\n super(\"literal\");\n this.number = number;\n this.min = number;\n this.max = number;\n }\n visit(visitor) {\n visitor.visitLiteral(this);\n }\n}\nclass 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 visit(visitor) {\n visitor.visitBinaryOperation(this);\n }\n}\nclass 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 visit(visitor) {\n visitor.visitMin(this);\n }\n}\nclass 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 visit(visitor) {\n visitor.visitVariable(this);\n }\n}\nclass AstVariableDefinition extends AstNode {\n constructor(variable, arg) {\n super(\"definition\");\n this.variable = variable;\n this.arg = arg;\n }\n visit(visitor) {\n visitor.visitVariableDefinition(this);\n }\n}\nclass ExpressionBuilderVisitor {\n constructor() {\n this.parts = [];\n }\n visitArgument(arg) {\n this.parts.push(\"Math.max(\", arg.min, \", Math.min(\", arg.max, \", src[srcOffset + \", arg.index, \"]))\");\n }\n visitVariable(variable) {\n this.parts.push(\"v\", variable.index);\n }\n visitLiteral(literal) {\n this.parts.push(literal.number);\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 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 visitMin(max) {\n this.parts.push(\"Math.min(\");\n max.arg.visit(this);\n this.parts.push(\", \", max.max, \")\");\n }\n toString() {\n return this.parts.join(\"\");\n }\n}\nfunction buildAddOperation(num1, num2) {\n if (num2.type === \"literal\" && num2.number === 0) {\n return num1;\n }\n if (num1.type === \"literal\" && num1.number === 0) {\n return num2;\n }\n if (num2.type === \"literal\" && num1.type === \"literal\") {\n return new AstLiteral(num1.number + num2.number);\n }\n return new AstBinaryOperation(\"+\", num1, num2, num1.min + num2.min, num1.max + num2.max);\n}\nfunction buildMulOperation(num1, num2) {\n if (num2.type === \"literal\") {\n if (num2.number === 0) {\n return new AstLiteral(0);\n } else if (num2.number === 1) {\n return num1;\n } else if (num1.type === \"literal\") {\n return new AstLiteral(num1.number * num2.number);\n }\n }\n if (num1.type === \"literal\") {\n if (num1.number === 0) {\n return new AstLiteral(0);\n } else if (num1.number === 1) {\n return num2;\n }\n }\n const min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);\n const max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);\n return new AstBinaryOperation(\"*\", num1, num2, min, max);\n}\nfunction buildSubOperation(num1, num2) {\n if (num2.type === \"literal\") {\n if (num2.number === 0) {\n return num1;\n } else if (num1.type === \"literal\") {\n return new AstLiteral(num1.number - num2.number);\n }\n }\n if (num2.type === \"binary\" && num2.op === \"-\" && num1.type === \"literal\" && num1.number === 1 && num2.arg1.type === \"literal\" && num2.arg1.number === 1) {\n return num2.arg2;\n }\n return new AstBinaryOperation(\"-\", num1, num2, num1.min - num2.max, num1.max - num2.min);\n}\nfunction buildMinOperation(num1, max) {\n if (num1.min >= max) {\n return new AstLiteral(max);\n } else if (num1.max <= max) {\n return num1;\n }\n return new AstMin(num1, max);\n}\nclass 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 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 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 (typeof code[i + 1] === \"number\" && code[i + 2] === \"gt\" && code[i + 3] === i + 7 && code[i + 4] === \"jz\" && code[i + 5] === \"pop\" && code[i + 6] === code[i + 1]) {\n num1 = stack.pop();\n stack.push(buildMinOperation(num1, code[i + 1]));\n i += 6;\n break;\n }\n ast1 = stack.at(-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 - 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 return null;\n }\n j = num2.number;\n n = num1.number;\n if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) {\n return null;\n }\n j = (j % n + n) % n;\n if (j === 0) {\n break;\n }\n stack.push(...stack.splice(stack.length - n, n - j));\n break;\n default:\n return null;\n }\n }\n if (stack.length !== outputSize) {\n return null;\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;// ./src/core/bidi.js\n\nconst baseTypes = [\"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\", \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\", \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\", \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"];\nconst arabicTypes = [\"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\", \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"];\nfunction isOdd(i) {\n return (i & 1) !== 0;\n}\nfunction isEven(i) {\n return (i & 1) === 0;\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}\nfunction setValues(arr, start, end, value) {\n for (let j = start; j < end; ++j) {\n arr[j] = value;\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}\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 {\n str,\n dir\n };\n}\nconst chars = [];\nconst types = [];\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 chars.length = strLength;\n types.length = strLength;\n let numBidi = 0;\n let i, ii;\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\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 || 0xfb50 <= charCode && charCode <= 0xfdff || 0xfe70 <= charCode && charCode <= 0xfeff) {\n charType = \"AL\";\n }\n if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n numBidi++;\n }\n types[i] = charType;\n }\n if (numBidi === 0) {\n isLTR = true;\n return createBidiText(str, isLTR);\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 const levels = [];\n for (i = 0; i < strLength; ++i) {\n levels[i] = startLevel;\n }\n const e = isOdd(startLevel) ? \"R\" : \"L\";\n const sor = e;\n const eor = sor;\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 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 for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"AL\") {\n types[i] = \"R\";\n }\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 (types[i] === \"CS\" && (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") && types[i + 1] === types[i - 1]) {\n types[i] = types[i - 1];\n }\n }\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"EN\") {\n for (let j = i - 1; j >= 0; --j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\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 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 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 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 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;\n }\n }\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n types[i] = e;\n }\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 if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n levels[i] += 1;\n }\n }\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 for (level = highestLevel; level >= lowestOddLevel; --level) {\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 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\n;// ./src/core/font_substitutions.js\n\n\n\nconst NORMAL = {\n style: \"normal\",\n weight: \"normal\"\n};\nconst BOLD = {\n style: \"normal\",\n weight: \"bold\"\n};\nconst ITALIC = {\n style: \"italic\",\n weight: \"normal\"\n};\nconst BOLDITALIC = {\n style: \"italic\",\n weight: \"bold\"\n};\nconst substitutionMap = new Map([[\"Times-Roman\", {\n local: [\"Times New Roman\", \"Times-Roman\", \"Times\", \"Liberation Serif\", \"Nimbus Roman\", \"Nimbus Roman L\", \"Tinos\", \"Thorndale\", \"TeX Gyre Termes\", \"FreeSerif\", \"Linux Libertine O\", \"Libertinus Serif\", \"DejaVu Serif\", \"Bitstream Vera Serif\", \"Ubuntu\"],\n style: NORMAL,\n ultimate: \"serif\"\n}], [\"Times-Bold\", {\n alias: \"Times-Roman\",\n style: BOLD,\n ultimate: \"serif\"\n}], [\"Times-Italic\", {\n alias: \"Times-Roman\",\n style: ITALIC,\n ultimate: \"serif\"\n}], [\"Times-BoldItalic\", {\n alias: \"Times-Roman\",\n style: BOLDITALIC,\n ultimate: \"serif\"\n}], [\"Helvetica\", {\n local: [\"Helvetica\", \"Helvetica Neue\", \"Arial\", \"Arial Nova\", \"Liberation Sans\", \"Arimo\", \"Nimbus Sans\", \"Nimbus Sans L\", \"A030\", \"TeX Gyre Heros\", \"FreeSans\", \"DejaVu Sans\", \"Albany\", \"Bitstream Vera Sans\", \"Arial Unicode MS\", \"Microsoft Sans Serif\", \"Apple Symbols\", \"Cantarell\"],\n path: \"LiberationSans-Regular.ttf\",\n style: NORMAL,\n ultimate: \"sans-serif\"\n}], [\"Helvetica-Bold\", {\n alias: \"Helvetica\",\n path: \"LiberationSans-Bold.ttf\",\n style: BOLD,\n ultimate: \"sans-serif\"\n}], [\"Helvetica-Oblique\", {\n alias: \"Helvetica\",\n path: \"LiberationSans-Italic.ttf\",\n style: ITALIC,\n ultimate: \"sans-serif\"\n}], [\"Helvetica-BoldOblique\", {\n alias: \"Helvetica\",\n path: \"LiberationSans-BoldItalic.ttf\",\n style: BOLDITALIC,\n ultimate: \"sans-serif\"\n}], [\"Courier\", {\n local: [\"Courier\", \"Courier New\", \"Liberation Mono\", \"Nimbus Mono\", \"Nimbus Mono L\", \"Cousine\", \"Cumberland\", \"TeX Gyre Cursor\", \"FreeMono\", \"Linux Libertine Mono O\", \"Libertinus Mono\"],\n style: NORMAL,\n ultimate: \"monospace\"\n}], [\"Courier-Bold\", {\n alias: \"Courier\",\n style: BOLD,\n ultimate: \"monospace\"\n}], [\"Courier-Oblique\", {\n alias: \"Courier\",\n style: ITALIC,\n ultimate: \"monospace\"\n}], [\"Courier-BoldOblique\", {\n alias: \"Courier\",\n style: BOLDITALIC,\n ultimate: \"monospace\"\n}], [\"ArialBlack\", {\n local: [\"Arial Black\"],\n style: {\n style: \"normal\",\n weight: \"900\"\n },\n fallback: \"Helvetica-Bold\"\n}], [\"ArialBlack-Bold\", {\n alias: \"ArialBlack\"\n}], [\"ArialBlack-Italic\", {\n alias: \"ArialBlack\",\n style: {\n style: \"italic\",\n weight: \"900\"\n },\n fallback: \"Helvetica-BoldOblique\"\n}], [\"ArialBlack-BoldItalic\", {\n alias: \"ArialBlack-Italic\"\n}], [\"ArialNarrow\", {\n local: [\"Arial Narrow\", \"Liberation Sans Narrow\", \"Helvetica Condensed\", \"Nimbus Sans Narrow\", \"TeX Gyre Heros Cn\"],\n style: NORMAL,\n fallback: \"Helvetica\"\n}], [\"ArialNarrow-Bold\", {\n alias: \"ArialNarrow\",\n style: BOLD,\n fallback: \"Helvetica-Bold\"\n}], [\"ArialNarrow-Italic\", {\n alias: \"ArialNarrow\",\n style: ITALIC,\n fallback: \"Helvetica-Oblique\"\n}], [\"ArialNarrow-BoldItalic\", {\n alias: \"ArialNarrow\",\n style: BOLDITALIC,\n fallback: \"Helvetica-BoldOblique\"\n}], [\"Calibri\", {\n local: [\"Calibri\", \"Carlito\"],\n style: NORMAL,\n fallback: \"Helvetica\"\n}], [\"Calibri-Bold\", {\n alias: \"Calibri\",\n style: BOLD,\n fallback: \"Helvetica-Bold\"\n}], [\"Calibri-Italic\", {\n alias: \"Calibri\",\n style: ITALIC,\n fallback: \"Helvetica-Oblique\"\n}], [\"Calibri-BoldItalic\", {\n alias: \"Calibri\",\n style: BOLDITALIC,\n fallback: \"Helvetica-BoldOblique\"\n}], [\"Wingdings\", {\n local: [\"Wingdings\", \"URW Dingbats\"],\n style: NORMAL\n}], [\"Wingdings-Regular\", {\n alias: \"Wingdings\"\n}], [\"Wingdings-Bold\", {\n alias: \"Wingdings\"\n}]]);\nconst fontAliases = new Map([[\"Arial-Black\", \"ArialBlack\"]]);\nfunction getStyleToAppend(style) {\n switch (style) {\n case BOLD:\n return \"Bold\";\n case ITALIC:\n return \"Italic\";\n case BOLDITALIC:\n return \"Bold Italic\";\n default:\n if (style?.weight === \"bold\") {\n return \"Bold\";\n }\n if (style?.style === \"italic\") {\n return \"Italic\";\n }\n }\n return \"\";\n}\nfunction getFamilyName(str) {\n const keywords = new Set([\"thin\", \"extralight\", \"ultralight\", \"demilight\", \"semilight\", \"light\", \"book\", \"regular\", \"normal\", \"medium\", \"demibold\", \"semibold\", \"bold\", \"extrabold\", \"ultrabold\", \"black\", \"heavy\", \"extrablack\", \"ultrablack\", \"roman\", \"italic\", \"oblique\", \"ultracondensed\", \"extracondensed\", \"condensed\", \"semicondensed\", \"normal\", \"semiexpanded\", \"expanded\", \"extraexpanded\", \"ultraexpanded\", \"bolditalic\"]);\n return str.split(/[- ,+]+/g).filter(tok => !keywords.has(tok.toLowerCase())).join(\" \");\n}\nfunction generateFont({\n alias,\n local,\n path,\n fallback,\n style,\n ultimate\n}, src, localFontPath, useFallback = true, usePath = true, append = \"\") {\n const result = {\n style: null,\n ultimate: null\n };\n if (local) {\n const extra = append ? ` ${append}` : \"\";\n for (const name of local) {\n src.push(`local(${name}${extra})`);\n }\n }\n if (alias) {\n const substitution = substitutionMap.get(alias);\n const aliasAppend = append || getStyleToAppend(style);\n Object.assign(result, generateFont(substitution, src, localFontPath, useFallback && !fallback, usePath && !path, aliasAppend));\n }\n if (style) {\n result.style = style;\n }\n if (ultimate) {\n result.ultimate = ultimate;\n }\n if (useFallback && fallback) {\n const fallbackInfo = substitutionMap.get(fallback);\n const {\n ultimate: fallbackUltimate\n } = generateFont(fallbackInfo, src, localFontPath, useFallback, usePath && !path, append);\n result.ultimate ||= fallbackUltimate;\n }\n if (usePath && path && localFontPath) {\n src.push(`url(${localFontPath}${path})`);\n }\n return result;\n}\nfunction getFontSubstitution(systemFontCache, idFactory, localFontPath, baseFontName, standardFontName, type) {\n if (baseFontName.startsWith(\"InvalidPDFjsFont_\")) {\n return null;\n }\n if ((type === \"TrueType\" || type === \"Type1\") && /^[A-Z]{6}\\+/.test(baseFontName)) {\n baseFontName = baseFontName.slice(7);\n }\n baseFontName = normalizeFontName(baseFontName);\n const key = baseFontName;\n let substitutionInfo = systemFontCache.get(key);\n if (substitutionInfo) {\n return substitutionInfo;\n }\n let substitution = substitutionMap.get(baseFontName);\n if (!substitution) {\n for (const [alias, subst] of fontAliases) {\n if (baseFontName.startsWith(alias)) {\n baseFontName = `${subst}${baseFontName.substring(alias.length)}`;\n substitution = substitutionMap.get(baseFontName);\n break;\n }\n }\n }\n let mustAddBaseFont = false;\n if (!substitution) {\n substitution = substitutionMap.get(standardFontName);\n mustAddBaseFont = true;\n }\n const loadedName = `${idFactory.getDocId()}_s${idFactory.createFontId()}`;\n if (!substitution) {\n if (!validateFontName(baseFontName)) {\n warn(`Cannot substitute the font because of its name: ${baseFontName}`);\n systemFontCache.set(key, null);\n return null;\n }\n const bold = /bold/gi.test(baseFontName);\n const italic = /oblique|italic/gi.test(baseFontName);\n const style = bold && italic && BOLDITALIC || bold && BOLD || italic && ITALIC || NORMAL;\n substitutionInfo = {\n css: `\"${getFamilyName(baseFontName)}\",${loadedName}`,\n guessFallback: true,\n loadedName,\n baseFontName,\n src: `local(${baseFontName})`,\n style\n };\n systemFontCache.set(key, substitutionInfo);\n return substitutionInfo;\n }\n const src = [];\n if (mustAddBaseFont && validateFontName(baseFontName)) {\n src.push(`local(${baseFontName})`);\n }\n const {\n style,\n ultimate\n } = generateFont(substitution, src, localFontPath);\n const guessFallback = ultimate === null;\n const fallback = guessFallback ? \"\" : `,${ultimate}`;\n substitutionInfo = {\n css: `\"${getFamilyName(baseFontName)}\",${loadedName}${fallback}`,\n guessFallback,\n loadedName,\n baseFontName,\n src: src.join(\",\"),\n style\n };\n systemFontCache.set(key, substitutionInfo);\n return substitutionInfo;\n}\n\n;// ./src/core/image_resizer.js\n\n\n\nconst MIN_IMAGE_DIM = 2048;\nconst MAX_IMAGE_DIM = 65537;\nconst MAX_ERROR = 128;\nclass ImageResizer {\n static #goodSquareLength = MIN_IMAGE_DIM;\n static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported;\n constructor(imgData, isMask) {\n this._imgData = imgData;\n this._isMask = isMask;\n }\n static get canUseImageDecoder() {\n return shadow(this, \"canUseImageDecoder\", this.#isImageDecoderSupported ? ImageDecoder.isTypeSupported(\"image/bmp\") : Promise.resolve(false));\n }\n static needsToBeResized(width, height) {\n if (width <= this.#goodSquareLength && height <= this.#goodSquareLength) {\n return false;\n }\n const {\n MAX_DIM\n } = this;\n if (width > MAX_DIM || height > MAX_DIM) {\n return true;\n }\n const area = width * height;\n if (this._hasMaxArea) {\n return area > this.MAX_AREA;\n }\n if (area < this.#goodSquareLength ** 2) {\n return false;\n }\n if (this._areGoodDims(width, height)) {\n this.#goodSquareLength = Math.max(this.#goodSquareLength, Math.floor(Math.sqrt(width * height)));\n return false;\n }\n this.#goodSquareLength = this._guessMax(this.#goodSquareLength, MAX_DIM, MAX_ERROR, 0);\n const maxArea = this.MAX_AREA = this.#goodSquareLength ** 2;\n return area > maxArea;\n }\n static get MAX_DIM() {\n return shadow(this, \"MAX_DIM\", this._guessMax(MIN_IMAGE_DIM, MAX_IMAGE_DIM, 0, 1));\n }\n static get MAX_AREA() {\n this._hasMaxArea = true;\n return shadow(this, \"MAX_AREA\", this._guessMax(this.#goodSquareLength, this.MAX_DIM, MAX_ERROR, 0) ** 2);\n }\n static set MAX_AREA(area) {\n if (area >= 0) {\n this._hasMaxArea = true;\n shadow(this, \"MAX_AREA\", area);\n }\n }\n static setOptions({\n canvasMaxAreaInBytes = -1,\n isImageDecoderSupported = false\n }) {\n if (!this._hasMaxArea) {\n this.MAX_AREA = canvasMaxAreaInBytes >> 2;\n }\n this.#isImageDecoderSupported = isImageDecoderSupported;\n }\n static _areGoodDims(width, height) {\n try {\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\");\n ctx.fillRect(0, 0, 1, 1);\n const opacity = ctx.getImageData(0, 0, 1, 1).data[3];\n canvas.width = canvas.height = 1;\n return opacity !== 0;\n } catch {\n return false;\n }\n }\n static _guessMax(start, end, tolerance, defaultHeight) {\n while (start + tolerance + 1 < end) {\n const middle = Math.floor((start + end) / 2);\n const height = defaultHeight || middle;\n if (this._areGoodDims(middle, height)) {\n start = middle;\n } else {\n end = middle;\n }\n }\n return start;\n }\n static async createImage(imgData, isMask = false) {\n return new ImageResizer(imgData, isMask)._createImage();\n }\n async _createImage() {\n const {\n _imgData: imgData\n } = this;\n const {\n width,\n height\n } = imgData;\n if (width * height * 4 > MAX_INT_32) {\n const result = this.#rescaleImageData();\n if (result) {\n return result;\n }\n }\n const data = this._encodeBMP();\n let decoder, imagePromise;\n if (await ImageResizer.canUseImageDecoder) {\n decoder = new ImageDecoder({\n data,\n type: \"image/bmp\",\n preferAnimation: false,\n transfer: [data.buffer]\n });\n imagePromise = decoder.decode().catch(reason => {\n warn(`BMP image decoding failed: ${reason}`);\n return createImageBitmap(new Blob([this._encodeBMP().buffer], {\n type: \"image/bmp\"\n }));\n }).finally(() => {\n decoder.close();\n });\n } else {\n imagePromise = createImageBitmap(new Blob([data.buffer], {\n type: \"image/bmp\"\n }));\n }\n const {\n MAX_AREA,\n MAX_DIM\n } = ImageResizer;\n const minFactor = Math.max(width / MAX_DIM, height / MAX_DIM, Math.sqrt(width * height / MAX_AREA));\n const firstFactor = Math.max(minFactor, 2);\n const factor = Math.round(10 * (minFactor + 1.25)) / 10 / firstFactor;\n const N = Math.floor(Math.log2(factor));\n const steps = new Array(N + 2).fill(2);\n steps[0] = firstFactor;\n steps.splice(-1, 1, factor / (1 << N));\n let newWidth = width;\n let newHeight = height;\n const result = await imagePromise;\n let bitmap = result.image || result;\n for (const step of steps) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n newWidth = Math.floor(newWidth / step) - 1;\n newHeight = Math.floor(newHeight / step) - 1;\n const canvas = new OffscreenCanvas(newWidth, newHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap.close();\n bitmap = canvas.transferToImageBitmap();\n }\n imgData.data = null;\n imgData.bitmap = bitmap;\n imgData.width = newWidth;\n imgData.height = newHeight;\n return imgData;\n }\n #rescaleImageData() {\n const {\n _imgData: imgData\n } = this;\n const {\n data,\n width,\n height,\n kind\n } = imgData;\n const rgbaSize = width * height * 4;\n const K = Math.ceil(Math.log2(rgbaSize / MAX_INT_32));\n const newWidth = width >> K;\n const newHeight = height >> K;\n let rgbaData;\n let maxHeight = height;\n try {\n rgbaData = new Uint8Array(rgbaSize);\n } catch {\n let n = Math.floor(Math.log2(rgbaSize + 1));\n while (true) {\n try {\n rgbaData = new Uint8Array(2 ** n - 1);\n break;\n } catch {\n n -= 1;\n }\n }\n maxHeight = Math.floor((2 ** n - 1) / (width * 4));\n const newSize = width * maxHeight * 4;\n if (newSize < rgbaData.length) {\n rgbaData = new Uint8Array(newSize);\n }\n }\n const src32 = new Uint32Array(rgbaData.buffer);\n const dest32 = new Uint32Array(newWidth * newHeight);\n let srcPos = 0;\n let newIndex = 0;\n const step = Math.ceil(height / maxHeight);\n const remainder = height % maxHeight === 0 ? height : height % maxHeight;\n for (let k = 0; k < step; k++) {\n const h = k < step - 1 ? maxHeight : remainder;\n ({\n srcPos\n } = convertToRGBA({\n kind,\n src: data,\n dest: src32,\n width,\n height: h,\n inverseDecode: this._isMask,\n srcPos\n }));\n for (let i = 0, ii = h >> K; i < ii; i++) {\n const buf = src32.subarray((i << K) * width);\n for (let j = 0; j < newWidth; j++) {\n dest32[newIndex++] = buf[j << K];\n }\n }\n }\n if (ImageResizer.needsToBeResized(newWidth, newHeight)) {\n imgData.data = dest32;\n imgData.width = newWidth;\n imgData.height = newHeight;\n imgData.kind = ImageKind.RGBA_32BPP;\n return null;\n }\n const canvas = new OffscreenCanvas(newWidth, newHeight);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.putImageData(new ImageData(new Uint8ClampedArray(dest32.buffer), newWidth, newHeight), 0, 0);\n imgData.data = null;\n imgData.bitmap = canvas.transferToImageBitmap();\n imgData.width = newWidth;\n imgData.height = newHeight;\n return imgData;\n }\n _encodeBMP() {\n const {\n width,\n height,\n kind\n } = this._imgData;\n let data = this._imgData.data;\n let bitPerPixel;\n let colorTable = new Uint8Array(0);\n let maskTable = colorTable;\n let compression = 0;\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n {\n bitPerPixel = 1;\n colorTable = new Uint8Array(this._isMask ? [255, 255, 255, 255, 0, 0, 0, 0] : [0, 0, 0, 0, 255, 255, 255, 255]);\n const rowLen = width + 7 >> 3;\n const rowSize = rowLen + 3 & -4;\n if (rowLen !== rowSize) {\n const newData = new Uint8Array(rowSize * height);\n let k = 0;\n for (let i = 0, ii = height * rowLen; i < ii; i += rowLen, k += rowSize) {\n newData.set(data.subarray(i, i + rowLen), k);\n }\n data = newData;\n }\n break;\n }\n case ImageKind.RGB_24BPP:\n {\n bitPerPixel = 24;\n if (width & 3) {\n const rowLen = 3 * width;\n const rowSize = rowLen + 3 & -4;\n const extraLen = rowSize - rowLen;\n const newData = new Uint8Array(rowSize * height);\n let k = 0;\n for (let i = 0, ii = height * rowLen; i < ii; i += rowLen) {\n const row = data.subarray(i, i + rowLen);\n for (let j = 0; j < rowLen; j += 3) {\n newData[k++] = row[j + 2];\n newData[k++] = row[j + 1];\n newData[k++] = row[j];\n }\n k += extraLen;\n }\n data = newData;\n } else {\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const tmp = data[i];\n data[i] = data[i + 2];\n data[i + 2] = tmp;\n }\n }\n break;\n }\n case ImageKind.RGBA_32BPP:\n bitPerPixel = 32;\n compression = 3;\n maskTable = new Uint8Array(4 + 4 + 4 + 4 + 52);\n const view = new DataView(maskTable.buffer);\n if (FeatureTest.isLittleEndian) {\n view.setUint32(0, 0x000000ff, true);\n view.setUint32(4, 0x0000ff00, true);\n view.setUint32(8, 0x00ff0000, true);\n view.setUint32(12, 0xff000000, true);\n } else {\n view.setUint32(0, 0xff000000, true);\n view.setUint32(4, 0x00ff0000, true);\n view.setUint32(8, 0x0000ff00, true);\n view.setUint32(12, 0x000000ff, true);\n }\n break;\n default:\n throw new Error(\"invalid format\");\n }\n let i = 0;\n const headerLength = 40 + maskTable.length;\n const fileLength = 14 + headerLength + colorTable.length + data.length;\n const bmpData = new Uint8Array(fileLength);\n const view = new DataView(bmpData.buffer);\n view.setUint16(i, 0x4d42, true);\n i += 2;\n view.setUint32(i, fileLength, true);\n i += 4;\n view.setUint32(i, 0, true);\n i += 4;\n view.setUint32(i, 14 + headerLength + colorTable.length, true);\n i += 4;\n view.setUint32(i, headerLength, true);\n i += 4;\n view.setInt32(i, width, true);\n i += 4;\n view.setInt32(i, -height, true);\n i += 4;\n view.setUint16(i, 1, true);\n i += 2;\n view.setUint16(i, bitPerPixel, true);\n i += 2;\n view.setUint32(i, compression, true);\n i += 4;\n view.setUint32(i, 0, true);\n i += 4;\n view.setInt32(i, 0, true);\n i += 4;\n view.setInt32(i, 0, true);\n i += 4;\n view.setUint32(i, colorTable.length / 4, true);\n i += 4;\n view.setUint32(i, 0, true);\n i += 4;\n bmpData.set(maskTable, i);\n i += maskTable.length;\n bmpData.set(colorTable, i);\n i += colorTable.length;\n bmpData.set(data, i);\n return bmpData;\n }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\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 (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\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 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 k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\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 this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/core/operator_list.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] ||= [];\n }\n state[pattern.at(-1)] = {\n checkFn,\n iterateFn,\n processFn\n };\n}\nconst InitialState = [];\naddState(InitialState, [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore], null, 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}, 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 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 const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);\n if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\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 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 Uint8Array(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 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 const img = {\n width: imgWidth,\n height: imgHeight\n };\n if (context.isOffscreenCanvasSupported) {\n const canvas = new OffscreenCanvas(imgWidth, imgHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.putImageData(new ImageData(new Uint8ClampedArray(imgData.buffer), imgWidth, imgHeight), 0, 0);\n img.bitmap = canvas.transferToImageBitmap();\n img.data = null;\n } else {\n img.kind = ImageKind.RGBA_32BPP;\n img.data = imgData;\n }\n fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [img, map]);\n return iFirstSave + 1;\n});\naddState(InitialState, [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore], null, 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}, 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 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 let count = Math.floor((i - iFirstSave) / 4);\n if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n return i - (i - iFirstSave) % 4;\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 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 (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) {\n if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n isSameImage = false;\n } else {\n count = q;\n }\n break;\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 fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]);\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 interpolate: maskParams.interpolate,\n count: maskParams.count,\n transform: transformArgs\n });\n }\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [images]);\n }\n return iFirstSave + 1;\n});\naddState(InitialState, [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore], function (context) {\n const argsArray = context.argsArray;\n const iFirstTransform = context.iCurr - 2;\n return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;\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 (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {\n return false;\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;\n }\n return true;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n}, function (context, i) {\n const MIN_IMAGES_IN_BLOCK = 3;\n const MAX_IMAGES_IN_BLOCK = 1000;\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 const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);\n if (count < MIN_IMAGES_IN_BLOCK) {\n return i - (i - iFirstSave) % 4;\n }\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 const args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, args);\n return iFirstSave + 1;\n});\naddState(InitialState, [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText], null, 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 (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {\n return false;\n }\n return true;\n case 4:\n return fnArray[i] === OPS.endText;\n }\n throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n}, function (context, i) {\n const MIN_CHARS_IN_BLOCK = 3;\n const MAX_CHARS_IN_BLOCK = 1000;\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 let count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);\n if (count < MIN_CHARS_IN_BLOCK) {\n return i - (i - iFirstBeginText) % 5;\n }\n let iFirst = iFirstBeginText;\n if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {\n count++;\n iFirst -= 5;\n }\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 return iEndText + 1;\n});\nclass NullOptimizer {\n constructor(queue) {\n this.queue = queue;\n }\n _optimize() {}\n push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n this._optimize();\n }\n flush() {}\n reset() {}\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 isOffscreenCanvasSupported: false\n };\n this.match = null;\n this.lastProcessed = 0;\n }\n set isOffscreenCanvasSupported(value) {\n this.context.isOffscreenCanvasSupported = value;\n }\n _optimize() {\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 this.lastProcessed = ii;\n return;\n }\n const context = this.context;\n while (i < ii) {\n if (match) {\n const iterate = (0, match.iterateFn)(context, i);\n if (iterate) {\n i++;\n continue;\n }\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 state = (state || InitialState)[fnArray[i]];\n if (!state || Array.isArray(state)) {\n i++;\n continue;\n }\n context.iCurr = i;\n i++;\n if (state.checkFn && !(0, state.checkFn)(context)) {\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 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 this._optimize();\n }\n }\n reset() {\n this.state = null;\n this.match = null;\n this.lastProcessed = 0;\n }\n}\nclass OperatorList {\n static CHUNK_SIZE = 1000;\n static CHUNK_SIZE_ABOUT = this.CHUNK_SIZE - 5;\n constructor(intent = 0, streamSink) {\n this._streamSink = streamSink;\n this.fnArray = [];\n this.argsArray = [];\n this.optimizer = streamSink && !(intent & RenderingIntentFlag.OPLIST) ? new QueueOptimizer(this) : new NullOptimizer(this);\n this.dependencies = new Set();\n this._totalLength = 0;\n this.weight = 0;\n this._resolved = streamSink ? null : Promise.resolve();\n }\n set isOffscreenCanvasSupported(value) {\n this.optimizer.isOffscreenCanvasSupported = value;\n }\n get length() {\n return this.argsArray.length;\n }\n get ready() {\n return this._resolved || this._streamSink.ready;\n }\n get totalLength() {\n return this._totalLength + this.length;\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 (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && (fn === OPS.restore || fn === OPS.endText)) {\n this.flush();\n }\n }\n }\n addImageOps(fn, args, optionalContent, hasMask = false) {\n if (hasMask) {\n this.addOp(OPS.save);\n this.addOp(OPS.setGState, [[[\"SMask\", false]]]);\n }\n if (optionalContent !== undefined) {\n this.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n this.addOp(fn, args);\n if (optionalContent !== undefined) {\n this.addOp(OPS.endMarkedContent, []);\n }\n if (hasMask) {\n this.addOp(OPS.restore);\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 addDependencies(dependencies) {\n for (const dependency of dependencies) {\n this.addDependency(dependency);\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 getIR() {\n return {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n length: this.length\n };\n }\n get _transfers() {\n const transfers = [];\n const {\n fnArray,\n argsArray,\n length\n } = 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];\n if (!arg.cached && arg.data?.buffer instanceof ArrayBuffer) {\n transfers.push(arg.data.buffer);\n }\n break;\n }\n }\n return transfers;\n }\n flush(lastChunk = false, separateAnnots = null) {\n this.optimizer.flush();\n const length = this.length;\n this._totalLength += length;\n this._streamSink.enqueue({\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n lastChunk,\n separateAnnots,\n length\n }, 1, this._transfers);\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\n;// ./src/core/image.js\n\n\n\n\n\n\n\n\n\nfunction decodeAndClamp(value, addend, coefficient, max) {\n value = addend + value * coefficient;\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n return value;\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 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}\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 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 = xref.fetchIfRef(filter[0]);\n if (filterZero instanceof Name) {\n filterName = filterZero.name;\n }\n }\n switch (filterName) {\n case \"JPXDecode\":\n ({\n width: image.width,\n height: image.height,\n componentsCount: image.numComps,\n bitsPerComponent: image.bitsPerComponent\n } = JpxImage.parseImageProperties(image.stream));\n image.stream.reset();\n this.jpxDecoderOptions = {\n numComponents: 0,\n isIndexedColormap: false,\n smaskInData: dict.has(\"SMaskInData\")\n };\n break;\n case \"JBIG2Decode\":\n image.bitsPerComponent = 1;\n image.numComps = 1;\n break;\n }\n let width = dict.get(\"W\", \"Width\");\n let height = dict.get(\"H\", \"Height\");\n if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) {\n warn(\"PDFImage - using the Width/Height of the image data, \" + \"rather than the image dictionary.\");\n width = image.width;\n height = image.height;\n }\n if (width < 1 || height < 1) {\n throw new FormatError(`Invalid image width: ${width} or height: ${height}`);\n }\n this.width = width;\n this.height = height;\n this.interpolate = dict.get(\"I\", \"Interpolate\");\n this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n this.matte = dict.get(\"Matte\") || false;\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(`Bits per component missing in image: ${this.imageMask}`);\n }\n }\n }\n this.bpc = bitsPerComponent;\n if (!this.imageMask) {\n let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n const hasColorSpace = !!colorSpace;\n if (!hasColorSpace) {\n if (this.jpxDecoderOptions) {\n colorSpace = Name.get(\"DeviceRGBA\");\n } else {\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(`Images with ${image.numComps} color components not supported.`);\n }\n }\n } else if (this.jpxDecoderOptions?.smaskInData) {\n colorSpace = Name.get(\"DeviceRGBA\");\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 if (this.jpxDecoderOptions) {\n this.jpxDecoderOptions.numComponents = hasColorSpace ? this.numComp : 0;\n this.jpxDecoderOptions.isIndexedColormap = this.colorSpace.name === \"Indexed\";\n }\n }\n this.decode = dict.getArray(\"D\", \"Decode\");\n this.needsDecode = false;\n if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !ColorSpace.isDefaultDecode(this.decode, 1))) {\n this.needsDecode = true;\n const max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n const isIndexed = 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 ? (dmax - dmin) / max : dmax - dmin;\n this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\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 this.mask = mask;\n }\n }\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 const smask = image.dict.get(\"SMask\");\n const mask = image.dict.get(\"Mask\");\n if (smask) {\n if (smask instanceof BaseStream) {\n smaskData = smask;\n } else {\n warn(\"Unsupported /SMask format.\");\n }\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 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 static createRawMask({\n imgArray,\n width,\n height,\n imageIsFromDecodeStream,\n inverseDecode,\n interpolate\n }) {\n const computedLength = (width + 7 >> 3) * height;\n const actualLength = imgArray.byteLength;\n const haveFullData = computedLength === actualLength;\n let data, i;\n if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n data = imgArray;\n } else if (!inverseDecode) {\n data = new Uint8Array(imgArray);\n } else {\n data = new Uint8Array(computedLength);\n data.set(imgArray);\n data.fill(0xff, actualLength);\n }\n if (inverseDecode) {\n for (i = 0; i < actualLength; i++) {\n data[i] ^= 0xff;\n }\n }\n return {\n data,\n width,\n height,\n interpolate\n };\n }\n static async createMask({\n imgArray,\n width,\n height,\n imageIsFromDecodeStream,\n inverseDecode,\n interpolate,\n isOffscreenCanvasSupported = false\n }) {\n const isSingleOpaquePixel = width === 1 && height === 1 && inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128));\n if (isSingleOpaquePixel) {\n return {\n isSingleOpaquePixel\n };\n }\n if (isOffscreenCanvasSupported) {\n if (ImageResizer.needsToBeResized(width, height)) {\n const data = new Uint8ClampedArray(width * height * 4);\n convertBlackAndWhiteToRGBA({\n src: imgArray,\n dest: data,\n width,\n height,\n nonBlackColor: 0,\n inverseDecode\n });\n return ImageResizer.createImage({\n kind: ImageKind.RGBA_32BPP,\n data,\n width,\n height,\n interpolate\n });\n }\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\");\n const imgData = ctx.createImageData(width, height);\n convertBlackAndWhiteToRGBA({\n src: imgArray,\n dest: imgData.data,\n width,\n height,\n nonBlackColor: 0,\n inverseDecode\n });\n ctx.putImageData(imgData, 0, 0);\n const bitmap = canvas.transferToImageBitmap();\n return {\n data: null,\n width,\n height,\n interpolate,\n bitmap\n };\n }\n return this.createRawMask({\n imgArray,\n width,\n height,\n inverseDecode,\n imageIsFromDecodeStream,\n interpolate\n });\n }\n get drawWidth() {\n return Math.max(this.width, this.smask?.width || 0, this.mask?.width || 0);\n }\n get drawHeight() {\n return Math.max(this.height, this.smask?.height || 0, this.mask?.height || 0);\n }\n decodeBuffer(buffer) {\n const bpc = this.bpc;\n const numComps = this.numComps;\n const decodeAddends = this.decodeAddends;\n const decodeCoefficients = this.decodeCoefficients;\n const max = (1 << bpc) - 1;\n let i, ii;\n if (bpc === 1) {\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(buffer[index], decodeAddends[j], decodeCoefficients[j], max);\n index++;\n }\n }\n }\n getComponents(buffer) {\n const bpc = this.bpc;\n if (bpc === 8) {\n return buffer;\n }\n const width = this.width;\n const height = this.height;\n const numComps = this.numComps;\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 const max = (1 << bpc) - 1;\n let i = 0,\n ii,\n buf;\n if (bpc === 1) {\n let mask, loop1End, loop2End;\n for (let j = 0; j < height; j++) {\n loop1End = i + (rowComps & ~7);\n loop2End = i + rowComps;\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 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 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 while (bits < bpc) {\n buf = buf << 8 | buffer[bufferPos++];\n bits += 8;\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 async fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n const smask = this.smask;\n const mask = this.mask;\n let alphaBuf, sw, sh, i, ii, j;\n if (smask) {\n sw = smask.width;\n sh = smask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n await 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 await mask.fillGrayBuffer(alphaBuf);\n for (i = 0, ii = sw * sh; i < ii; ++i) {\n alphaBuf[i] = 255 - alphaBuf[i];\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 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 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 for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = 255;\n }\n }\n }\n undoPreblend(buffer, width, height) {\n const matte = 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 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 async createImageData(forceRGBA = false, isOffscreenCanvasSupported = 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 };\n const numComps = this.numComps;\n const originalWidth = this.width;\n const originalHeight = this.height;\n const bpc = this.bpc;\n const rowBytes = originalWidth * numComps * bpc + 7 >> 3;\n const mustBeResized = isOffscreenCanvasSupported && ImageResizer.needsToBeResized(drawWidth, drawHeight);\n if (!this.smask && !this.mask && this.colorSpace.name === \"DeviceRGBA\") {\n imgData.kind = ImageKind.RGBA_32BPP;\n const imgArray = imgData.data = await this.getImageBytes(originalHeight * originalWidth * 4, {});\n if (isOffscreenCanvasSupported) {\n if (!mustBeResized) {\n return this.createBitmap(ImageKind.RGBA_32BPP, drawWidth, drawHeight, imgArray);\n }\n return ImageResizer.createImage(imgData, false);\n }\n return imgData;\n }\n if (!forceRGBA) {\n let kind;\n if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n kind = ImageKind.GRAYSCALE_1BPP;\n } else if (this.colorSpace.name === \"DeviceRGB\" && bpc === 8 && !this.needsDecode) {\n kind = ImageKind.RGB_24BPP;\n }\n if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {\n const image = await this.#getImage(originalWidth, originalHeight);\n if (image) {\n return image;\n }\n const data = await this.getImageBytes(originalHeight * rowBytes, {});\n if (isOffscreenCanvasSupported) {\n if (mustBeResized) {\n return ImageResizer.createImage({\n data,\n kind,\n width: drawWidth,\n height: drawHeight,\n interpolate: this.interpolate\n }, this.needsDecode);\n }\n return this.createBitmap(kind, originalWidth, originalHeight, data);\n }\n imgData.kind = kind;\n imgData.data = data;\n if (this.needsDecode) {\n assert(kind === ImageKind.GRAYSCALE_1BPP, \"PDFImage.createImageData: The image must be grayscale.\");\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 && !this.needsDecode) {\n let imageLength = originalHeight * rowBytes;\n if (isOffscreenCanvasSupported && !mustBeResized) {\n let isHandled = false;\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n imageLength *= 4;\n isHandled = true;\n break;\n case \"DeviceRGB\":\n imageLength = imageLength / 3 * 4;\n isHandled = true;\n break;\n case \"DeviceCMYK\":\n isHandled = true;\n break;\n }\n if (isHandled) {\n const image = await this.#getImage(drawWidth, drawHeight);\n if (image) {\n return image;\n }\n const rgba = await this.getImageBytes(imageLength, {\n drawWidth,\n drawHeight,\n forceRGBA: true\n });\n return this.createBitmap(ImageKind.RGBA_32BPP, drawWidth, drawHeight, rgba);\n }\n } else {\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n imageLength *= 3;\n case \"DeviceRGB\":\n case \"DeviceCMYK\":\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = await this.getImageBytes(imageLength, {\n drawWidth,\n drawHeight,\n forceRGB: true\n });\n if (mustBeResized) {\n return ImageResizer.createImage(imgData);\n }\n return imgData;\n }\n }\n }\n }\n const imgArray = await this.getImageBytes(originalHeight * rowBytes, {\n internal: true\n });\n const actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;\n const comps = this.getComponents(imgArray);\n let alpha01, maybeUndoPreblend;\n let canvas, ctx, canvasImgData, data;\n if (isOffscreenCanvasSupported && !mustBeResized) {\n canvas = new OffscreenCanvas(drawWidth, drawHeight);\n ctx = canvas.getContext(\"2d\");\n canvasImgData = ctx.createImageData(drawWidth, drawHeight);\n data = canvasImgData.data;\n }\n imgData.kind = ImageKind.RGBA_32BPP;\n if (!forceRGBA && !this.smask && !this.mask) {\n if (!isOffscreenCanvasSupported || mustBeResized) {\n imgData.kind = ImageKind.RGB_24BPP;\n data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n alpha01 = 0;\n } else {\n const arr = new Uint32Array(data.buffer);\n arr.fill(FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff);\n alpha01 = 1;\n }\n maybeUndoPreblend = false;\n } else {\n if (!isOffscreenCanvasSupported || mustBeResized) {\n data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n }\n alpha01 = 1;\n maybeUndoPreblend = true;\n await this.fillOpacity(data, drawWidth, drawHeight, actualHeight, comps);\n }\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n this.colorSpace.fillRgb(data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);\n if (maybeUndoPreblend) {\n this.undoPreblend(data, drawWidth, actualHeight);\n }\n if (isOffscreenCanvasSupported && !mustBeResized) {\n ctx.putImageData(canvasImgData, 0, 0);\n const bitmap = canvas.transferToImageBitmap();\n return {\n data: null,\n width: drawWidth,\n height: drawHeight,\n bitmap,\n interpolate: this.interpolate\n };\n }\n imgData.data = data;\n if (mustBeResized) {\n return ImageResizer.createImage(imgData);\n }\n return imgData;\n }\n async fillGrayBuffer(buffer) {\n const numComps = this.numComps;\n if (numComps !== 1) {\n throw new FormatError(`Reading gray scale from a color image: ${numComps}`);\n }\n const width = this.width;\n const height = this.height;\n const bpc = this.bpc;\n const rowBytes = width * numComps * bpc + 7 >> 3;\n const imgArray = await this.getImageBytes(height * rowBytes, {\n internal: true\n });\n const comps = this.getComponents(imgArray);\n let i, length;\n if (bpc === 1) {\n length = width * height;\n if (this.needsDecode) {\n for (i = 0; i < length; ++i) {\n buffer[i] = comps[i] - 1 & 255;\n }\n } else {\n for (i = 0; i < length; ++i) {\n buffer[i] = -comps[i] & 255;\n }\n }\n return;\n }\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n length = width * height;\n const scale = 255 / ((1 << bpc) - 1);\n for (i = 0; i < length; ++i) {\n buffer[i] = scale * comps[i];\n }\n }\n createBitmap(kind, width, height, src) {\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\");\n let imgData;\n if (kind === ImageKind.RGBA_32BPP) {\n imgData = new ImageData(src, width, height);\n } else {\n imgData = ctx.createImageData(width, height);\n convertToRGBA({\n kind,\n src,\n dest: new Uint32Array(imgData.data.buffer),\n width,\n height,\n inverseDecode: this.needsDecode\n });\n }\n ctx.putImageData(imgData, 0, 0);\n const bitmap = canvas.transferToImageBitmap();\n return {\n data: null,\n width,\n height,\n bitmap,\n interpolate: this.interpolate\n };\n }\n async #getImage(width, height) {\n const bitmap = await this.image.getTransferableImage();\n if (!bitmap) {\n return null;\n }\n return {\n data: null,\n width,\n height,\n bitmap,\n interpolate: this.interpolate\n };\n }\n async getImageBytes(length, {\n drawWidth,\n drawHeight,\n forceRGBA = false,\n forceRGB = false,\n internal = false\n }) {\n this.image.reset();\n this.image.drawWidth = drawWidth || this.width;\n this.image.drawHeight = drawHeight || this.height;\n this.image.forceRGBA = !!forceRGBA;\n this.image.forceRGB = !!forceRGB;\n const imageBytes = await this.image.getImageData(length, this.jpxDecoderOptions);\n if (internal || this.image instanceof DecodeStream) {\n return imageBytes;\n }\n assert(imageBytes instanceof Uint8Array, 'PDFImage.getImageBytes: Unsupported \"imageBytes\" type.');\n return new Uint8Array(imageBytes);\n }\n}\n\n;// ./src/core/evaluator.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n maxImageSize: -1,\n disableFontFace: false,\n ignoreErrors: false,\n isEvalSupported: true,\n isOffscreenCanvasSupported: false,\n isImageDecoderSupported: false,\n canvasMaxAreaInBytes: -1,\n fontExtraProperties: false,\n useSystemFonts: true,\n cMapUrl: null,\n standardFontDataUrl: null\n});\nconst PatternType = {\n TILING: 1,\n SHADING: 2\n};\nconst TEXT_CHUNK_BATCH_SIZE = 10;\nconst deferred = Promise.resolve();\nfunction normalizeBlendMode(value, parsingArray = false) {\n if (Array.isArray(value)) {\n for (const val of value) {\n const maybeBM = normalizeBlendMode(val, true);\n if (maybeBM) {\n return maybeBM;\n }\n }\n warn(`Unsupported blend mode Array: ${value}`);\n return \"source-over\";\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}\nfunction addLocallyCachedImageOps(opList, data) {\n if (data.objId) {\n opList.addDependency(data.objId);\n }\n opList.addImageOps(data.fn, data.args, data.optionalContent, data.hasMask);\n if (data.fn === OPS.paintImageMaskXObject && data.args[0]?.count > 0) {\n data.args[0].count++;\n }\n}\nclass TimeSlotManager {\n static TIME_SLOT_DURATION_MS = 20;\n static CHECK_TIME_EVERY = 100;\n constructor() {\n this.reset();\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 reset() {\n this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n this.checked = 0;\n }\n}\nclass PartialEvaluator {\n constructor({\n xref,\n handler,\n pageIndex,\n idFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n systemFontCache,\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.systemFontCache = systemFontCache;\n this.options = options || DefaultPartialEvaluatorOptions;\n this.type3FontRefs = null;\n this._regionalImageCache = new RegionalImageCache();\n this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n ImageResizer.setOptions(this.options);\n JpegStream.setOptions(this.options);\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 get parsingType3Font() {\n return !!this.type3FontRefs;\n }\n clone(newOptions = null) {\n const newEvaluator = Object.create(this);\n newEvaluator.options = Object.assign(Object.create(null), this.options, newOptions);\n return newEvaluator;\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 const processed = new RefSet(nonBlendModesSet);\n if (resources.objId) {\n processed.put(resources.objId);\n }\n const nodes = [resources],\n xref = this.xref;\n while (nodes.length) {\n const node = nodes.shift();\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;\n }\n try {\n graphicState = xref.fetch(graphicState);\n } catch (ex) {\n processed.put(graphicState);\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 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 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 continue;\n }\n try {\n xObject = xref.fetch(xObject);\n } catch (ex) {\n processed.put(xObject);\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 if (xResources.objId && processed.has(xResources.objId)) {\n continue;\n }\n nodes.push(xResources);\n if (xResources.objId) {\n processed.put(xResources.objId);\n }\n }\n }\n for (const ref of processed) {\n nonBlendModesSet.put(ref);\n }\n return false;\n }\n async #fetchData(url) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch file \"${url}\" with \"${response.statusText}\".`);\n }\n return new Uint8Array(await response.arrayBuffer());\n }\n async fetchBuiltInCMap(name) {\n const cachedData = this.builtInCMapCache.get(name);\n if (cachedData) {\n return cachedData;\n }\n let data;\n if (this.options.cMapUrl !== null) {\n const cMapData = await this.#fetchData(`${this.options.cMapUrl}${name}.bcmap`);\n data = {\n cMapData,\n isCompressed: true\n };\n } else {\n data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", {\n name\n });\n }\n this.builtInCMapCache.set(name, data);\n return data;\n }\n async fetchStandardFontData(name) {\n const cachedData = this.standardFontDataCache.get(name);\n if (cachedData) {\n return new Stream(cachedData);\n }\n if (this.options.useSystemFonts && name !== \"Symbol\" && name !== \"ZapfDingbats\") {\n return null;\n }\n const standardFontNameToFileName = getFontNameToFileMap(),\n filename = standardFontNameToFileName[name];\n let data;\n try {\n if (this.options.standardFontDataUrl !== null) {\n data = await this.#fetchData(`${this.options.standardFontDataUrl}${filename}`);\n } else {\n data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n filename\n });\n }\n } catch (ex) {\n warn(ex);\n return null;\n }\n this.standardFontDataCache.set(name, data);\n return new Stream(data);\n }\n async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) {\n const dict = xobj.dict;\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), null);\n const bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n let optionalContent, groupOptions;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(dict.get(\"OC\"), resources);\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 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 const cachedColorSpace = ColorSpace.getCached(cs, this.xref, localColorSpaceCache);\n if (cachedColorSpace) {\n colorSpace = cachedColorSpace;\n } else {\n colorSpace = await this.parseColorSpace({\n cs,\n resources,\n localColorSpaceCache\n });\n }\n }\n }\n if (smask?.backdrop) {\n colorSpace ||= ColorSpace.singletons.rgb;\n smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n }\n operatorList.addOp(OPS.beginGroup, [groupOptions]);\n }\n const args = group ? [matrix, null] : [matrix, bbox];\n operatorList.addOp(OPS.paintFormXObjectBegin, args);\n await this.getOperatorList({\n stream: xobj,\n task,\n resources: dict.get(\"Resources\") || resources,\n operatorList,\n initialState\n });\n operatorList.addOp(OPS.paintFormXObjectEnd, []);\n if (group) {\n operatorList.addOp(OPS.endGroup, [groupOptions]);\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n }\n _sendImgData(objId, imgData, cacheGlobally = false) {\n const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null;\n if (this.parsingType3Font || cacheGlobally) {\n return this.handler.send(\"commonobj\", [objId, \"Image\", imgData], transfers);\n }\n return this.handler.send(\"obj\", [objId, this.pageIndex, \"Image\", imgData], transfers);\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 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 const msg = \"Image exceeded maximum allowed size and was removed.\";\n if (this.options.ignoreErrors) {\n warn(msg);\n return;\n }\n throw new Error(msg);\n }\n let optionalContent;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(dict.get(\"OC\"), resources);\n }\n const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n let imgData, args;\n if (imageMask) {\n const interpolate = dict.get(\"I\", \"Interpolate\");\n const bitStrideLength = w + 7 >> 3;\n const imgArray = image.getBytes(bitStrideLength * h);\n const decode = dict.getArray(\"D\", \"Decode\");\n if (this.parsingType3Font) {\n imgData = PDFImage.createRawMask({\n imgArray,\n width: w,\n height: h,\n imageIsFromDecodeStream: image instanceof DecodeStream,\n inverseDecode: decode?.[0] > 0,\n interpolate\n });\n imgData.cached = !!cacheKey;\n args = [imgData];\n operatorList.addImageOps(OPS.paintImageMaskXObject, args, optionalContent);\n if (cacheKey) {\n const cacheData = {\n fn: OPS.paintImageMaskXObject,\n args,\n optionalContent\n };\n localImageCache.set(cacheKey, imageRef, cacheData);\n if (imageRef) {\n this._regionalImageCache.set(null, imageRef, cacheData);\n }\n }\n return;\n }\n imgData = await PDFImage.createMask({\n imgArray,\n width: w,\n height: h,\n imageIsFromDecodeStream: image instanceof DecodeStream,\n inverseDecode: decode?.[0] > 0,\n interpolate,\n isOffscreenCanvasSupported: this.options.isOffscreenCanvasSupported\n });\n if (imgData.isSingleOpaquePixel) {\n operatorList.addImageOps(OPS.paintSolidColorImageMask, [], optionalContent);\n if (cacheKey) {\n const cacheData = {\n fn: OPS.paintSolidColorImageMask,\n args: [],\n optionalContent\n };\n localImageCache.set(cacheKey, imageRef, cacheData);\n if (imageRef) {\n this._regionalImageCache.set(null, imageRef, cacheData);\n }\n }\n return;\n }\n const objId = `mask_${this.idFactory.createObjId()}`;\n operatorList.addDependency(objId);\n imgData.dataLen = imgData.bitmap ? imgData.width * imgData.height * 4 : imgData.data.length;\n this._sendImgData(objId, imgData);\n args = [{\n data: objId,\n width: imgData.width,\n height: imgData.height,\n interpolate: imgData.interpolate,\n count: 1\n }];\n operatorList.addImageOps(OPS.paintImageMaskXObject, args, optionalContent);\n if (cacheKey) {\n const cacheData = {\n objId,\n fn: OPS.paintImageMaskXObject,\n args,\n optionalContent\n };\n localImageCache.set(cacheKey, imageRef, cacheData);\n if (imageRef) {\n this._regionalImageCache.set(null, imageRef, cacheData);\n }\n }\n return;\n }\n const SMALL_IMAGE_DIMENSIONS = 200;\n const hasMask = dict.has(\"SMask\") || dict.has(\"Mask\");\n if (isInline && w + h < SMALL_IMAGE_DIMENSIONS && !hasMask) {\n try {\n const imageObj = new PDFImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache\n });\n imgData = await imageObj.createImageData(true, false);\n operatorList.isOffscreenCanvasSupported = this.options.isOffscreenCanvasSupported;\n operatorList.addImageOps(OPS.paintInlineImageXObject, [imgData], optionalContent);\n } catch (reason) {\n const msg = `Unable to decode inline image: \"${reason}\".`;\n if (!this.options.ignoreErrors) {\n throw new Error(msg);\n }\n warn(msg);\n }\n return;\n }\n let objId = `img_${this.idFactory.createObjId()}`,\n cacheGlobally = false;\n if (this.parsingType3Font) {\n objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n } else if (cacheKey && imageRef) {\n cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex);\n if (cacheGlobally) {\n assert(!isInline, \"Cannot cache an inline image globally.\");\n objId = `${this.idFactory.getDocId()}_${objId}`;\n }\n }\n operatorList.addDependency(objId);\n args = [objId, w, h];\n operatorList.addImageOps(OPS.paintImageXObject, args, optionalContent, hasMask);\n if (cacheGlobally) {\n if (this.globalImageCache.hasDecodeFailed(imageRef)) {\n this.globalImageCache.setData(imageRef, {\n objId,\n fn: OPS.paintImageXObject,\n args,\n optionalContent,\n hasMask,\n byteSize: 0\n });\n this._sendImgData(objId, null, cacheGlobally);\n return;\n }\n if (w * h > 250000 || hasMask) {\n const localLength = await this.handler.sendWithPromise(\"commonobj\", [objId, \"CopyLocalImage\", {\n imageRef\n }]);\n if (localLength) {\n this.globalImageCache.setData(imageRef, {\n objId,\n fn: OPS.paintImageXObject,\n args,\n optionalContent,\n hasMask,\n byteSize: 0\n });\n this.globalImageCache.addByteSize(imageRef, localLength);\n return;\n }\n }\n }\n PDFImage.buildImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache\n }).then(async imageObj => {\n imgData = await imageObj.createImageData(false, this.options.isOffscreenCanvasSupported);\n imgData.dataLen = imgData.bitmap ? imgData.width * imgData.height * 4 : imgData.data.length;\n imgData.ref = imageRef;\n if (cacheGlobally) {\n this.globalImageCache.addByteSize(imageRef, imgData.dataLen);\n }\n return this._sendImgData(objId, imgData, cacheGlobally);\n }).catch(reason => {\n warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n if (imageRef) {\n this.globalImageCache.addDecodeFailed(imageRef);\n }\n return this._sendImgData(objId, null, cacheGlobally);\n });\n if (cacheKey) {\n const cacheData = {\n objId,\n fn: OPS.paintImageXObject,\n args,\n optionalContent,\n hasMask\n };\n localImageCache.set(cacheKey, imageRef, cacheData);\n if (imageRef) {\n this._regionalImageCache.set(null, imageRef, cacheData);\n if (cacheGlobally) {\n this.globalImageCache.setData(imageRef, {\n objId,\n fn: OPS.paintImageXObject,\n args,\n optionalContent,\n hasMask,\n byteSize: 0\n });\n }\n }\n }\n }\n handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) {\n const smaskContent = smask.get(\"G\");\n const smaskOptions = {\n subtype: smask.get(\"S\").name,\n backdrop: smask.get(\"BC\")\n };\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 return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone(), localColorSpaceCache);\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;\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 if (isName(transferObj, \"Identity\")) {\n transferMaps.push(null);\n continue;\n } else if (!isPDFFunction(transferObj)) {\n return null;\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 if (!(numFns === 1 || numFns === 4)) {\n return null;\n }\n if (numEffectfulFns === 0) {\n return null;\n }\n return transferMaps;\n }\n handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, localTilingPatternCache) {\n const tilingOpList = new OperatorList();\n const patternResources = Dict.merge({\n xref: this.xref,\n dictArray: [patternDict.get(\"Resources\"), resources]\n });\n return this.getOperatorList({\n stream: pattern,\n task,\n resources: patternResources,\n operatorList: tilingOpList\n }).then(function () {\n const operatorListIR = tilingOpList.getIR();\n const tilingPatternIR = getTilingPatternIR(operatorListIR, patternDict, color);\n operatorList.addDependencies(tilingOpList.dependencies);\n operatorList.addOp(fn, tilingPatternIR);\n if (patternDict.objId) {\n localTilingPatternCache.set(null, patternDict.objId, {\n operatorListIR,\n dict: patternDict\n });\n }\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n return;\n }\n throw reason;\n });\n }\n async handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null, cssFontInfo = null) {\n const fontName = fontArgs?.[0] instanceof Name ? fontArgs[0].name : null;\n let translated = await this.loadFont(fontName, fontRef, resources, fallbackFontDict, cssFontInfo);\n if (translated.font.isType3Font) {\n try {\n await translated.loadType3Data(this, resources, task);\n operatorList.addDependencies(translated.type3Dependencies);\n } catch (reason) {\n translated = 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 state.font = translated.font;\n translated.send(this.handler);\n return translated.loadedName;\n }\n handleText(chars, state) {\n const font = state.font;\n const glyphs = font.charsToGlyphs(chars);\n if (font.data) {\n const isAddToPathSet = !!(state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n if (isAddToPathSet || state.fillColorSpace.name === \"Pattern\" || font.disableFontFace || this.options.disableFontFace) {\n PartialEvaluator.buildFontPaths(font, glyphs, this.handler, this.options);\n }\n }\n return glyphs;\n }\n ensureStateFont(state) {\n if (state.font) {\n return;\n }\n const reason = new FormatError(\"Missing setFont (Tf) operator before text rendering operator.\");\n if (this.options.ignoreErrors) {\n warn(`ensureStateFont: \"${reason}\".`);\n return;\n }\n throw reason;\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 const gStateObj = [];\n let promise = Promise.resolve();\n for (const key of gState.getKeys()) {\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 promise = promise.then(() => this.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n gStateObj.push([key, [loadedName, value[1]]]);\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 promise = promise.then(() => this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache));\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 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 info(\"graphic state operator \" + key);\n break;\n default:\n info(\"Unknown graphic state operator \" + key);\n break;\n }\n }\n await promise;\n if (gStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [gStateObj]);\n }\n if (isSimpleGState) {\n localGStateCache.set(cacheKey, gStateRef, gStateObj);\n }\n }\n loadFont(fontName, font, resources, fallbackFontDict = null, cssFontInfo = null) {\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 let fontRef;\n if (font) {\n if (font instanceof Ref) {\n fontRef = font;\n }\n } else {\n const fontRes = resources.get(\"Font\");\n if (fontRes) {\n fontRef = fontRes.getRaw(fontName);\n }\n }\n if (fontRef) {\n if (this.type3FontRefs?.has(fontRef)) {\n return errorFont();\n }\n if (this.fontCache.has(fontRef)) {\n return this.fontCache.get(fontRef);\n }\n try {\n font = this.xref.fetchIfRef(fontRef);\n } catch (ex) {\n warn(`loadFont - lookup failed: \"${ex}\".`);\n }\n }\n if (!(font instanceof Dict)) {\n if (!this.options.ignoreErrors && !this.parsingType3Font) {\n warn(`Font \"${fontName}\" is not available.`);\n return errorFont();\n }\n warn(`Font \"${fontName}\" is not available -- attempting to fallback to a default font.`);\n font = fallbackFontDict || PartialEvaluator.fallbackFontDict;\n }\n if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n return this.fontCache.get(font.cacheKey);\n }\n const {\n promise,\n resolve\n } = Promise.withResolvers();\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 {\n descriptor,\n hash\n } = preEvaluatedFont;\n const fontRefIsRef = fontRef instanceof Ref;\n let fontID;\n if (hash && descriptor instanceof Dict) {\n const fontAliases = descriptor.fontAliases ||= Object.create(null);\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 if (fontRefIsRef) {\n fontAliases[hash].aliasRef = fontRef;\n }\n fontID = fontAliases[hash].fontID;\n } else {\n fontID = this.idFactory.createFontId();\n }\n assert(fontID?.startsWith(\"f\"), 'The \"fontID\" must be (correctly) defined.');\n if (fontRefIsRef) {\n this.fontCache.put(fontRef, promise);\n } else {\n font.cacheKey = `cacheKey_${fontID}`;\n this.fontCache.put(font.cacheKey, promise);\n }\n font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n this.translateFont(preEvaluatedFont).then(translatedFont => {\n resolve(new TranslatedFont({\n loadedName: font.loadedName,\n font: translatedFont,\n dict: font,\n evaluatorOptions: this.options\n }));\n }).catch(reason => {\n warn(`loadFont - translateFont failed: \"${reason}\".`);\n resolve(new TranslatedFont({\n loadedName: font.loadedName,\n font: new ErrorFont(reason instanceof Error ? reason.message : reason),\n dict: font,\n evaluatorOptions: this.options\n }));\n });\n return promise;\n }\n buildPath(operatorList, fn, args, parsingText = false) {\n const lastIndex = operatorList.length - 1;\n if (!args) {\n args = [];\n }\n if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== OPS.constructPath) {\n if (parsingText) {\n warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n operatorList.addOp(OPS.save, null);\n }\n let minMax;\n switch (fn) {\n case OPS.rectangle:\n const x = args[0] + args[2];\n const y = args[1] + args[3];\n minMax = [Math.min(args[0], x), Math.min(args[1], y), Math.max(args[0], x), Math.max(args[1], y)];\n break;\n case OPS.moveTo:\n case OPS.lineTo:\n minMax = [args[0], args[1], args[0], args[1]];\n break;\n default:\n minMax = [Infinity, Infinity, -Infinity, -Infinity];\n break;\n }\n operatorList.addOp(OPS.constructPath, [[fn], args, minMax]);\n if (parsingText) {\n operatorList.addOp(OPS.restore, null);\n }\n } else {\n const opArgs = operatorList.argsArray[lastIndex];\n opArgs[0].push(fn);\n opArgs[1].push(...args);\n const minMax = opArgs[2];\n switch (fn) {\n case OPS.rectangle:\n const x = args[0] + args[2];\n const y = args[1] + args[3];\n minMax[0] = Math.min(minMax[0], args[0], x);\n minMax[1] = Math.min(minMax[1], args[1], y);\n minMax[2] = Math.max(minMax[2], args[0], x);\n minMax[3] = Math.max(minMax[3], args[1], y);\n break;\n case OPS.moveTo:\n case OPS.lineTo:\n minMax[0] = Math.min(minMax[0], args[0]);\n minMax[1] = Math.min(minMax[1], args[1]);\n minMax[2] = Math.max(minMax[2], args[0]);\n minMax[3] = Math.max(minMax[3], args[1]);\n break;\n }\n }\n }\n parseColorSpace({\n cs,\n resources,\n localColorSpaceCache\n }) {\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 warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n return null;\n }\n throw reason;\n });\n }\n parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache\n }) {\n let id = localShadingPatternCache.get(shading);\n if (id) {\n return id;\n }\n let patternIR;\n try {\n const shadingFill = Pattern.parseShading(shading, this.xref, resources, this._pdfFunctionFactory, localColorSpaceCache);\n patternIR = shadingFill.getIR();\n } catch (reason) {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n warn(`parseShading - ignoring shading: \"${reason}\".`);\n localShadingPatternCache.set(shading, null);\n return null;\n }\n throw reason;\n }\n id = `pattern_${this.idFactory.createObjId()}`;\n if (this.parsingType3Font) {\n id = `${this.idFactory.getDocId()}_type3_${id}`;\n }\n localShadingPatternCache.set(shading, id);\n if (this.parsingType3Font) {\n this.handler.send(\"commonobj\", [id, \"Pattern\", patternIR]);\n } else {\n this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n }\n return id;\n }\n handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache) {\n const patternName = args.pop();\n if (patternName instanceof Name) {\n const rawPattern = patterns.getRaw(patternName.name);\n const localTilingPattern = rawPattern instanceof Ref && localTilingPatternCache.getByRef(rawPattern);\n if (localTilingPattern) {\n try {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n const tilingPatternIR = getTilingPatternIR(localTilingPattern.operatorListIR, localTilingPattern.dict, color);\n operatorList.addOp(fn, tilingPatternIR);\n return undefined;\n } catch {}\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 if (typeNum === PatternType.TILING) {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, localTilingPatternCache);\n } else if (typeNum === PatternType.SHADING) {\n const shading = dict.get(\"Shading\");\n const objId = this.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache\n });\n if (objId) {\n const matrix = lookupMatrix(dict.getArray(\"Matrix\"), null);\n operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n }\n return undefined;\n }\n throw new FormatError(`Unknown PatternType: ${typeNum}`);\n }\n }\n throw new FormatError(`Unknown PatternName: ${patternName}`);\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 this._parseVisibilityExpression(object, nestingCounter, nestedResult);\n } else if (raw instanceof Ref) {\n currentResult.push(raw.toString());\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 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 const optionalContentGroups = optionalContent.get(\"OCGs\");\n if (Array.isArray(optionalContentGroups) || optionalContentGroups instanceof Dict) {\n const groupIds = [];\n if (Array.isArray(optionalContentGroups)) {\n for (const ocg of optionalContentGroups) {\n groupIds.push(ocg.toString());\n }\n } else {\n groupIds.push(optionalContentGroups.objId);\n }\n return {\n type: optionalContentType,\n ids: groupIds,\n policy: optionalContent.get(\"P\") instanceof Name ? optionalContent.get(\"P\").name : 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 getOperatorList({\n stream,\n task,\n resources,\n operatorList,\n initialState = null,\n fallbackFontDict = null\n }) {\n resources ||= Dict.empty;\n initialState ||= new EvalState();\n if (!operatorList) {\n throw new Error('getOperatorList: missing \"operatorList\" parameter');\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 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 function closePendingRestoreOPS(argument) {\n for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n operatorList.addOp(OPS.restore, []);\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 const operation = {};\n let stop, i, ii, cs, name, isValidName;\n while (!(stop = timeSlotManager.check())) {\n operation.args = null;\n if (!preprocessor.read(operation)) {\n break;\n }\n let args = operation.args;\n let fn = operation.fn;\n switch (fn | 0) {\n case OPS.paintXObject:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n if (isValidName) {\n const localImage = localImageCache.getByName(name);\n if (localImage) {\n addLocallyCachedImageOps(operatorList, localImage);\n args = null;\n continue;\n }\n }\n next(new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n const localImage = localImageCache.getByRef(xobj) || self._regionalImageCache.getByRef(xobj);\n if (localImage) {\n addLocallyCachedImageOps(operatorList, localImage);\n resolveXObject();\n return;\n }\n const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);\n if (globalImage) {\n operatorList.addDependency(globalImage.objId);\n operatorList.addImageOps(globalImage.fn, globalImage.args, globalImage.optionalContent, globalImage.hasMask);\n resolveXObject();\n return;\n }\n xobj = xref.fetch(xobj);\n }\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\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 if (type.name === \"Form\") {\n stateManager.save();\n self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), localColorSpaceCache).then(function () {\n stateManager.restore();\n resolveXObject();\n }, rejectXObject);\n return;\n } else if (type.name === \"Image\") {\n self.buildPaintImageXObject({\n resources,\n image: xobj,\n operatorList,\n cacheKey: name,\n localImageCache,\n localColorSpaceCache\n }).then(resolveXObject, rejectXObject);\n return;\n } else if (type.name === \"PS\") {\n info(\"Ignored XObject subtype PS\");\n } else {\n throw new FormatError(`Unhandled XObject subtype ${type.name}`);\n }\n resolveXObject();\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n }));\n return;\n case OPS.setFont:\n const fontSize = args[1];\n next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, fallbackFontDict).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\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 const cacheKey = args[0].cacheKey;\n if (cacheKey) {\n const localImage = localImageCache.getByName(cacheKey);\n if (localImage) {\n addLocallyCachedImageOps(operatorList, localImage);\n args = null;\n continue;\n }\n }\n next(self.buildPaintImageXObject({\n resources,\n image: args[0],\n isInline: true,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache\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 const combinedGlyphs = [],\n state = stateManager.state;\n for (const arrItem of args[0]) {\n if (typeof arrItem === \"string\") {\n combinedGlyphs.push(...self.handleText(arrItem, state));\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 case OPS.setFillColorSpace:\n {\n const cachedColorSpace = ColorSpace.getCached(args[0], xref, localColorSpaceCache);\n if (cachedColorSpace) {\n stateManager.state.fillColorSpace = cachedColorSpace;\n continue;\n }\n next(self.parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache\n }).then(function (colorSpace) {\n stateManager.state.fillColorSpace = colorSpace || ColorSpace.singletons.gray;\n }));\n return;\n }\n case OPS.setStrokeColorSpace:\n {\n const cachedColorSpace = ColorSpace.getCached(args[0], xref, localColorSpaceCache);\n if (cachedColorSpace) {\n stateManager.state.strokeColorSpace = cachedColorSpace;\n continue;\n }\n next(self.parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache\n }).then(function (colorSpace) {\n stateManager.state.strokeColorSpace = colorSpace || ColorSpace.singletons.gray;\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.patternFillColorSpace;\n if (!cs) {\n if (isNumberArray(args, null)) {\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n }\n args = [];\n fn = OPS.setFillTransparent;\n break;\n }\n if (cs.name === \"Pattern\") {\n next(self.handleColorN(operatorList, OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColorN:\n cs = stateManager.state.patternStrokeColorSpace;\n if (!cs) {\n if (isNumberArray(args, null)) {\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n }\n args = [];\n fn = OPS.setStrokeTransparent;\n break;\n }\n if (cs.name === \"Pattern\") {\n next(self.handleColorN(operatorList, OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.shadingFill:\n let shading;\n try {\n const shadingRes = resources.get(\"Shading\");\n if (!shadingRes) {\n throw new FormatError(\"No shading resource found\");\n }\n shading = shadingRes.get(args[0].name);\n if (!shading) {\n throw new FormatError(\"No shading object found\");\n }\n } catch (reason) {\n if (reason instanceof AbortException) {\n continue;\n }\n if (self.options.ignoreErrors) {\n warn(`getOperatorList - ignoring Shading: \"${reason}\".`);\n continue;\n }\n throw reason;\n }\n const patternId = self.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache\n });\n if (!patternId) {\n continue;\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 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 next(new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n const gState = extGState.get(name);\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n self.setGState({\n resources,\n gState,\n operatorList,\n cacheKey: name,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache\n }).then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\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 continue;\n case OPS.beginMarkedContentProps:\n if (!(args[0] instanceof Name)) {\n warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", null]);\n continue;\n }\n if (args[0].name === \"OC\") {\n next(self.parseMarkedContentProps(args[1], resources).then(data => {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", data]);\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`);\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", null]);\n return;\n }\n throw reason;\n }));\n return;\n }\n args = [args[0].name, args[1] instanceof Dict ? args[1].get(\"MCID\") : null];\n break;\n case OPS.beginMarkedContent:\n case OPS.endMarkedContent:\n default:\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 closePendingRestoreOPS();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n warn(`getOperatorList - ignoring errors during \"${task.name}\" ` + `task: \"${reason}\".`);\n closePendingRestoreOPS();\n return;\n }\n throw reason;\n });\n }\n getTextContent({\n stream,\n task,\n resources,\n stateManager = null,\n includeMarkedContent = false,\n sink,\n seenStyles = new Set(),\n viewBox,\n lang = null,\n markedContentData = null,\n disableNormalization = false,\n keepWhiteSpace = false\n }) {\n resources ||= Dict.empty;\n stateManager ||= new StateManager(new TextState());\n if (includeMarkedContent) {\n markedContentData ||= {\n level: 0\n };\n }\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang\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 notASpace: -Infinity,\n transform: null,\n fontName: null,\n hasEOL: false\n };\n const twoLastChars = [\" \", \" \"];\n let twoLastCharsPos = 0;\n function saveLastChar(char) {\n const nextPos = (twoLastCharsPos + 1) % 2;\n const ret = twoLastChars[twoLastCharsPos] !== \" \" && twoLastChars[nextPos] === \" \";\n twoLastChars[twoLastCharsPos] = char;\n twoLastCharsPos = nextPos;\n return !keepWhiteSpace && ret;\n }\n function shouldAddWhitepsace() {\n return !keepWhiteSpace && twoLastChars[twoLastCharsPos] !== \" \" && twoLastChars[(twoLastCharsPos + 1) % 2] === \" \";\n }\n function resetLastChars() {\n twoLastChars[0] = twoLastChars[1] = \" \";\n twoLastCharsPos = 0;\n }\n const TRACKING_SPACE_FACTOR = 0.102;\n const NOT_A_SPACE_FACTOR = 0.03;\n const NEGATIVE_SPACE_FACTOR = -0.2;\n const SPACE_IN_FLOW_MIN_FACTOR = 0.102;\n const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n const VERTICAL_SHIFT_RATIO = 0.25;\n const self = this;\n const xref = this.xref;\n const showSpacedTextBuffer = [];\n let xobjs = null;\n const emptyXObjectCache = new LocalImageCache();\n const emptyGStateCache = new LocalGStateCache();\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n let textState;\n function pushWhitespace({\n width = 0,\n height = 0,\n transform = textContentItem.prevTransform,\n fontName = textContentItem.fontName\n }) {\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width,\n height,\n transform,\n fontName,\n hasEOL: false\n });\n }\n function getCurrentTextTransform() {\n const font = textState.font;\n const tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];\n if (font.isType3Font && (textState.fontSize <= 1 || font.isCharBBox) && !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)) {\n const glyphHeight = font.bbox[3] - font.bbox[1];\n if (glyphHeight > 0) {\n tsm[3] *= glyphHeight * textState.fontMatrix[3];\n }\n }\n return Util.transform(textState.ctm, Util.transform(textState.textMatrix, tsm));\n }\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n const {\n font,\n loadedName\n } = textState;\n if (!seenStyles.has(loadedName)) {\n seenStyles.add(loadedName);\n textContent.styles[loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical\n };\n if (self.options.fontExtraProperties && font.systemFontInfo) {\n const style = textContent.styles[loadedName];\n style.fontSubstitution = font.systemFontInfo.css;\n style.fontSubstitutionLoadedName = font.systemFontInfo.loadedName;\n }\n }\n textContentItem.fontName = loadedName;\n const trm = textContentItem.transform = getCurrentTextTransform();\n if (!font.vertical) {\n textContentItem.width = textContentItem.totalWidth = 0;\n textContentItem.height = textContentItem.totalHeight = Math.hypot(trm[2], trm[3]);\n textContentItem.vertical = false;\n } else {\n textContentItem.width = textContentItem.totalWidth = Math.hypot(trm[0], trm[1]);\n textContentItem.height = textContentItem.totalHeight = 0;\n textContentItem.vertical = true;\n }\n const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n const {\n fontSize\n } = textState;\n textContentItem.trackingSpaceMin = fontSize * TRACKING_SPACE_FACTOR;\n textContentItem.notASpace = fontSize * NOT_A_SPACE_FACTOR;\n textContentItem.negativeSpaceMax = fontSize * NEGATIVE_SPACE_FACTOR;\n textContentItem.spaceInFlowMin = fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n textContentItem.spaceInFlowMax = fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n textContentItem.hasEOL = false;\n textContentItem.initialized = true;\n return textContentItem;\n }\n function updateAdvanceScale() {\n if (!textContentItem.initialized) {\n return;\n }\n const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);\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 if (!textContentItem.vertical) {\n textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;\n textContentItem.width = 0;\n } else {\n textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;\n textContentItem.height = 0;\n }\n textContentItem.textAdvanceScale = scaleFactor;\n }\n function runBidiTransform(textChunk) {\n let text = textChunk.str.join(\"\");\n if (!disableNormalization) {\n text = normalizeUnicode(text);\n }\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 async function handleSetFont(fontName, fontRef) {\n const translated = await self.loadFont(fontName, fontRef, resources);\n if (translated.font.isType3Font) {\n try {\n await translated.loadType3Data(self, resources, task);\n } catch {}\n }\n textState.loadedName = translated.loadedName;\n textState.font = translated.font;\n textState.fontMatrix = translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n }\n function applyInverseRotation(x, y, matrix) {\n const scale = Math.hypot(matrix[0], matrix[1]);\n return [(matrix[0] * x + matrix[1] * y) / scale, (matrix[2] * x + matrix[3] * y) / scale];\n }\n function compareWithLastPosition(glyphWidth) {\n const currentTransform = getCurrentTextTransform();\n let posX = currentTransform[4];\n let posY = currentTransform[5];\n if (textState.font?.vertical) {\n if (posX < viewBox[0] || posX > viewBox[2] || posY + glyphWidth < viewBox[1] || posY > viewBox[3]) {\n return false;\n }\n } else if (posX + glyphWidth < viewBox[0] || posX > viewBox[2] || posY < viewBox[1] || posY > viewBox[3]) {\n return false;\n }\n if (!textState.font || !textContentItem.prevTransform) {\n return true;\n }\n let lastPosX = textContentItem.prevTransform[4];\n let lastPosY = textContentItem.prevTransform[5];\n if (lastPosX === posX && lastPosY === posY) {\n return true;\n }\n let rotate = -1;\n if (currentTransform[0] && currentTransform[1] === 0 && currentTransform[2] === 0) {\n rotate = currentTransform[0] > 0 ? 0 : 180;\n } else if (currentTransform[1] && currentTransform[0] === 0 && currentTransform[3] === 0) {\n rotate = currentTransform[1] > 0 ? 90 : 270;\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] = [-posX, -posY, -lastPosX, -lastPosY];\n break;\n case 270:\n [posX, posY] = [-posY, -posX];\n [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n break;\n default:\n [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\n [lastPosX, lastPosY] = applyInverseRotation(lastPosX, lastPosY, textContentItem.prevTransform);\n }\n if (textState.font.vertical) {\n const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n const advanceX = posX - lastPosX;\n const textOrientation = Math.sign(textContentItem.height);\n if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {\n if (Math.abs(advanceX) > 0.5 * textContentItem.width) {\n appendEOL();\n return true;\n }\n resetLastChars();\n flushTextContentItem();\n return true;\n }\n if (Math.abs(advanceX) > textContentItem.width) {\n appendEOL();\n return true;\n }\n if (advanceY <= textOrientation * textContentItem.notASpace) {\n resetLastChars();\n }\n if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {\n if (shouldAddWhitepsace()) {\n resetLastChars();\n flushTextContentItem();\n pushWhitespace({\n height: Math.abs(advanceY)\n });\n } else {\n textContentItem.height += advanceY;\n }\n } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform, textOrientation)) {\n if (textContentItem.str.length === 0) {\n resetLastChars();\n pushWhitespace({\n height: Math.abs(advanceY)\n });\n } else {\n textContentItem.height += advanceY;\n }\n }\n if (Math.abs(advanceX) > textContentItem.width * VERTICAL_SHIFT_RATIO) {\n flushTextContentItem();\n }\n return true;\n }\n const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n const advanceY = posY - lastPosY;\n const textOrientation = Math.sign(textContentItem.width);\n if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {\n if (Math.abs(advanceY) > 0.5 * textContentItem.height) {\n appendEOL();\n return true;\n }\n resetLastChars();\n flushTextContentItem();\n return true;\n }\n if (Math.abs(advanceY) > textContentItem.height) {\n appendEOL();\n return true;\n }\n if (advanceX <= textOrientation * textContentItem.notASpace) {\n resetLastChars();\n }\n if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {\n if (shouldAddWhitepsace()) {\n resetLastChars();\n flushTextContentItem();\n pushWhitespace({\n width: Math.abs(advanceX)\n });\n } else {\n textContentItem.width += advanceX;\n }\n } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)) {\n if (textContentItem.str.length === 0) {\n resetLastChars();\n pushWhitespace({\n width: Math.abs(advanceX)\n });\n } else {\n textContentItem.width += advanceX;\n }\n }\n if (Math.abs(advanceY) > textContentItem.height * VERTICAL_SHIFT_RATIO) {\n flushTextContentItem();\n }\n return true;\n }\n function buildTextContentItem({\n chars,\n extraSpacing\n }) {\n const font = textState.font;\n if (!chars) {\n const charSpacing = textState.charSpacing + extraSpacing;\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n if (keepWhiteSpace) {\n compareWithLastPosition(0);\n }\n return;\n }\n const glyphs = font.charsToGlyphs(chars);\n const scale = textState.fontMatrix[0] * textState.fontSize;\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const glyph = glyphs[i];\n const {\n category\n } = glyph;\n if (category.isInvisibleFormatMark) {\n continue;\n }\n let charSpacing = textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\n let glyphWidth = glyph.width;\n if (font.vertical) {\n glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n }\n let scaledDim = glyphWidth * scale;\n if (!keepWhiteSpace && category.isWhitespace) {\n if (!font.vertical) {\n charSpacing += scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n } else {\n charSpacing += -scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(0, -charSpacing);\n }\n saveLastChar(\" \");\n continue;\n }\n if (!category.isZeroWidthDiacritic && !compareWithLastPosition(scaledDim)) {\n if (!font.vertical) {\n textState.translateTextMatrix(scaledDim * textState.textHScale, 0);\n } else {\n textState.translateTextMatrix(0, scaledDim);\n }\n continue;\n }\n const textChunk = ensureTextContentItem();\n if (category.isZeroWidthDiacritic) {\n scaledDim = 0;\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 if (scaledDim) {\n textChunk.prevTransform = getCurrentTextTransform();\n }\n const glyphUnicode = glyph.unicode;\n if (saveLastChar(glyphUnicode)) {\n textChunk.str.push(\" \");\n }\n textChunk.str.push(glyphUnicode);\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n }\n }\n function appendEOL() {\n resetLastChars();\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.loadedName,\n hasEOL: true\n });\n }\n }\n function addFakeSpaces(width, transf, textOrientation) {\n if (textOrientation * textContentItem.spaceInFlowMin <= width && width <= textOrientation * textContentItem.spaceInFlowMax) {\n if (textContentItem.initialized) {\n resetLastChars();\n textContentItem.str.push(\" \");\n }\n return false;\n }\n const fontName = textContentItem.fontName;\n let height = 0;\n if (textContentItem.vertical) {\n height = width;\n width = 0;\n }\n flushTextContentItem();\n resetLastChars();\n pushWhitespace({\n width: Math.abs(width),\n height: Math.abs(height),\n transform: transf || getCurrentTextTransform(),\n fontName\n });\n return true;\n }\n function flushTextContentItem() {\n if (!textContentItem.initialized || !textContentItem.str) {\n return;\n }\n if (!textContentItem.vertical) {\n textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;\n } else {\n textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;\n }\n textContent.items.push(runBidiTransform(textContentItem));\n textContentItem.initialized = false;\n textContentItem.str.length = 0;\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 const timeSlotManager = new TimeSlotManager();\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n enqueueChunk(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 const operation = {};\n let stop,\n name,\n isValidName,\n args = [];\n while (!(stop = timeSlotManager.check())) {\n args.length = 0;\n operation.args = args;\n if (!preprocessor.read(operation)) {\n break;\n }\n const previousState = textState;\n textState = stateManager.state;\n const fn = operation.fn;\n args = operation.args;\n switch (fn | 0) {\n case OPS.setFont:\n const fontNameArg = args[0].name,\n fontSizeArg = args[1];\n if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {\n break;\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(args[0], args[1], args[2], args[3], args[4], args[5]);\n textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\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 const spaceFactor = (textState.font.vertical ? 1 : -1) * textState.fontSize / 1000;\n const elements = args[0];\n for (let i = 0, ii = elements.length; i < ii; i++) {\n const item = elements[i];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n } else if (typeof item === \"number\" && item !== 0) {\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: item * spaceFactor\n });\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 xobjs ??= resources.get(\"XObject\") || Dict.empty;\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n if (isValidName && emptyXObjectCache.getByName(name)) {\n break;\n }\n next(new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n if (emptyXObjectCache.getByRef(xobj)) {\n resolveXObject();\n return;\n }\n const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);\n if (globalImage) {\n resolveXObject();\n return;\n }\n xobj = xref.fetch(xobj);\n }\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\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 if (type.name !== \"Form\") {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n resolveXObject();\n return;\n }\n const currentState = stateManager.state.clone();\n const xObjStateManager = new StateManager(currentState);\n const matrix = lookupMatrix(xobj.dict.getArray(\"Matrix\"), null);\n if (matrix) {\n xObjStateManager.transform(matrix);\n }\n enqueueChunk();\n const sinkWrapper = {\n enqueueInvoked: false,\n enqueue(chunk, size) {\n this.enqueueInvoked = true;\n sink.enqueue(chunk, size);\n },\n get desiredSize() {\n return sink.desiredSize;\n },\n get ready() {\n return sink.ready;\n }\n };\n self.getTextContent({\n stream: xobj,\n task,\n resources: xobj.dict.get(\"Resources\") || resources,\n stateManager: xObjStateManager,\n includeMarkedContent,\n sink: sinkWrapper,\n seenStyles,\n viewBox,\n lang,\n markedContentData,\n disableNormalization,\n keepWhiteSpace\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 warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n }));\n return;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n if (isValidName && emptyGStateCache.getByName(name)) {\n break;\n }\n next(new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n const gState = extGState.get(name);\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n const gStateFont = gState.get(\"Font\");\n if (!gStateFont) {\n emptyGStateCache.set(name, gState.objId, true);\n resolveGState();\n return;\n }\n flushTextContentItem();\n textState.fontName = null;\n textState.fontSize = gStateFont[1];\n handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n }));\n return;\n case OPS.beginMarkedContent:\n flushTextContentItem();\n if (includeMarkedContent) {\n markedContentData.level++;\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 flushTextContentItem();\n if (includeMarkedContent) {\n markedContentData.level++;\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) ? `${self.idFactory.getPageObjId()}_mc${mcid}` : null,\n tag: args[0] instanceof Name ? args[0].name : null\n });\n }\n break;\n case OPS.endMarkedContent:\n flushTextContentItem();\n if (includeMarkedContent) {\n if (markedContentData.level === 0) {\n break;\n }\n markedContentData.level--;\n textContent.items.push({\n type: \"endMarkedContent\"\n });\n }\n break;\n case OPS.restore:\n if (previousState && (previousState.font !== textState.font || previousState.fontSize !== textState.fontSize || previousState.fontName !== textState.fontName)) {\n flushTextContentItem();\n }\n break;\n }\n if (textContent.items.length >= sink.desiredSize) {\n stop = true;\n break;\n }\n }\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 warn(`getTextContent - ignoring errors during \"${task.name}\" ` + `task: \"${reason}\".`);\n flushTextContentItem();\n enqueueChunk();\n return;\n }\n throw reason;\n });\n }\n async extractDataStructures(dict, properties) {\n const xref = this.xref;\n let cidToGidBytes;\n const toUnicodePromise = this.readToUnicode(properties.toUnicode);\n if (properties.composite) {\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 try {\n const cidToGidMap = dict.get(\"CIDToGIDMap\");\n if (cidToGidMap instanceof BaseStream) {\n cidToGidBytes = cidToGidMap.getBytes();\n }\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`extractDataStructures - ignoring CIDToGIDMap data: \"${ex}\".`);\n }\n }\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 = baseEncodingName instanceof Name ? baseEncodingName.name : null;\n if (encoding.has(\"Differences\")) {\n const diffEncoding = encoding.get(\"Differences\");\n let index = 0;\n for (const entry of diffEncoding) {\n const data = xref.fetchIfRef(entry);\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(`Invalid entry in 'Differences' array: ${data}`);\n }\n }\n }\n } else if (encoding instanceof Name) {\n baseEncodingName = encoding.name;\n } else {\n const msg = \"Encoding is not a Name nor a Dict\";\n if (!this.options.ignoreErrors) {\n throw new FormatError(msg);\n }\n warn(msg);\n }\n if (baseEncodingName !== \"MacRomanEncoding\" && baseEncodingName !== \"MacExpertEncoding\" && baseEncodingName !== \"WinAnsiEncoding\") {\n baseEncodingName = null;\n }\n }\n const nonEmbeddedFont = !properties.file || properties.isInternalFont,\n isSymbolsFontName = getSymbolsFonts()[properties.name];\n if (baseEncodingName && nonEmbeddedFont && isSymbolsFontName) {\n baseEncodingName = null;\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 encoding = StandardEncoding;\n if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n encoding = WinAnsiEncoding;\n }\n if (isSymbolicFont || isSymbolsFontName) {\n encoding = MacRomanEncoding;\n if (nonEmbeddedFont) {\n if (/Symbol/i.test(properties.name)) {\n encoding = SymbolSetEncoding;\n } else if (/Dingbats/i.test(properties.name)) {\n encoding = ZapfDingbatsEncoding;\n } else if (/Wingdings/i.test(properties.name)) {\n encoding = WinAnsiEncoding;\n }\n }\n }\n properties.defaultEncoding = encoding;\n }\n properties.differences = differences;\n properties.baseEncodingName = baseEncodingName;\n properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n properties.dict = dict;\n properties.toUnicode = await toUnicodePromise;\n const builtToUnicode = await this.buildToUnicode(properties);\n properties.toUnicode = builtToUnicode;\n if (cidToGidBytes) {\n properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode);\n }\n return properties;\n }\n _simpleFontToUnicode(properties, forceGlyphs = false) {\n assert(!properties.composite, \"Must be a simple font.\");\n const toUnicode = [];\n const encoding = properties.defaultEncoding.slice();\n const baseEncodingName = properties.baseEncodingName;\n const differences = properties.differences;\n for (const charcode in differences) {\n const glyphName = differences[charcode];\n if (glyphName === \".notdef\") {\n continue;\n }\n encoding[charcode] = glyphName;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (const charcode in encoding) {\n let glyphName = encoding[charcode];\n if (glyphName === \"\") {\n continue;\n }\n let unicode = glyphsUnicodeMap[glyphName];\n if (unicode !== undefined) {\n toUnicode[charcode] = String.fromCharCode(unicode);\n continue;\n }\n let code = 0;\n switch (glyphName[0]) {\n case \"G\":\n if (glyphName.length === 3) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"g\":\n if (glyphName.length === 5) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"C\":\n case \"c\":\n if (glyphName.length >= 3 && glyphName.length <= 4) {\n const codeStr = glyphName.substring(1);\n if (forceGlyphs) {\n code = parseInt(codeStr, 16);\n break;\n }\n code = +codeStr;\n if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {\n return this._simpleFontToUnicode(properties, true);\n }\n }\n break;\n case \"u\":\n unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n code = unicode;\n }\n break;\n default:\n switch (glyphName) {\n case \"f_h\":\n case \"f_t\":\n case \"T_h\":\n toUnicode[charcode] = glyphName.replaceAll(\"_\", \"\");\n continue;\n }\n break;\n }\n if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n if (baseEncodingName && code === +charcode) {\n const baseEncoding = getEncoding(baseEncodingName);\n if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n continue;\n }\n }\n toUnicode[charcode] = String.fromCodePoint(code);\n }\n }\n return toUnicode;\n }\n async buildToUnicode(properties) {\n properties.hasIncludedToUnicodeMap = properties.toUnicode?.length > 0;\n if (properties.hasIncludedToUnicodeMap) {\n if (!properties.composite && properties.hasEncoding) {\n properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n }\n return properties.toUnicode;\n }\n if (!properties.composite) {\n return new ToUnicodeMap(this._simpleFontToUnicode(properties));\n }\n if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof IdentityCMap) || properties.cidSystemInfo?.registry === \"Adobe\" && (properties.cidSystemInfo.ordering === \"GB1\" || properties.cidSystemInfo.ordering === \"CNS1\" || properties.cidSystemInfo.ordering === \"Japan1\" || properties.cidSystemInfo.ordering === \"Korea1\"))) {\n const {\n registry,\n ordering\n } = properties.cidSystemInfo;\n const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\n const ucs2CMap = await CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n const toUnicode = [],\n buf = [];\n properties.cMap.forEach(function (charcode, cid) {\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n const ucs2 = ucs2CMap.lookup(cid);\n if (ucs2) {\n buf.length = 0;\n for (let i = 0, ii = ucs2.length; i < ii; i += 2) {\n buf.push((ucs2.charCodeAt(i) << 8) + ucs2.charCodeAt(i + 1));\n }\n toUnicode[charcode] = String.fromCharCode(...buf);\n }\n });\n return new ToUnicodeMap(toUnicode);\n }\n return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n }\n async readToUnicode(cmapObj) {\n if (!cmapObj) {\n return null;\n }\n if (cmapObj instanceof Name) {\n const cmap = await CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n return new ToUnicodeMap(cmap.getMap());\n }\n if (cmapObj instanceof BaseStream) {\n try {\n const cmap = await CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null\n });\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n const map = new Array(cmap.length);\n cmap.forEach(function (charCode, token) {\n if (typeof token === \"number\") {\n map[charCode] = String.fromCodePoint(token);\n return;\n }\n if (token.length % 2 !== 0) {\n token = \"\\u0000\" + token;\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 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(...str);\n });\n return new ToUnicodeMap(map);\n } catch (reason) {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n return null;\n }\n throw reason;\n }\n }\n return null;\n }\n readCidToGidMap(glyphsData, toUnicode) {\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 extractWidths(dict, descriptor, properties) {\n const xref = this.xref;\n let glyphsWidths = [];\n let defaultWidth = 0;\n const glyphsVMetrics = [];\n let defaultVMetrics;\n if (properties.composite) {\n const dw = dict.get(\"DW\");\n defaultWidth = typeof dw === \"number\" ? Math.ceil(dw) : 1000;\n const widths = dict.get(\"W\");\n if (Array.isArray(widths)) {\n for (let i = 0, ii = widths.length; i < ii; i++) {\n let start = xref.fetchIfRef(widths[i++]);\n if (!Number.isInteger(start)) {\n break;\n }\n const code = xref.fetchIfRef(widths[i]);\n if (Array.isArray(code)) {\n for (const c of code) {\n const width = xref.fetchIfRef(c);\n if (typeof width === \"number\") {\n glyphsWidths[start] = width;\n }\n start++;\n }\n } else if (Number.isInteger(code)) {\n const width = xref.fetchIfRef(widths[++i]);\n if (typeof width !== \"number\") {\n continue;\n }\n for (let j = start; j <= code; j++) {\n glyphsWidths[j] = width;\n }\n } else {\n break;\n }\n }\n }\n if (properties.vertical) {\n const dw2 = dict.getArray(\"DW2\");\n let vmetrics = isNumberArray(dw2, 2) ? dw2 : [880, -1000];\n defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n vmetrics = dict.get(\"W2\");\n if (Array.isArray(vmetrics)) {\n for (let i = 0, ii = vmetrics.length; i < ii; i++) {\n let start = xref.fetchIfRef(vmetrics[i++]);\n if (!Number.isInteger(start)) {\n break;\n }\n const code = xref.fetchIfRef(vmetrics[i]);\n if (Array.isArray(code)) {\n for (let j = 0, jj = code.length; j < jj; j++) {\n const vmetric = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])];\n if (isNumberArray(vmetric, null)) {\n glyphsVMetrics[start] = vmetric;\n }\n start++;\n }\n } else if (Number.isInteger(code)) {\n const vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])];\n if (!isNumberArray(vmetric, null)) {\n continue;\n }\n for (let j = start; j <= code; j++) {\n glyphsVMetrics[j] = vmetric;\n }\n } else {\n break;\n }\n }\n }\n }\n } else {\n const widths = dict.get(\"Widths\");\n if (Array.isArray(widths)) {\n let j = properties.firstChar;\n for (const w of widths) {\n const width = xref.fetchIfRef(w);\n if (typeof width === \"number\") {\n glyphsWidths[j] = width;\n }\n j++;\n }\n const missingWidth = descriptor.get(\"MissingWidth\");\n defaultWidth = typeof missingWidth === \"number\" ? missingWidth : 0;\n } else {\n const baseFontName = dict.get(\"BaseFont\");\n if (baseFontName instanceof Name) {\n const metrics = this.getBaseFontMetrics(baseFontName.name);\n glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n defaultWidth = metrics.defaultWidth;\n }\n }\n }\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 } else {\n properties.flags &= ~FontFlags.FixedPitch;\n }\n properties.defaultWidth = defaultWidth;\n properties.widths = glyphsWidths;\n properties.defaultVMetrics = defaultVMetrics;\n properties.vmetrics = glyphsVMetrics;\n }\n isSerifFont(baseFontName) {\n const fontNameWoStyle = baseFontName.split(\"-\", 1)[0];\n return fontNameWoStyle in getSerifFonts() || /serif/gi.test(fontNameWoStyle);\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 if (!(lookupName in Metrics)) {\n lookupName = this.isSerifFont(name) ? \"Times-Roman\" : \"Helvetica\";\n }\n const glyphWidths = Metrics[lookupName];\n if (typeof glyphWidths === \"number\") {\n defaultWidth = glyphWidths;\n monospace = true;\n } else {\n widths = glyphWidths();\n }\n return {\n defaultWidth,\n monospace,\n widths\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 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 let composite = false;\n let hash;\n if (type.name === \"Type0\") {\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 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 let firstChar = dict.get(\"FirstChar\");\n if (!Number.isInteger(firstChar)) {\n firstChar = 0;\n }\n let lastChar = dict.get(\"LastChar\");\n if (!Number.isInteger(lastChar)) {\n lastChar = composite ? 0xffff : 0xff;\n }\n const descriptor = dict.get(\"FontDescriptor\");\n const toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n if (descriptor) {\n hash = new MurmurHash3_64();\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 const diffLength = entry.length,\n diffBuf = new Array(diffLength);\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 (typeof diffEntry === \"number\" || diffEntry instanceof Ref) {\n diffBuf[j] = diffEntry.toString();\n }\n }\n hash.update(diffBuf.join());\n }\n }\n }\n hash.update(`${firstChar}-${lastChar}`);\n if (toUnicode instanceof BaseStream) {\n const stream = toUnicode.str || toUnicode;\n const uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);\n hash.update(uint8array);\n } else if (toUnicode instanceof Name) {\n hash.update(toUnicode.name);\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 if (composite) {\n hash.update(\"compositeFont\");\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 const cidToGidMap = 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 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 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 if (!descriptor) {\n if (isType3Font) {\n const bbox = lookupNormalRect(dict.getArray(\"FontBBox\"), [0, 0, 0, 0]);\n descriptor = new Dict(null);\n descriptor.set(\"FontName\", Name.get(type));\n descriptor.set(\"FontBBox\", bbox);\n } else {\n let baseFontName = dict.get(\"BaseFont\");\n if (!(baseFontName instanceof Name)) {\n throw new FormatError(\"Base font is not specified\");\n }\n baseFontName = baseFontName.name.replaceAll(/[,_]/g, \"-\");\n const metrics = this.getBaseFontMetrics(baseFontName);\n const fontNameWoStyle = baseFontName.split(\"-\", 1)[0];\n const flags = (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) | (metrics.monospace ? FontFlags.FixedPitch : 0) | (getSymbolsFonts()[fontNameWoStyle] ? FontFlags.Symbolic : FontFlags.Nonsymbolic);\n const properties = {\n type,\n name: baseFontName,\n loadedName: baseDict.loadedName,\n systemFontInfo: null,\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 const standardFontName = getStandardFontName(baseFontName);\n let file = null;\n if (standardFontName) {\n file = await this.fetchStandardFontData(standardFontName);\n properties.isInternalFont = !!file;\n }\n if (!properties.isInternalFont && this.options.useSystemFonts) {\n properties.systemFontInfo = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, baseFontName, standardFontName, type);\n }\n const newProperties = await this.extractDataStructures(dict, properties);\n if (Array.isArray(widths)) {\n const glyphWidths = [];\n let j = firstChar;\n for (const w of widths) {\n const width = this.xref.fetchIfRef(w);\n if (typeof width === \"number\") {\n glyphWidths[j] = width;\n }\n j++;\n }\n newProperties.widths = glyphWidths;\n } else {\n newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);\n }\n return new Font(baseFontName, file, newProperties);\n }\n }\n let fontName = descriptor.get(\"FontName\");\n let baseFont = dict.get(\"BaseFont\");\n if (typeof fontName === \"string\") {\n fontName = Name.get(fontName);\n }\n if (typeof baseFont === \"string\") {\n baseFont = Name.get(baseFont);\n }\n const fontNameStr = fontName?.name;\n const baseFontStr = baseFont?.name;\n if (!isType3Font && fontNameStr !== baseFontStr) {\n info(`The FontDescriptor's FontName is \"${fontNameStr}\" but ` + `should be the same as the Font's BaseFont \"${baseFontStr}\".`);\n if (fontNameStr && baseFontStr && (baseFontStr.startsWith(fontNameStr) || !isKnownFontName(fontNameStr) && isKnownFontName(baseFontStr))) {\n fontName = null;\n }\n }\n fontName ||= baseFont;\n if (!(fontName instanceof Name)) {\n throw new FormatError(\"invalid font name\");\n }\n let fontFile, subtype, length1, length2, length3;\n try {\n fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n if (fontFile) {\n if (!(fontFile instanceof BaseStream)) {\n throw new FormatError(\"FontFile should be a stream\");\n } else if (fontFile.isEmpty) {\n throw new FormatError(\"FontFile is empty\");\n }\n }\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n fontFile = null;\n }\n let isInternalFont = false;\n let glyphScaleFactors = null;\n let systemFontInfo = 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 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 baseDict = dict = getXfaFontDict(fontName.name);\n composite = true;\n }\n } else if (!isType3Font) {\n const standardFontName = getStandardFontName(fontName.name);\n if (standardFontName) {\n fontFile = await this.fetchStandardFontData(standardFontName);\n isInternalFont = !!fontFile;\n }\n if (!isInternalFont && this.options.useSystemFonts) {\n systemFontInfo = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, fontName.name, standardFontName, type);\n }\n }\n const fontMatrix = lookupMatrix(dict.getArray(\"FontMatrix\"), FONT_IDENTITY_MATRIX);\n const bbox = lookupNormalRect(descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"), undefined);\n let ascent = descriptor.get(\"Ascent\");\n if (typeof ascent !== \"number\") {\n ascent = undefined;\n }\n let descent = descriptor.get(\"Descent\");\n if (typeof descent !== \"number\") {\n descent = undefined;\n }\n let xHeight = descriptor.get(\"XHeight\");\n if (typeof xHeight !== \"number\") {\n xHeight = 0;\n }\n let capHeight = descriptor.get(\"CapHeight\");\n if (typeof capHeight !== \"number\") {\n capHeight = 0;\n }\n let flags = descriptor.get(\"Flags\");\n if (!Number.isInteger(flags)) {\n flags = 0;\n }\n let italicAngle = descriptor.get(\"ItalicAngle\");\n if (typeof italicAngle !== \"number\") {\n italicAngle = 0;\n }\n const properties = {\n type,\n name: fontName.name,\n subtype,\n file: fontFile,\n length1,\n length2,\n length3,\n isInternalFont,\n loadedName: baseDict.loadedName,\n composite,\n fixedPitch: false,\n fontMatrix,\n firstChar,\n lastChar,\n toUnicode,\n bbox,\n ascent,\n descent,\n xHeight,\n capHeight,\n flags,\n italicAngle,\n isType3Font,\n cssFontInfo,\n scaleFactors: glyphScaleFactors,\n systemFontInfo\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 const newProperties = await this.extractDataStructures(dict, properties);\n this.extractWidths(dict, descriptor, newProperties);\n return new Font(fontName.name, fontFile, newProperties);\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\", [glyphName, \"FontPath\", font.renderer.getPathJs(fontChar)]);\n } catch (reason) {\n if (evaluatorOptions.ignoreErrors) {\n warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n }\n for (const glyph of glyphs) {\n buildPath(glyph.fontChar);\n const accent = glyph.accent;\n if (accent?.fontChar) {\n buildPath(accent.fontChar);\n }\n }\n }\n static get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"Helvetica\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\nclass TranslatedFont {\n constructor({\n loadedName,\n font,\n dict,\n evaluatorOptions\n }) {\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 send(handler) {\n if (this.sent) {\n return;\n }\n this.sent = true;\n handler.send(\"commonobj\", [this.loadedName, \"Font\", this.font.exportData(this._evaluatorOptions.fontExtraProperties)]);\n }\n fallback(handler) {\n if (!this.font.data) {\n return;\n }\n this.font.disableFontFace = true;\n PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, this._evaluatorOptions);\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 const type3Evaluator = evaluator.clone({\n ignoreErrors: false\n });\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 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 const fontBBox = Util.normalizeRect(translatedFont.bbox || [0, 0, 0, 0]),\n width = fontBBox[2] - fontBBox[0],\n height = fontBBox[3] - fontBBox[1];\n const fontBBoxSize = Math.hypot(width, height);\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.getOperatorList({\n stream: glyphStream,\n task,\n resources: fontResources,\n operatorList\n }).then(() => {\n if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\n this._removeType3ColorOperators(operatorList, fontBBoxSize);\n }\n charProcOperatorList[key] = operatorList.getIR();\n for (const dependency of operatorList.dependencies) {\n type3Dependencies.add(dependency);\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 _removeType3ColorOperators(operatorList, fontBBoxSize = NaN) {\n const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2)),\n width = charBBox[2] - charBBox[0],\n height = charBBox[3] - charBBox[1];\n const charBBoxSize = Math.hypot(width, height);\n if (width === 0 || height === 0) {\n operatorList.fnArray.splice(0, 1);\n operatorList.argsArray.splice(0, 1);\n } else if (fontBBoxSize === 0 || Math.round(charBBoxSize / fontBBoxSize) >= 10) {\n if (!this._bbox) {\n this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\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 = 0,\n ii = operatorList.length;\n while (i < ii) {\n switch (operatorList.fnArray[i]) {\n case OPS.setCharWidthAndBounds:\n break;\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 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}\nclass StateManager {\n constructor(initialState = new EvalState()) {\n this.state = initialState;\n this.stateStack = [];\n }\n save() {\n const old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n }\n restore() {\n const prev = this.stateStack.pop();\n if (prev) {\n this.state = prev;\n }\n }\n transform(args) {\n this.state.ctm = Util.transform(this.state.ctm, args);\n }\n}\nclass TextState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.fontName = null;\n this.fontSize = 0;\n this.loadedName = null;\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 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 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 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 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 carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\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}\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 this.patternFillColorSpace = null;\n this.patternStrokeColorSpace = null;\n }\n get fillColorSpace() {\n return this._fillColorSpace;\n }\n set fillColorSpace(colorSpace) {\n this._fillColorSpace = this.patternFillColorSpace = colorSpace;\n }\n get strokeColorSpace() {\n return this._strokeColorSpace;\n }\n set strokeColorSpace(colorSpace) {\n this._strokeColorSpace = this.patternStrokeColorSpace = colorSpace;\n }\n clone() {\n return Object.create(this);\n }\n}\nclass EvaluatorPreprocessor {\n static get opMap() {\n return shadow(this, \"opMap\", Object.assign(Object.create(null), {\n w: {\n id: OPS.setLineWidth,\n numArgs: 1,\n variableArgs: false\n },\n J: {\n id: OPS.setLineCap,\n numArgs: 1,\n variableArgs: false\n },\n j: {\n id: OPS.setLineJoin,\n numArgs: 1,\n variableArgs: false\n },\n M: {\n id: OPS.setMiterLimit,\n numArgs: 1,\n variableArgs: false\n },\n d: {\n id: OPS.setDash,\n numArgs: 2,\n variableArgs: false\n },\n ri: {\n id: OPS.setRenderingIntent,\n numArgs: 1,\n variableArgs: false\n },\n i: {\n id: OPS.setFlatness,\n numArgs: 1,\n variableArgs: false\n },\n gs: {\n id: OPS.setGState,\n numArgs: 1,\n variableArgs: false\n },\n q: {\n id: OPS.save,\n numArgs: 0,\n variableArgs: false\n },\n Q: {\n id: OPS.restore,\n numArgs: 0,\n variableArgs: false\n },\n cm: {\n id: OPS.transform,\n numArgs: 6,\n variableArgs: false\n },\n m: {\n id: OPS.moveTo,\n numArgs: 2,\n variableArgs: false\n },\n l: {\n id: OPS.lineTo,\n numArgs: 2,\n variableArgs: false\n },\n c: {\n id: OPS.curveTo,\n numArgs: 6,\n variableArgs: false\n },\n v: {\n id: OPS.curveTo2,\n numArgs: 4,\n variableArgs: false\n },\n y: {\n id: OPS.curveTo3,\n numArgs: 4,\n variableArgs: false\n },\n h: {\n id: OPS.closePath,\n numArgs: 0,\n variableArgs: false\n },\n re: {\n id: OPS.rectangle,\n numArgs: 4,\n variableArgs: false\n },\n S: {\n id: OPS.stroke,\n numArgs: 0,\n variableArgs: false\n },\n s: {\n id: OPS.closeStroke,\n numArgs: 0,\n variableArgs: false\n },\n f: {\n id: OPS.fill,\n numArgs: 0,\n variableArgs: false\n },\n F: {\n id: OPS.fill,\n numArgs: 0,\n variableArgs: false\n },\n \"f*\": {\n id: OPS.eoFill,\n numArgs: 0,\n variableArgs: false\n },\n B: {\n id: OPS.fillStroke,\n numArgs: 0,\n variableArgs: false\n },\n \"B*\": {\n id: OPS.eoFillStroke,\n numArgs: 0,\n variableArgs: false\n },\n b: {\n id: OPS.closeFillStroke,\n numArgs: 0,\n variableArgs: false\n },\n \"b*\": {\n id: OPS.closeEOFillStroke,\n numArgs: 0,\n variableArgs: false\n },\n n: {\n id: OPS.endPath,\n numArgs: 0,\n variableArgs: false\n },\n W: {\n id: OPS.clip,\n numArgs: 0,\n variableArgs: false\n },\n \"W*\": {\n id: OPS.eoClip,\n numArgs: 0,\n variableArgs: false\n },\n BT: {\n id: OPS.beginText,\n numArgs: 0,\n variableArgs: false\n },\n ET: {\n id: OPS.endText,\n numArgs: 0,\n variableArgs: false\n },\n Tc: {\n id: OPS.setCharSpacing,\n numArgs: 1,\n variableArgs: false\n },\n Tw: {\n id: OPS.setWordSpacing,\n numArgs: 1,\n variableArgs: false\n },\n Tz: {\n id: OPS.setHScale,\n numArgs: 1,\n variableArgs: false\n },\n TL: {\n id: OPS.setLeading,\n numArgs: 1,\n variableArgs: false\n },\n Tf: {\n id: OPS.setFont,\n numArgs: 2,\n variableArgs: false\n },\n Tr: {\n id: OPS.setTextRenderingMode,\n numArgs: 1,\n variableArgs: false\n },\n Ts: {\n id: OPS.setTextRise,\n numArgs: 1,\n variableArgs: false\n },\n Td: {\n id: OPS.moveText,\n numArgs: 2,\n variableArgs: false\n },\n TD: {\n id: OPS.setLeadingMoveText,\n numArgs: 2,\n variableArgs: false\n },\n Tm: {\n id: OPS.setTextMatrix,\n numArgs: 6,\n variableArgs: false\n },\n \"T*\": {\n id: OPS.nextLine,\n numArgs: 0,\n variableArgs: false\n },\n Tj: {\n id: OPS.showText,\n numArgs: 1,\n variableArgs: false\n },\n TJ: {\n id: OPS.showSpacedText,\n numArgs: 1,\n variableArgs: false\n },\n \"'\": {\n id: OPS.nextLineShowText,\n numArgs: 1,\n variableArgs: false\n },\n '\"': {\n id: OPS.nextLineSetSpacingShowText,\n numArgs: 3,\n variableArgs: false\n },\n d0: {\n id: OPS.setCharWidth,\n numArgs: 2,\n variableArgs: false\n },\n d1: {\n id: OPS.setCharWidthAndBounds,\n numArgs: 6,\n variableArgs: false\n },\n CS: {\n id: OPS.setStrokeColorSpace,\n numArgs: 1,\n variableArgs: false\n },\n cs: {\n id: OPS.setFillColorSpace,\n numArgs: 1,\n variableArgs: false\n },\n SC: {\n id: OPS.setStrokeColor,\n numArgs: 4,\n variableArgs: true\n },\n SCN: {\n id: OPS.setStrokeColorN,\n numArgs: 33,\n variableArgs: true\n },\n sc: {\n id: OPS.setFillColor,\n numArgs: 4,\n variableArgs: true\n },\n scn: {\n id: OPS.setFillColorN,\n numArgs: 33,\n variableArgs: true\n },\n G: {\n id: OPS.setStrokeGray,\n numArgs: 1,\n variableArgs: false\n },\n g: {\n id: OPS.setFillGray,\n numArgs: 1,\n variableArgs: false\n },\n RG: {\n id: OPS.setStrokeRGBColor,\n numArgs: 3,\n variableArgs: false\n },\n rg: {\n id: OPS.setFillRGBColor,\n numArgs: 3,\n variableArgs: false\n },\n K: {\n id: OPS.setStrokeCMYKColor,\n numArgs: 4,\n variableArgs: false\n },\n k: {\n id: OPS.setFillCMYKColor,\n numArgs: 4,\n variableArgs: false\n },\n sh: {\n id: OPS.shadingFill,\n numArgs: 1,\n variableArgs: false\n },\n BI: {\n id: OPS.beginInlineImage,\n numArgs: 0,\n variableArgs: false\n },\n ID: {\n id: OPS.beginImageData,\n numArgs: 0,\n variableArgs: false\n },\n EI: {\n id: OPS.endInlineImage,\n numArgs: 1,\n variableArgs: false\n },\n Do: {\n id: OPS.paintXObject,\n numArgs: 1,\n variableArgs: false\n },\n MP: {\n id: OPS.markPoint,\n numArgs: 1,\n variableArgs: false\n },\n DP: {\n id: OPS.markPointProps,\n numArgs: 2,\n variableArgs: false\n },\n BMC: {\n id: OPS.beginMarkedContent,\n numArgs: 1,\n variableArgs: false\n },\n BDC: {\n id: OPS.beginMarkedContentProps,\n numArgs: 2,\n variableArgs: false\n },\n EMC: {\n id: OPS.endMarkedContent,\n numArgs: 0,\n variableArgs: false\n },\n BX: {\n id: OPS.beginCompat,\n numArgs: 0,\n variableArgs: false\n },\n EX: {\n id: OPS.endCompat,\n numArgs: 0,\n variableArgs: false\n },\n BM: null,\n BD: null,\n true: null,\n fa: null,\n fal: null,\n fals: null,\n false: null,\n nu: null,\n nul: null,\n null: null\n }));\n }\n static MAX_INVALID_PATH_OPS = 10;\n constructor(stream, xref, stateManager = new StateManager()) {\n this.parser = new Parser({\n lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n xref\n });\n this.stateManager = stateManager;\n this.nonProcessedArgs = [];\n this._isPathOp = false;\n this._numInvalidPathOPS = 0;\n }\n get savedStatesDepth() {\n return this.stateManager.stateStack.length;\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 const opSpec = EvaluatorPreprocessor.opMap[cmd];\n if (!opSpec) {\n warn(`Unknown command \"${cmd}\".`);\n continue;\n }\n const fn = opSpec.id;\n const numArgs = opSpec.numArgs;\n let argsLength = args !== null ? args.length : 0;\n if (!this._isPathOp) {\n this._numInvalidPathOPS = 0;\n }\n this._isPathOp = fn >= OPS.moveTo && fn <= OPS.endPath;\n if (!opSpec.variableArgs) {\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 if (argsLength < numArgs) {\n const partialMsg = `command ${cmd}: expected ${numArgs} args, ` + `but received ${argsLength} args.`;\n if (this._isPathOp && ++this._numInvalidPathOPS > EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) {\n throw new FormatError(`Invalid ${partialMsg}`);\n }\n warn(`Skipping ${partialMsg}`);\n if (args !== null) {\n args.length = 0;\n }\n continue;\n }\n } else if (argsLength > numArgs) {\n info(`Command ${cmd}: expected [0, ${numArgs}] args, ` + `but received ${argsLength} args.`);\n }\n this.preprocessCommand(fn, args);\n operation.fn = fn;\n operation.args = args;\n return true;\n }\n if (obj === EOF) {\n return false;\n }\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 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\n;// ./src/core/default_appearance.js\n\n\n\n\n\n\n\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n constructor(str) {\n super(new StringStream(str));\n }\n parse() {\n const operation = {\n fn: 0,\n args: []\n };\n const result = {\n fontSize: 0,\n fontName: \"\",\n fontColor: new Uint8ClampedArray(3)\n };\n try {\n while (true) {\n operation.args.length = 0;\n if (!this.read(operation)) {\n break;\n }\n if (this.savedStatesDepth !== 0) {\n continue;\n }\n const {\n fn,\n args\n } = operation;\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.setFillCMYKColor:\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 return result;\n }\n}\nfunction parseDefaultAppearance(str) {\n return new DefaultAppearanceEvaluator(str).parse();\n}\nclass AppearanceStreamEvaluator extends EvaluatorPreprocessor {\n constructor(stream, evaluatorOptions, xref) {\n super(stream);\n this.stream = stream;\n this.evaluatorOptions = evaluatorOptions;\n this.xref = xref;\n this.resources = stream.dict?.get(\"Resources\");\n }\n parse() {\n const operation = {\n fn: 0,\n args: []\n };\n let result = {\n scaleFactor: 1,\n fontSize: 0,\n fontName: \"\",\n fontColor: new Uint8ClampedArray(3),\n fillColorSpace: ColorSpace.singletons.gray\n };\n let breakLoop = false;\n const stack = [];\n try {\n while (true) {\n operation.args.length = 0;\n if (breakLoop || !this.read(operation)) {\n break;\n }\n const {\n fn,\n args\n } = operation;\n switch (fn | 0) {\n case OPS.save:\n stack.push({\n scaleFactor: result.scaleFactor,\n fontSize: result.fontSize,\n fontName: result.fontName,\n fontColor: result.fontColor.slice(),\n fillColorSpace: result.fillColorSpace\n });\n break;\n case OPS.restore:\n result = stack.pop() || result;\n break;\n case OPS.setTextMatrix:\n result.scaleFactor *= Math.hypot(args[0], args[1]);\n break;\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 * result.scaleFactor;\n }\n break;\n case OPS.setFillColorSpace:\n result.fillColorSpace = ColorSpace.parse({\n cs: args[0],\n xref: this.xref,\n resources: this.resources,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache: this._localColorSpaceCache\n });\n break;\n case OPS.setFillColor:\n const cs = result.fillColorSpace;\n cs.getRgbItem(args, 0, result.fontColor, 0);\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.setFillCMYKColor:\n ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.showText:\n case OPS.showSpacedText:\n case OPS.nextLineShowText:\n case OPS.nextLineSetSpacingShowText:\n breakLoop = true;\n break;\n }\n }\n } catch (reason) {\n warn(`parseAppearanceStream - ignoring errors: \"${reason}\".`);\n }\n this.stream.reset();\n delete result.scaleFactor;\n delete result.fillColorSpace;\n return result;\n }\n get _localColorSpaceCache() {\n return shadow(this, \"_localColorSpaceCache\", new LocalColorSpaceCache());\n }\n get _pdfFunctionFactory() {\n const pdfFunctionFactory = new PDFFunctionFactory({\n xref: this.xref,\n isEvalSupported: this.evaluatorOptions.isEvalSupported\n });\n return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n }\n}\nfunction parseAppearanceStream(stream, evaluatorOptions, xref) {\n return new AppearanceStreamEvaluator(stream, evaluatorOptions, xref).parse();\n}\nfunction getPdfColor(color, isFill) {\n if (color[0] === color[1] && color[1] === color[2]) {\n const gray = color[0] / 255;\n return `${numberToString(gray)} ${isFill ? \"g\" : \"G\"}`;\n }\n return Array.from(color, c => numberToString(c / 255)).join(\" \") + ` ${isFill ? \"rg\" : \"RG\"}`;\n}\nfunction createDefaultAppearance({\n fontSize,\n fontName,\n fontColor\n}) {\n return `/${escapePDFName(fontName)} ${fontSize} Tf ${getPdfColor(fontColor, true)}`;\n}\nclass FakeUnicodeFont {\n constructor(xref, fontFamily) {\n this.xref = xref;\n this.widths = null;\n this.firstChar = Infinity;\n this.lastChar = -Infinity;\n this.fontFamily = fontFamily;\n const canvas = new OffscreenCanvas(1, 1);\n this.ctxMeasure = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n if (!FakeUnicodeFont._fontNameId) {\n FakeUnicodeFont._fontNameId = 1;\n }\n this.fontName = Name.get(`InvalidPDFjsFont_${fontFamily}_${FakeUnicodeFont._fontNameId++}`);\n }\n get fontDescriptorRef() {\n if (!FakeUnicodeFont._fontDescriptorRef) {\n const fontDescriptor = new Dict(this.xref);\n fontDescriptor.set(\"Type\", Name.get(\"FontDescriptor\"));\n fontDescriptor.set(\"FontName\", this.fontName);\n fontDescriptor.set(\"FontFamily\", \"MyriadPro Regular\");\n fontDescriptor.set(\"FontBBox\", [0, 0, 0, 0]);\n fontDescriptor.set(\"FontStretch\", Name.get(\"Normal\"));\n fontDescriptor.set(\"FontWeight\", 400);\n fontDescriptor.set(\"ItalicAngle\", 0);\n FakeUnicodeFont._fontDescriptorRef = this.xref.getNewPersistentRef(fontDescriptor);\n }\n return FakeUnicodeFont._fontDescriptorRef;\n }\n get descendantFontRef() {\n const descendantFont = new Dict(this.xref);\n descendantFont.set(\"BaseFont\", this.fontName);\n descendantFont.set(\"Type\", Name.get(\"Font\"));\n descendantFont.set(\"Subtype\", Name.get(\"CIDFontType0\"));\n descendantFont.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n descendantFont.set(\"FirstChar\", this.firstChar);\n descendantFont.set(\"LastChar\", this.lastChar);\n descendantFont.set(\"FontDescriptor\", this.fontDescriptorRef);\n descendantFont.set(\"DW\", 1000);\n const widths = [];\n const chars = [...this.widths.entries()].sort();\n let currentChar = null;\n let currentWidths = null;\n for (const [char, width] of chars) {\n if (!currentChar) {\n currentChar = char;\n currentWidths = [width];\n continue;\n }\n if (char === currentChar + currentWidths.length) {\n currentWidths.push(width);\n } else {\n widths.push(currentChar, currentWidths);\n currentChar = char;\n currentWidths = [width];\n }\n }\n if (currentChar) {\n widths.push(currentChar, currentWidths);\n }\n descendantFont.set(\"W\", widths);\n const cidSystemInfo = new Dict(this.xref);\n cidSystemInfo.set(\"Ordering\", \"Identity\");\n cidSystemInfo.set(\"Registry\", \"Adobe\");\n cidSystemInfo.set(\"Supplement\", 0);\n descendantFont.set(\"CIDSystemInfo\", cidSystemInfo);\n return this.xref.getNewPersistentRef(descendantFont);\n }\n get baseFontRef() {\n const baseFont = new Dict(this.xref);\n baseFont.set(\"BaseFont\", this.fontName);\n baseFont.set(\"Type\", Name.get(\"Font\"));\n baseFont.set(\"Subtype\", Name.get(\"Type0\"));\n baseFont.set(\"Encoding\", Name.get(\"Identity-H\"));\n baseFont.set(\"DescendantFonts\", [this.descendantFontRef]);\n baseFont.set(\"ToUnicode\", Name.get(\"Identity-H\"));\n return this.xref.getNewPersistentRef(baseFont);\n }\n get resources() {\n const resources = new Dict(this.xref);\n const font = new Dict(this.xref);\n font.set(this.fontName.name, this.baseFontRef);\n resources.set(\"Font\", font);\n return resources;\n }\n _createContext() {\n this.widths = new Map();\n this.ctxMeasure.font = `1000px ${this.fontFamily}`;\n return this.ctxMeasure;\n }\n createFontResources(text) {\n const ctx = this._createContext();\n for (const line of text.split(/\\r\\n?|\\n/)) {\n for (const char of line.split(\"\")) {\n const code = char.charCodeAt(0);\n if (this.widths.has(code)) {\n continue;\n }\n const metrics = ctx.measureText(char);\n const width = Math.ceil(metrics.width);\n this.widths.set(code, width);\n this.firstChar = Math.min(code, this.firstChar);\n this.lastChar = Math.max(code, this.lastChar);\n }\n }\n return this.resources;\n }\n static getFirstPositionInfo(rect, rotation, fontSize) {\n const [x1, y1, x2, y2] = rect;\n let w = x2 - x1;\n let h = y2 - y1;\n if (rotation % 180 !== 0) {\n [w, h] = [h, w];\n }\n const lineHeight = LINE_FACTOR * fontSize;\n const lineDescent = LINE_DESCENT_FACTOR * fontSize;\n return {\n coords: [0, h + lineDescent - lineHeight],\n bbox: [0, 0, w, h],\n matrix: rotation !== 0 ? getRotationMatrix(rotation, h, lineHeight) : undefined\n };\n }\n createAppearance(text, rect, rotation, fontSize, bgColor, strokeAlpha) {\n const ctx = this._createContext();\n const lines = [];\n let maxWidth = -Infinity;\n for (const line of text.split(/\\r\\n?|\\n/)) {\n lines.push(line);\n const lineWidth = ctx.measureText(line).width;\n maxWidth = Math.max(maxWidth, lineWidth);\n for (const code of codePointIter(line)) {\n const char = String.fromCodePoint(code);\n let width = this.widths.get(code);\n if (width === undefined) {\n const metrics = ctx.measureText(char);\n width = Math.ceil(metrics.width);\n this.widths.set(code, width);\n this.firstChar = Math.min(code, this.firstChar);\n this.lastChar = Math.max(code, this.lastChar);\n }\n }\n }\n maxWidth *= fontSize / 1000;\n const [x1, y1, x2, y2] = rect;\n let w = x2 - x1;\n let h = y2 - y1;\n if (rotation % 180 !== 0) {\n [w, h] = [h, w];\n }\n let hscale = 1;\n if (maxWidth > w) {\n hscale = w / maxWidth;\n }\n let vscale = 1;\n const lineHeight = LINE_FACTOR * fontSize;\n const lineDescent = LINE_DESCENT_FACTOR * fontSize;\n const maxHeight = lineHeight * lines.length;\n if (maxHeight > h) {\n vscale = h / maxHeight;\n }\n const fscale = Math.min(hscale, vscale);\n const newFontSize = fontSize * fscale;\n const buffer = [\"q\", `0 0 ${numberToString(w)} ${numberToString(h)} re W n`, `BT`, `1 0 0 1 0 ${numberToString(h + lineDescent)} Tm 0 Tc ${getPdfColor(bgColor, true)}`, `/${this.fontName.name} ${numberToString(newFontSize)} Tf`];\n const {\n resources\n } = this;\n strokeAlpha = typeof strokeAlpha === \"number\" && strokeAlpha >= 0 && strokeAlpha <= 1 ? strokeAlpha : 1;\n if (strokeAlpha !== 1) {\n buffer.push(\"/R0 gs\");\n const extGState = new Dict(this.xref);\n const r0 = new Dict(this.xref);\n r0.set(\"ca\", strokeAlpha);\n r0.set(\"CA\", strokeAlpha);\n r0.set(\"Type\", Name.get(\"ExtGState\"));\n extGState.set(\"R0\", r0);\n resources.set(\"ExtGState\", extGState);\n }\n const vShift = numberToString(lineHeight);\n for (const line of lines) {\n buffer.push(`0 -${vShift} Td <${stringToUTF16HexString(line)}> Tj`);\n }\n buffer.push(\"ET\", \"Q\");\n const appearance = buffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(this.xref);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", [0, 0, w, h]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n appearanceStreamDict.set(\"Resources\", resources);\n if (rotation) {\n const matrix = getRotationMatrix(rotation, w, h);\n appearanceStreamDict.set(\"Matrix\", matrix);\n }\n const ap = new StringStream(appearance);\n ap.dict = appearanceStreamDict;\n return ap;\n }\n}\n\n;// ./src/core/name_number_tree.js\n\n\nclass NameOrNumberTree {\n constructor(root, xref, type) {\n this.root = root;\n this.xref = xref;\n this._type = type;\n }\n getAll() {\n const map = new Map();\n if (!this.root) {\n return map;\n }\n const xref = this.xref;\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 if (!Array.isArray(kids)) {\n continue;\n }\n for (const kid of kids) {\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 getRaw(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 while (kidsOrEntries.has(\"Kids\")) {\n if (++loopCount > MAX_LEVELS) {\n warn(`Search depth limit reached for \"${this._type}\" tree.`);\n return null;\n }\n const kids = kidsOrEntries.get(\"Kids\");\n if (!Array.isArray(kids)) {\n return null;\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 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 = kid;\n break;\n }\n }\n if (l > r) {\n return null;\n }\n }\n const entries = kidsOrEntries.get(this._type);\n if (Array.isArray(entries)) {\n let l = 0,\n r = entries.length - 2;\n while (l <= r) {\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 entries[m + 1];\n }\n }\n }\n return null;\n }\n get(key) {\n return this.xref.fetchIfRef(this.getRaw(key));\n }\n}\nclass NameTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Names\");\n }\n}\nclass NumberTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Nums\");\n }\n}\n\n;// ./src/core/cleanup_helper.js\n\n\n\n\nfunction clearGlobalCaches() {\n clearPatternCaches();\n clearPrimitiveCaches();\n clearUnicodeCaches();\n JpxImage.cleanup();\n}\n\n;// ./src/core/file_spec.js\n\n\n\nfunction pickPlatformItem(dict) {\n if (!(dict instanceof Dict)) {\n return null;\n }\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}\nfunction stripPath(str) {\n return str.substring(str.lastIndexOf(\"/\") + 1);\n}\nclass FileSpec {\n #contentAvailable = false;\n constructor(root, xref, skipContent = false) {\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 if (root.has(\"RF\")) {\n warn(\"Related file specifications are not supported\");\n }\n if (!skipContent) {\n if (root.has(\"EF\")) {\n this.#contentAvailable = true;\n } else {\n warn(\"Non-embedded file specifications are not supported\");\n }\n }\n }\n get filename() {\n let filename = \"\";\n const item = pickPlatformItem(this.root);\n if (item && typeof item === \"string\") {\n filename = stringToPDFString(item).replaceAll(\"\\\\\\\\\", \"\\\\\").replaceAll(\"\\\\/\", \"/\").replaceAll(\"\\\\\", \"/\");\n }\n return shadow(this, \"filename\", filename || \"unnamed\");\n }\n get content() {\n if (!this.#contentAvailable) {\n return null;\n }\n this._contentRef ||= pickPlatformItem(this.root?.get(\"EF\"));\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(\"Embedded file specification points to non-existing/invalid content\");\n }\n } else {\n warn(\"Embedded file specification does not have any content\");\n }\n return content;\n }\n get description() {\n let description = \"\";\n const desc = this.root?.get(\"Desc\");\n if (desc && typeof desc === \"string\") {\n description = stringToPDFString(desc);\n }\n return shadow(this, \"description\", description);\n }\n get serializable() {\n return {\n rawFilename: this.filename,\n filename: stripPath(this.filename),\n content: this.content,\n description: this.description\n };\n }\n}\n\n;// ./src/core/xml_parser.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};\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\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}\nclass XMLParserBase {\n _resolveEntities(s) {\n return s.replaceAll(/&([^;]+);/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 _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"/\") {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n while (pos < s.length && s[pos] !== \">\" && s[pos] !== \"/\" && s[pos] !== \"?\") {\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 _parseProcessingInstruction(s, start) {\n let pos = start;\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"?\" && s[pos] !== \"/\") {\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 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(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n complexDoctype = true;\n }\n const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));\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 (s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\") {\n isClosed = true;\n } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== \">\") {\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 onResolveEntity(name) {\n return `&${name};`;\n }\n onPi(name, value) {}\n onComment(text) {}\n onCdata(text) {}\n onDoctype(doctypeContent) {}\n onText(text) {}\n onBeginElement(name, attributes, isEmpty) {}\n onEndElement(name) {}\n onError(code) {}\n}\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n Object.defineProperty(this, \"parentNode\", {\n value: null,\n writable: true\n });\n }\n get firstChild() {\n return this.childNodes?.[0];\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 get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n return this.childNodes.map(function (child) {\n return child.textContent;\n }).join(\"\");\n }\n get children() {\n return this.childNodes || [];\n }\n hasChildNodes() {\n return this.childNodes?.length > 0;\n }\n searchNode(paths, pos) {\n if (pos >= paths.length) {\n return this;\n }\n const component = paths[pos];\n if (component.name.startsWith(\"#\") && pos < paths.length - 1) {\n return this.searchNode(paths, pos + 1);\n }\n const stack = [];\n let node = this;\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 return node.searchNode(paths, pos + 1);\n }\n }\n if (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 dump(buffer) {\n if (this.nodeName === \"#text\") {\n buffer.push(encodeToXmlString(this.nodeValue));\n return;\n }\n buffer.push(`<${this.nodeName}`);\n if (this.attributes) {\n for (const attribute of this.attributes) {\n buffer.push(` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`);\n }\n }\n if (this.hasChildNodes()) {\n buffer.push(\">\");\n for (const child of this.childNodes) {\n child.dump(buffer);\n }\n buffer.push(``);\n } else if (this.nodeValue) {\n buffer.push(`>${encodeToXmlString(this.nodeValue)}`);\n } else {\n buffer.push(\"/>\");\n }\n }\n}\nclass SimpleXMLParser extends XMLParserBase {\n constructor({\n hasAttributes = false,\n lowerCaseName = false\n }) {\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 parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n this.parseXml(data);\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n const [documentElement] = this._currentFragment;\n if (!documentElement) {\n return undefined;\n }\n return {\n 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 onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\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 onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment.at(-1);\n if (!lastElement) {\n return null;\n }\n for (const childNode of lastElement.childNodes) {\n childNode.parentNode = lastElement;\n }\n return lastElement;\n }\n onError(code) {\n this._errorCode = code;\n }\n}\n\n;// ./src/core/metadata_parser.js\n\nclass MetadataParser {\n constructor(data) {\n data = this._repair(data);\n const parser = new SimpleXMLParser({\n lowerCaseName: true\n });\n const xmlDocument = parser.parseFromString(data);\n this._metadataMap = new Map();\n this._data = data;\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n _repair(data) {\n return data.replace(/^[^<]+/, \"\").replaceAll(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n const bytes = codes.replaceAll(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n }).replaceAll(/&(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 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 (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {\n charBuf.push(String.fromCharCode(code));\n } else {\n charBuf.push(\"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\");\n }\n }\n return charBuf.join(\"\");\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 _parseArray(entry) {\n if (!entry.hasChildNodes()) {\n return;\n }\n const [seqNode] = entry.childNodes;\n const sequence = this._getSequence(seqNode) || [];\n this._metadataMap.set(entry.nodeName, sequence.map(node => node.textContent.trim()));\n }\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n if (rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n for (const desc of rdf.childNodes) {\n if (desc.nodeName !== \"rdf:description\") {\n continue;\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 get serializable() {\n return {\n parsedData: this._metadataMap,\n rawData: this._data\n };\n }\n}\n\n;// ./src/core/struct_tree.js\n\n\n\n\nconst MAX_DEPTH = 40;\nconst StructElementType = {\n PAGE_CONTENT: 1,\n STREAM_CONTENT: 2,\n OBJECT: 3,\n ANNOTATION: 4,\n ELEMENT: 5\n};\nclass StructTreeRoot {\n constructor(rootDict, rootRef) {\n this.dict = rootDict;\n this.ref = rootRef instanceof Ref ? rootRef : null;\n this.roleMap = new Map();\n this.structParentIds = null;\n }\n init() {\n this.readRoleMap();\n }\n #addIdToPage(pageRef, id, type) {\n if (!(pageRef instanceof Ref) || id < 0) {\n return;\n }\n this.structParentIds ||= new RefSetCache();\n let ids = this.structParentIds.get(pageRef);\n if (!ids) {\n ids = [];\n this.structParentIds.put(pageRef, ids);\n }\n ids.push([id, type]);\n }\n addAnnotationIdToPage(pageRef, id) {\n this.#addIdToPage(pageRef, id, StructElementType.ANNOTATION);\n }\n readRoleMap() {\n const roleMapDict = this.dict.get(\"RoleMap\");\n if (!(roleMapDict instanceof Dict)) {\n return;\n }\n for (const [key, value] of roleMapDict) {\n if (value instanceof Name) {\n this.roleMap.set(key, value.name);\n }\n }\n }\n static async canCreateStructureTree({\n catalogRef,\n pdfManager,\n newAnnotationsByPage\n }) {\n if (!(catalogRef instanceof Ref)) {\n warn(\"Cannot save the struct tree: no catalog reference.\");\n return false;\n }\n let nextKey = 0;\n let hasNothingToUpdate = true;\n for (const [pageIndex, elements] of newAnnotationsByPage) {\n const {\n ref: pageRef\n } = await pdfManager.getPage(pageIndex);\n if (!(pageRef instanceof Ref)) {\n warn(`Cannot save the struct tree: page ${pageIndex} has no ref.`);\n hasNothingToUpdate = true;\n break;\n }\n for (const element of elements) {\n if (element.accessibilityData?.type) {\n element.parentTreeId = nextKey++;\n hasNothingToUpdate = false;\n }\n }\n }\n if (hasNothingToUpdate) {\n for (const elements of newAnnotationsByPage.values()) {\n for (const element of elements) {\n delete element.parentTreeId;\n }\n }\n return false;\n }\n return true;\n }\n static async createStructureTree({\n newAnnotationsByPage,\n xref,\n catalogRef,\n pdfManager,\n changes\n }) {\n const root = pdfManager.catalog.cloneDict();\n const cache = new RefSetCache();\n cache.put(catalogRef, root);\n const structTreeRootRef = xref.getNewTemporaryRef();\n root.set(\"StructTreeRoot\", structTreeRootRef);\n const structTreeRoot = new Dict(xref);\n structTreeRoot.set(\"Type\", Name.get(\"StructTreeRoot\"));\n const parentTreeRef = xref.getNewTemporaryRef();\n structTreeRoot.set(\"ParentTree\", parentTreeRef);\n const kids = [];\n structTreeRoot.set(\"K\", kids);\n cache.put(structTreeRootRef, structTreeRoot);\n const parentTree = new Dict(xref);\n const nums = [];\n parentTree.set(\"Nums\", nums);\n const nextKey = await this.#writeKids({\n newAnnotationsByPage,\n structTreeRootRef,\n structTreeRoot: null,\n kids,\n nums,\n xref,\n pdfManager,\n changes,\n cache\n });\n structTreeRoot.set(\"ParentTreeNextKey\", nextKey);\n cache.put(parentTreeRef, parentTree);\n for (const [ref, obj] of cache.items()) {\n changes.put(ref, {\n data: obj\n });\n }\n }\n async canUpdateStructTree({\n pdfManager,\n xref,\n newAnnotationsByPage\n }) {\n if (!this.ref) {\n warn(\"Cannot update the struct tree: no root reference.\");\n return false;\n }\n let nextKey = this.dict.get(\"ParentTreeNextKey\");\n if (!Number.isInteger(nextKey) || nextKey < 0) {\n warn(\"Cannot update the struct tree: invalid next key.\");\n return false;\n }\n const parentTree = this.dict.get(\"ParentTree\");\n if (!(parentTree instanceof Dict)) {\n warn(\"Cannot update the struct tree: ParentTree isn't a dict.\");\n return false;\n }\n const nums = parentTree.get(\"Nums\");\n if (!Array.isArray(nums)) {\n warn(\"Cannot update the struct tree: nums isn't an array.\");\n return false;\n }\n const numberTree = new NumberTree(parentTree, xref);\n for (const pageIndex of newAnnotationsByPage.keys()) {\n const {\n pageDict\n } = await pdfManager.getPage(pageIndex);\n if (!pageDict.has(\"StructParents\")) {\n continue;\n }\n const id = pageDict.get(\"StructParents\");\n if (!Number.isInteger(id) || !Array.isArray(numberTree.get(id))) {\n warn(`Cannot save the struct tree: page ${pageIndex} has a wrong id.`);\n return false;\n }\n }\n let hasNothingToUpdate = true;\n for (const [pageIndex, elements] of newAnnotationsByPage) {\n const {\n pageDict\n } = await pdfManager.getPage(pageIndex);\n StructTreeRoot.#collectParents({\n elements,\n xref: this.dict.xref,\n pageDict,\n numberTree\n });\n for (const element of elements) {\n if (element.accessibilityData?.type) {\n if (!(element.accessibilityData.structParent >= 0)) {\n element.parentTreeId = nextKey++;\n }\n hasNothingToUpdate = false;\n }\n }\n }\n if (hasNothingToUpdate) {\n for (const elements of newAnnotationsByPage.values()) {\n for (const element of elements) {\n delete element.parentTreeId;\n delete element.structTreeParent;\n }\n }\n return false;\n }\n return true;\n }\n async updateStructureTree({\n newAnnotationsByPage,\n pdfManager,\n changes\n }) {\n const xref = this.dict.xref;\n const structTreeRoot = this.dict.clone();\n const structTreeRootRef = this.ref;\n const cache = new RefSetCache();\n cache.put(structTreeRootRef, structTreeRoot);\n let parentTreeRef = structTreeRoot.getRaw(\"ParentTree\");\n let parentTree;\n if (parentTreeRef instanceof Ref) {\n parentTree = xref.fetch(parentTreeRef);\n } else {\n parentTree = parentTreeRef;\n parentTreeRef = xref.getNewTemporaryRef();\n structTreeRoot.set(\"ParentTree\", parentTreeRef);\n }\n parentTree = parentTree.clone();\n cache.put(parentTreeRef, parentTree);\n let nums = parentTree.getRaw(\"Nums\");\n let numsRef = null;\n if (nums instanceof Ref) {\n numsRef = nums;\n nums = xref.fetch(numsRef);\n }\n nums = nums.slice();\n if (!numsRef) {\n parentTree.set(\"Nums\", nums);\n }\n const newNextKey = await StructTreeRoot.#writeKids({\n newAnnotationsByPage,\n structTreeRootRef,\n structTreeRoot: this,\n kids: null,\n nums,\n xref,\n pdfManager,\n changes,\n cache\n });\n if (newNextKey === -1) {\n return;\n }\n structTreeRoot.set(\"ParentTreeNextKey\", newNextKey);\n if (numsRef) {\n cache.put(numsRef, nums);\n }\n for (const [ref, obj] of cache.items()) {\n changes.put(ref, {\n data: obj\n });\n }\n }\n static async #writeKids({\n newAnnotationsByPage,\n structTreeRootRef,\n structTreeRoot,\n kids,\n nums,\n xref,\n pdfManager,\n changes,\n cache\n }) {\n const objr = Name.get(\"OBJR\");\n let nextKey = -1;\n let structTreePageObjs;\n for (const [pageIndex, elements] of newAnnotationsByPage) {\n const page = await pdfManager.getPage(pageIndex);\n const {\n ref: pageRef\n } = page;\n const isPageRef = pageRef instanceof Ref;\n for (const {\n accessibilityData,\n ref,\n parentTreeId,\n structTreeParent\n } of elements) {\n if (!accessibilityData?.type) {\n continue;\n }\n const {\n structParent\n } = accessibilityData;\n if (structTreeRoot && Number.isInteger(structParent) && structParent >= 0) {\n let objs = (structTreePageObjs ||= new Map()).get(pageIndex);\n if (objs === undefined) {\n const structTreePage = new StructTreePage(structTreeRoot, page.pageDict);\n objs = structTreePage.collectObjects(pageRef);\n structTreePageObjs.set(pageIndex, objs);\n }\n const objRef = objs?.get(structParent);\n if (objRef) {\n const tagDict = xref.fetch(objRef).clone();\n StructTreeRoot.#writeProperties(tagDict, accessibilityData);\n changes.put(objRef, {\n data: tagDict\n });\n continue;\n }\n }\n nextKey = Math.max(nextKey, parentTreeId);\n const tagRef = xref.getNewTemporaryRef();\n const tagDict = new Dict(xref);\n StructTreeRoot.#writeProperties(tagDict, accessibilityData);\n await this.#updateParentTag({\n structTreeParent,\n tagDict,\n newTagRef: tagRef,\n structTreeRootRef,\n fallbackKids: kids,\n xref,\n cache\n });\n const objDict = new Dict(xref);\n tagDict.set(\"K\", objDict);\n objDict.set(\"Type\", objr);\n if (isPageRef) {\n objDict.set(\"Pg\", pageRef);\n }\n objDict.set(\"Obj\", ref);\n cache.put(tagRef, tagDict);\n nums.push(parentTreeId, tagRef);\n }\n }\n return nextKey + 1;\n }\n static #writeProperties(tagDict, {\n type,\n title,\n lang,\n alt,\n expanded,\n actualText\n }) {\n tagDict.set(\"S\", Name.get(type));\n if (title) {\n tagDict.set(\"T\", stringToAsciiOrUTF16BE(title));\n }\n if (lang) {\n tagDict.set(\"Lang\", stringToAsciiOrUTF16BE(lang));\n }\n if (alt) {\n tagDict.set(\"Alt\", stringToAsciiOrUTF16BE(alt));\n }\n if (expanded) {\n tagDict.set(\"E\", stringToAsciiOrUTF16BE(expanded));\n }\n if (actualText) {\n tagDict.set(\"ActualText\", stringToAsciiOrUTF16BE(actualText));\n }\n }\n static #collectParents({\n elements,\n xref,\n pageDict,\n numberTree\n }) {\n const idToElements = new Map();\n for (const element of elements) {\n if (element.structTreeParentId) {\n const id = parseInt(element.structTreeParentId.split(\"_mc\")[1], 10);\n let elems = idToElements.get(id);\n if (!elems) {\n elems = [];\n idToElements.set(id, elems);\n }\n elems.push(element);\n }\n }\n const id = pageDict.get(\"StructParents\");\n if (!Number.isInteger(id)) {\n return;\n }\n const parentArray = numberTree.get(id);\n const updateElement = (kid, pageKid, kidRef) => {\n const elems = idToElements.get(kid);\n if (elems) {\n const parentRef = pageKid.getRaw(\"P\");\n const parentDict = xref.fetchIfRef(parentRef);\n if (parentRef instanceof Ref && parentDict instanceof Dict) {\n const params = {\n ref: kidRef,\n dict: pageKid\n };\n for (const element of elems) {\n element.structTreeParent = params;\n }\n }\n return true;\n }\n return false;\n };\n for (const kidRef of parentArray) {\n if (!(kidRef instanceof Ref)) {\n continue;\n }\n const pageKid = xref.fetch(kidRef);\n const k = pageKid.get(\"K\");\n if (Number.isInteger(k)) {\n updateElement(k, pageKid, kidRef);\n continue;\n }\n if (!Array.isArray(k)) {\n continue;\n }\n for (let kid of k) {\n kid = xref.fetchIfRef(kid);\n if (Number.isInteger(kid) && updateElement(kid, pageKid, kidRef)) {\n break;\n }\n if (!(kid instanceof Dict)) {\n continue;\n }\n if (!isName(kid.get(\"Type\"), \"MCR\")) {\n break;\n }\n const mcid = kid.get(\"MCID\");\n if (Number.isInteger(mcid) && updateElement(mcid, pageKid, kidRef)) {\n break;\n }\n }\n }\n }\n static async #updateParentTag({\n structTreeParent,\n tagDict,\n newTagRef,\n structTreeRootRef,\n fallbackKids,\n xref,\n cache\n }) {\n let ref = null;\n let parentRef;\n if (structTreeParent) {\n ({\n ref\n } = structTreeParent);\n parentRef = structTreeParent.dict.getRaw(\"P\") || structTreeRootRef;\n } else {\n parentRef = structTreeRootRef;\n }\n tagDict.set(\"P\", parentRef);\n const parentDict = xref.fetchIfRef(parentRef);\n if (!parentDict) {\n fallbackKids.push(newTagRef);\n return;\n }\n let cachedParentDict = cache.get(parentRef);\n if (!cachedParentDict) {\n cachedParentDict = parentDict.clone();\n cache.put(parentRef, cachedParentDict);\n }\n const parentKidsRaw = cachedParentDict.getRaw(\"K\");\n let cachedParentKids = parentKidsRaw instanceof Ref ? cache.get(parentKidsRaw) : null;\n if (!cachedParentKids) {\n cachedParentKids = xref.fetchIfRef(parentKidsRaw);\n cachedParentKids = Array.isArray(cachedParentKids) ? cachedParentKids.slice() : [parentKidsRaw];\n const parentKidsRef = xref.getNewTemporaryRef();\n cachedParentDict.set(\"K\", parentKidsRef);\n cache.put(parentKidsRef, cachedParentKids);\n }\n const index = cachedParentKids.indexOf(ref);\n cachedParentKids.splice(index >= 0 ? index + 1 : cachedParentKids.length, 0, newTagRef);\n }\n}\nclass StructElementNode {\n constructor(tree, dict) {\n this.tree = tree;\n this.dict = dict;\n this.kids = [];\n this.parseKids();\n }\n get role() {\n const nameObj = this.dict.get(\"S\");\n const name = nameObj instanceof Name ? nameObj.name : \"\";\n const {\n root\n } = this.tree;\n if (root.roleMap.has(name)) {\n return root.roleMap.get(name);\n }\n return name;\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 parseKid(pageObjId, kid) {\n if (Number.isInteger(kid)) {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.PAGE_CONTENT,\n mcid: kid,\n pageObjId\n });\n }\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 const type = 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 const kidRef = kidDict.getRaw(\"Stm\");\n return new StructElement({\n type: StructElementType.STREAM_CONTENT,\n refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\n pageObjId,\n mcid: kidDict.get(\"MCID\")\n });\n }\n if (type === \"OBJR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n const kidRef = kidDict.getRaw(\"Obj\");\n return new StructElement({\n type: StructElementType.OBJECT,\n refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\n pageObjId\n });\n }\n return new StructElement({\n type: StructElementType.ELEMENT,\n dict: kidDict\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}\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 collectObjects(pageRef) {\n if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) {\n return null;\n }\n const parentTree = this.rootDict.get(\"ParentTree\");\n if (!parentTree) {\n return null;\n }\n const ids = this.root.structParentIds?.get(pageRef);\n if (!ids) {\n return null;\n }\n const map = new Map();\n const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n for (const [elemId] of ids) {\n const obj = numberTree.getRaw(elemId);\n if (obj instanceof Ref) {\n map.set(elemId, obj);\n }\n }\n return map;\n }\n parse(pageRef) {\n if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) {\n return;\n }\n const parentTree = this.rootDict.get(\"ParentTree\");\n if (!parentTree) {\n return;\n }\n const id = this.pageDict.get(\"StructParents\");\n const ids = this.root.structParentIds?.get(pageRef);\n if (!Number.isInteger(id) && !ids) {\n return;\n }\n const map = new Map();\n const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n if (Number.isInteger(id)) {\n const parentArray = numberTree.get(id);\n if (Array.isArray(parentArray)) {\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 if (!ids) {\n return;\n }\n for (const [elemId, type] of ids) {\n const obj = numberTree.get(elemId);\n if (obj) {\n const elem = this.addNode(this.rootDict.xref.fetchIfRef(obj), map);\n if (elem?.kids?.length === 1 && elem.kids[0].type === StructElementType.OBJECT) {\n elem.kids[0].type = type;\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 if (!(dict instanceof Dict)) {\n return null;\n }\n if (map.has(dict)) {\n return map.get(dict);\n }\n const element = new StructElementNode(this, dict);\n map.set(dict, element);\n const parent = dict.get(\"P\");\n if (!parent || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n if (!this.addTopLevelNode(dict, element)) {\n map.delete(dict);\n }\n return element;\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 addTopLevelNode(dict, element) {\n const obj = this.rootDict.get(\"K\");\n if (!obj) {\n return false;\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 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?.toString() === dict.objId) {\n this.nodes[i] = element;\n save = true;\n }\n }\n return save;\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 let alt = node.dict.get(\"Alt\");\n if (typeof alt !== \"string\") {\n alt = node.dict.get(\"ActualText\");\n }\n if (typeof alt === \"string\") {\n obj.alt = stringToPDFString(alt);\n }\n const a = node.dict.get(\"A\");\n if (a instanceof Dict) {\n const bbox = lookupNormalRect(a.getArray(\"BBox\"), null);\n if (bbox) {\n obj.bbox = bbox;\n } else {\n const width = a.get(\"Width\");\n const height = a.get(\"Height\");\n if (typeof width === \"number\" && width > 0 && typeof height === \"number\" && height > 0) {\n obj.bbox = [0, 0, width, height];\n }\n }\n }\n const lang = node.dict.get(\"Lang\");\n if (typeof lang === \"string\") {\n obj.lang = stringToPDFString(lang);\n }\n for (const kid of node.kids) {\n const kidElement = kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n if (kidElement) {\n nodeToSerializable(kidElement, obj, level + 1);\n continue;\n } else if (kid.type === StructElementType.PAGE_CONTENT || kid.type === StructElementType.STREAM_CONTENT) {\n obj.children.push({\n type: \"content\",\n id: `p${kid.pageObjId}_mc${kid.mcid}`\n });\n } else if (kid.type === StructElementType.OBJECT) {\n obj.children.push({\n type: \"object\",\n id: kid.refObjId\n });\n } else if (kid.type === StructElementType.ANNOTATION) {\n obj.children.push({\n type: \"annotation\",\n id: `${AnnotationPrefix}${kid.refObjId}`\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\n;// ./src/core/catalog.js\n\n\n\n\n\n\n\n\n\n\n\nfunction isValidExplicitDest(dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!(page instanceof Ref) && !Number.isInteger(page)) {\n return false;\n }\n if (!(zoom instanceof Name)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (!(typeof arg === \"number\" || allowNull && arg === null)) {\n return false;\n }\n }\n return true;\n}\nfunction fetchDest(dest) {\n if (dest instanceof Dict) {\n dest = dest.get(\"D\");\n }\n return isValidExplicitDest(dest) ? dest : null;\n}\nfunction fetchRemoteDest(action) {\n let dest = action.get(\"D\");\n if (dest) {\n if (dest instanceof Name) {\n dest = dest.name;\n }\n if (typeof dest === \"string\") {\n return stringToPDFString(dest);\n } else if (isValidExplicitDest(dest)) {\n return JSON.stringify(dest);\n }\n }\n return null;\n}\nclass Catalog {\n constructor(pdfManager, xref) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n this._catDict = xref.getCatalogObj();\n if (!(this._catDict instanceof Dict)) {\n throw new FormatError(\"Catalog object is not a dictionary.\");\n }\n this.toplevelPagesDict;\n this._actualNumPages = null;\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.pageDictCache = new RefSetCache();\n this.nonBlendModesSet = new RefSet();\n this.systemFontCache = new Map();\n }\n cloneDict() {\n return this._catDict.clone();\n }\n get version() {\n const version = this._catDict.get(\"Version\");\n if (version instanceof Name) {\n if (PDF_VERSION_REGEXP.test(version.name)) {\n return shadow(this, \"version\", version.name);\n }\n warn(`Invalid PDF catalog version: ${version.name}`);\n }\n return shadow(this, \"version\", null);\n }\n get lang() {\n const lang = this._catDict.get(\"Lang\");\n return shadow(this, \"lang\", lang && typeof lang === \"string\" ? stringToPDFString(lang) : null);\n }\n get needsRendering() {\n const needsRendering = this._catDict.get(\"NeedsRendering\");\n return shadow(this, \"needsRendering\", typeof needsRendering === \"boolean\" ? needsRendering : false);\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 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 get acroFormRef() {\n const value = this._catDict.getRaw(\"AcroForm\");\n return shadow(this, \"acroFormRef\", value instanceof Ref ? value : null);\n }\n get metadata() {\n const streamRef = this._catDict.getRaw(\"Metadata\");\n if (!(streamRef instanceof Ref)) {\n return shadow(this, \"metadata\", null);\n }\n let metadata = null;\n try {\n const stream = this.xref.fetch(streamRef, !this.xref.encrypt?.encryptMetadata);\n if (stream instanceof BaseStream && stream.dict instanceof Dict) {\n const type = stream.dict.get(\"Type\");\n const subtype = stream.dict.get(\"Subtype\");\n if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\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 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 _readMarkInfo() {\n const obj = this._catDict.get(\"MarkInfo\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n const markInfo = {\n Marked: false,\n UserProperties: false,\n Suspects: false\n };\n for (const key in markInfo) {\n const value = obj.get(key);\n if (typeof value === \"boolean\") {\n markInfo[key] = value;\n }\n }\n return markInfo;\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 _readStructTreeRoot() {\n const rawObj = this._catDict.getRaw(\"StructTreeRoot\");\n const obj = this.xref.fetchIfRef(rawObj);\n if (!(obj instanceof Dict)) {\n return null;\n }\n const root = new StructTreeRoot(obj, rawObj);\n root.init();\n return root;\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 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 _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 const root = {\n items: []\n };\n const queue = [{\n obj,\n parent: root\n }];\n const processed = new RefSet();\n processed.put(obj);\n const xref = this.xref,\n blackColor = new Uint8ClampedArray(3);\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 warn(\"Invalid outline item encountered.\");\n }\n const data = {\n url: null,\n dest: null,\n action: null\n };\n Catalog.parseDestDictionary({\n destDict: outlineDict,\n resultObj: data,\n docBaseUrl: this.baseUrl,\n docAttachments: this.attachments\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 if (isNumberArray(color, 3) && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {\n rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n }\n const outlineItem = {\n action: data.action,\n attachment: data.attachment,\n dest: data.dest,\n url: data.url,\n unsafeUrl: data.unsafeUrl,\n newWindow: data.newWindow,\n setOCGState: data.setOCGState,\n title: typeof title === \"string\" ? stringToPDFString(title) : \"\",\n color: rgbColor,\n count: Number.isInteger(count) ? count : undefined,\n bold: !!(flags & 2),\n italic: !!(flags & 1),\n items: []\n };\n i.parent.items.push(outlineItem);\n obj = outlineDict.getRaw(\"First\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({\n obj,\n parent: outlineItem\n });\n processed.put(obj);\n }\n obj = outlineDict.getRaw(\"Next\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({\n obj,\n parent: i.parent\n });\n processed.put(obj);\n }\n }\n return root.items.length > 0 ? root.items : null;\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 _readPermissions() {\n const encrypt = this.xref.trailer.get(\"Encrypt\");\n if (!(encrypt instanceof Dict)) {\n return null;\n }\n let flags = encrypt.get(\"P\");\n if (typeof flags !== \"number\") {\n return null;\n }\n flags += 2 ** 32;\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 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 groupRefCache = new RefSetCache();\n for (const groupRef of groupsData) {\n if (!(groupRef instanceof Ref) || groupRefCache.has(groupRef)) {\n continue;\n }\n groupRefCache.put(groupRef, this.#readOptionalContentGroup(groupRef));\n }\n config = this.#readOptionalContentConfig(defaultConfig, groupRefCache);\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 #readOptionalContentGroup(groupRef) {\n const group = this.xref.fetch(groupRef);\n const obj = {\n id: groupRef.toString(),\n name: null,\n intent: null,\n usage: {\n print: null,\n view: null\n },\n rbGroups: []\n };\n const name = group.get(\"Name\");\n if (typeof name === \"string\") {\n obj.name = stringToPDFString(name);\n }\n let intent = group.getArray(\"Intent\");\n if (!Array.isArray(intent)) {\n intent = [intent];\n }\n if (intent.every(i => i instanceof Name)) {\n obj.intent = intent.map(i => i.name);\n }\n const usage = group.get(\"Usage\");\n if (!(usage instanceof Dict)) {\n return obj;\n }\n const usageObj = obj.usage;\n const print = usage.get(\"Print\");\n if (print instanceof Dict) {\n const printState = print.get(\"PrintState\");\n if (printState instanceof Name) {\n switch (printState.name) {\n case \"ON\":\n case \"OFF\":\n usageObj.print = {\n printState: printState.name\n };\n }\n }\n }\n const view = usage.get(\"View\");\n if (view instanceof Dict) {\n const viewState = view.get(\"ViewState\");\n if (viewState instanceof Name) {\n switch (viewState.name) {\n case \"ON\":\n case \"OFF\":\n usageObj.view = {\n viewState: viewState.name\n };\n }\n }\n }\n return obj;\n }\n #readOptionalContentConfig(config, groupRefCache) {\n function parseOnOff(refs) {\n const onParsed = [];\n if (Array.isArray(refs)) {\n for (const value of refs) {\n if (value instanceof Ref && groupRefCache.has(value)) {\n onParsed.push(value.toString());\n }\n }\n }\n return onParsed;\n }\n function parseOrder(refs, nestedLevels = 0) {\n if (!Array.isArray(refs)) {\n return null;\n }\n const order = [];\n for (const value of refs) {\n if (value instanceof Ref && groupRefCache.has(value)) {\n parsedOrderRefs.put(value);\n order.push(value.toString());\n continue;\n }\n const nestedOrder = parseNestedOrder(value, nestedLevels);\n if (nestedOrder) {\n order.push(nestedOrder);\n }\n }\n if (nestedLevels > 0) {\n return order;\n }\n const hiddenGroups = [];\n for (const [groupRef] of groupRefCache.items()) {\n if (parsedOrderRefs.has(groupRef)) {\n continue;\n }\n hiddenGroups.push(groupRef.toString());\n }\n if (hiddenGroups.length) {\n order.push({\n name: null,\n order: hiddenGroups\n });\n }\n return order;\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?.length) {\n return null;\n }\n return {\n name: stringToPDFString(nestedName),\n order: nestedOrder\n };\n }\n function parseRBGroups(rbGroups) {\n if (!Array.isArray(rbGroups)) {\n return;\n }\n for (const value of rbGroups) {\n const rbGroup = xref.fetchIfRef(value);\n if (!Array.isArray(rbGroup) || !rbGroup.length) {\n continue;\n }\n const parsedRbGroup = new Set();\n for (const ref of rbGroup) {\n if (ref instanceof Ref && groupRefCache.has(ref) && !parsedRbGroup.has(ref.toString())) {\n parsedRbGroup.add(ref.toString());\n groupRefCache.get(ref).rbGroups.push(parsedRbGroup);\n }\n }\n }\n }\n const xref = this.xref,\n parsedOrderRefs = new RefSet(),\n MAX_NESTED_LEVELS = 10;\n parseRBGroups(config.get(\"RBGroups\"));\n return {\n name: typeof config.get(\"Name\") === \"string\" ? stringToPDFString(config.get(\"Name\")) : null,\n creator: typeof config.get(\"Creator\") === \"string\" ? stringToPDFString(config.get(\"Creator\")) : null,\n baseState: config.get(\"BaseState\") instanceof Name ? config.get(\"BaseState\").name : null,\n on: parseOnOff(config.get(\"ON\")),\n off: parseOnOff(config.get(\"OFF\")),\n order: parseOrder(config.get(\"Order\")),\n groups: [...groupRefCache]\n };\n }\n setActualNumPages(num = null) {\n this._actualNumPages = num;\n }\n get hasActualNumPages() {\n return this._actualNumPages !== null;\n }\n get _pagesCount() {\n const obj = this.toplevelPagesDict.get(\"Count\");\n if (!Number.isInteger(obj)) {\n throw new FormatError(\"Page count in top-level pages dictionary is not an integer.\");\n }\n return shadow(this, \"_pagesCount\", obj);\n }\n get numPages() {\n return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\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 = fetchDest(value);\n if (dest) {\n dests[stringToPDFString(key)] = dest;\n }\n }\n } else if (obj instanceof Dict) {\n for (const [key, value] of obj) {\n const dest = fetchDest(value);\n if (dest) {\n dests[key] = dest;\n }\n }\n }\n return shadow(this, \"destinations\", dests);\n }\n getDestination(id) {\n const obj = this._readDests();\n if (obj instanceof NameTree) {\n const dest = fetchDest(obj.get(id));\n if (dest) {\n return dest;\n }\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 = fetchDest(obj.get(id));\n if (dest) {\n return dest;\n }\n }\n return null;\n }\n _readDests() {\n const obj = this._catDict.get(\"Names\");\n if (obj?.has(\"Dests\")) {\n return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n } else if (this._catDict.has(\"Dests\")) {\n return this._catDict.get(\"Dests\");\n }\n return undefined;\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 _readPageLabels() {\n const obj = this._catDict.getRaw(\"PageLabels\");\n if (!obj) {\n return null;\n }\n const pageLabels = new Array(this.numPages);\n let style = null,\n prefix = \"\";\n const numberTree = new NumberTree(obj, this.xref);\n const nums = numberTree.getAll();\n let currentLabel = \"\",\n currentIndex = 1;\n for (let i = 0, ii = this.numPages; i < ii; i++) {\n const labelDict = nums.get(i);\n if (labelDict !== undefined) {\n if (!(labelDict instanceof Dict)) {\n throw new FormatError(\"PageLabel is not a dictionary.\");\n }\n if (labelDict.has(\"Type\") && !isName(labelDict.get(\"Type\"), \"PageLabel\")) {\n throw new FormatError(\"Invalid type in PageLabel dictionary.\");\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 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 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 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;\n const A_UPPER_CASE = 0x41,\n A_LOWER_CASE = 0x61;\n const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n const letterIndex = currentIndex - 1;\n const character = String.fromCharCode(baseCharCode + letterIndex % LIMIT);\n currentLabel = character.repeat(Math.floor(letterIndex / LIMIT) + 1);\n break;\n default:\n if (style) {\n throw new FormatError(`Invalid style \"${style}\" in PageLabel dictionary.`);\n }\n currentLabel = \"\";\n }\n pageLabels[i] = prefix + currentLabel;\n currentIndex++;\n }\n return pageLabels;\n }\n get pageLayout() {\n const obj = this._catDict.get(\"PageLayout\");\n let pageLayout = \"\";\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 get pageMode() {\n const obj = this._catDict.get(\"PageMode\");\n let pageMode = \"UseNone\";\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 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 for (const key of obj.getKeys()) {\n const value = obj.get(key);\n let prefValue;\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 if (Array.isArray(value) && value.length % 2 === 0) {\n const isValid = value.every((page, i, arr) => Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages);\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 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 get openAction() {\n const obj = this._catDict.get(\"OpenAction\");\n const openAction = Object.create(null);\n if (obj instanceof Dict) {\n const destDict = new Dict(this.xref);\n destDict.set(\"A\", obj);\n const resultObj = {\n url: null,\n dest: null,\n action: null\n };\n Catalog.parseDestDictionary({\n destDict,\n 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(this, \"openAction\", objectSize(openAction) > 0 ? openAction : null);\n }\n get attachments() {\n const obj = this._catDict.get(\"Names\");\n let attachments = null;\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 get xfaImages() {\n const obj = this._catDict.get(\"Names\");\n let xfaImages = null;\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(stringToPDFString(key), value);\n }\n }\n return shadow(this, \"xfaImages\", xfaImages);\n }\n _collectJavaScript() {\n const obj = this._catDict.get(\"Names\");\n let javaScript = null;\n function appendIfJavaScriptDict(name, jsDict) {\n if (!(jsDict instanceof Dict)) {\n return;\n }\n if (!isName(jsDict.get(\"S\"), \"JavaScript\")) {\n return;\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 js = stringToPDFString(js).replaceAll(\"\\x00\", \"\");\n if (js) {\n (javaScript ||= new Map()).set(name, 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(stringToPDFString(key), value);\n }\n }\n const openAction = this._catDict.get(\"OpenAction\");\n if (openAction) {\n appendIfJavaScriptDict(\"OpenAction\", openAction);\n }\n return javaScript;\n }\n get jsActions() {\n const javaScript = this._collectJavaScript();\n let actions = collectActions(this.xref, this._catDict, DocumentActionEventType);\n if (javaScript) {\n actions ||= Object.create(null);\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 async fontFallback(id, handler) {\n const translatedFonts = await Promise.all(this.fontCache);\n for (const translatedFont of translatedFonts) {\n if (translatedFont.loadedName === id) {\n translatedFont.fallback(handler);\n return;\n }\n }\n }\n async cleanup(manuallyTriggered = false) {\n clearGlobalCaches();\n this.globalImageCache.clear(manuallyTriggered);\n this.pageKidsCountCache.clear();\n this.pageIndexCache.clear();\n this.pageDictCache.clear();\n this.nonBlendModesSet.clear();\n const translatedFonts = await Promise.all(this.fontCache);\n for (const {\n dict\n } of translatedFonts) {\n delete dict.cacheKey;\n }\n this.fontCache.clear();\n this.builtInCMapCache.clear();\n this.standardFontDataCache.clear();\n this.systemFontCache.clear();\n }\n async getPageDict(pageIndex) {\n const nodesToVisit = [this.toplevelPagesDict];\n const visitedNodes = new RefSet();\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 pageDictCache = this.pageDictCache;\n let currentPageIndex = 0;\n while (nodesToVisit.length) {\n const currentNode = nodesToVisit.pop();\n if (currentNode instanceof Ref) {\n const count = pageKidsCountCache.get(currentNode);\n if (count >= 0 && currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n if (visitedNodes.has(currentNode)) {\n throw new FormatError(\"Pages tree contains circular reference.\");\n }\n visitedNodes.put(currentNode);\n const obj = await (pageDictCache.get(currentNode) || 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 if (!pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n if (!pageIndexCache.has(currentNode)) {\n pageIndexCache.put(currentNode, currentPageIndex);\n }\n if (currentPageIndex === pageIndex) {\n return [obj, currentNode];\n }\n currentPageIndex++;\n continue;\n }\n }\n nodesToVisit.push(obj);\n continue;\n }\n if (!(currentNode instanceof Dict)) {\n throw new FormatError(\"Page dictionary kid reference points to wrong type of object.\");\n }\n const {\n objId\n } = currentNode;\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 if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.put(objId, count);\n }\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\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 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 throw new FormatError(\"Page dictionary kids object is not an array.\");\n }\n for (let last = kids.length - 1; last >= 0; last--) {\n const lastKid = kids[last];\n nodesToVisit.push(lastKid);\n if (currentNode === this.toplevelPagesDict && lastKid instanceof Ref && !pageDictCache.has(lastKid)) {\n pageDictCache.put(lastKid, xref.fetchAsync(lastKid));\n }\n }\n }\n throw new Error(`Page index ${pageIndex} not found.`);\n }\n async getAllPageDicts(recoveryMode = false) {\n const {\n ignoreErrors\n } = this.pdfManager.evaluatorOptions;\n const queue = [{\n currentNode: this.toplevelPagesDict,\n posInKids: 0\n }];\n const visitedNodes = new RefSet();\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 function addPageDict(pageDict, pageRef) {\n if (pageRef && !pageIndexCache.has(pageRef)) {\n pageIndexCache.put(pageRef, pageIndex);\n }\n map.set(pageIndex++, [pageDict, pageRef]);\n }\n function addPageError(error) {\n if (error instanceof XRefEntryException && !recoveryMode) {\n throw error;\n }\n if (recoveryMode && ignoreErrors && pageIndex === 0) {\n warn(`getAllPageDicts - Skipping invalid first page: \"${error}\".`);\n error = Dict.empty;\n }\n map.set(pageIndex++, [error, null]);\n }\n while (queue.length > 0) {\n const queueItem = queue.at(-1);\n const {\n currentNode,\n posInKids\n } = queueItem;\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(new FormatError(\"Page dictionary kids object is not an array.\"));\n break;\n }\n if (posInKids >= kids.length) {\n queue.pop();\n continue;\n }\n const kidObj = kids[posInKids];\n let obj;\n if (kidObj instanceof Ref) {\n if (visitedNodes.has(kidObj)) {\n addPageError(new FormatError(\"Pages tree contains circular reference.\"));\n break;\n }\n visitedNodes.put(kidObj);\n try {\n obj = await xref.fetchAsync(kidObj);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n } else {\n obj = kidObj;\n }\n if (!(obj instanceof Dict)) {\n addPageError(new FormatError(\"Page dictionary kid reference points to wrong type of object.\"));\n break;\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({\n currentNode: obj,\n posInKids: 0\n });\n }\n queueItem.posInKids++;\n }\n return map;\n }\n getPageIndex(pageRef) {\n const cachedPageIndex = this.pageIndexCache.get(pageRef);\n if (cachedPageIndex !== undefined) {\n return Promise.resolve(cachedPageIndex);\n }\n const xref = this.xref;\n function pagesBeforeRef(kidRef) {\n let total = 0,\n parentRef;\n return xref.fetchAsync(kidRef).then(function (node) {\n if (isRefsEqual(kidRef, pageRef) && !isDict(node, \"Page\") && !(node instanceof Dict && !node.has(\"Type\") && node.has(\"Contents\"))) {\n throw new FormatError(\"The reference does not point to a /Page dictionary.\");\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 }).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 }).then(function (kids) {\n if (!kids) {\n return null;\n }\n const kidPromises = [];\n let found = false;\n for (const kid of kids) {\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(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 total++;\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 let total = 0;\n const next = ref => 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 return next(pageRef);\n }\n get baseUrl() {\n const uri = this._catDict.get(\"URI\");\n if (uri instanceof Dict) {\n const base = uri.get(\"Base\");\n if (typeof base === \"string\") {\n const absoluteUrl = createValidAbsoluteUrl(base, null, {\n tryConvertEncoding: true\n });\n if (absoluteUrl) {\n return shadow(this, \"baseUrl\", absoluteUrl.href);\n }\n }\n }\n return shadow(this, \"baseUrl\", this.pdfManager.docBaseUrl);\n }\n static parseDestDictionary({\n destDict,\n resultObj,\n docBaseUrl = null,\n docAttachments = null\n }) {\n if (!(destDict instanceof Dict)) {\n warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n return;\n }\n let action = destDict.get(\"A\"),\n url,\n dest;\n if (!(action instanceof Dict)) {\n if (destDict.has(\"Dest\")) {\n action = destDict.get(\"Dest\");\n } else {\n action = destDict.get(\"AA\");\n if (action instanceof Dict) {\n if (action.has(\"D\")) {\n action = action.get(\"D\");\n } else if (action.has(\"U\")) {\n action = action.get(\"U\");\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 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 = {\n fields,\n refs,\n include\n };\n break;\n case \"URI\":\n url = action.get(\"URI\");\n if (url instanceof Name) {\n url = \"/\" + url.name;\n }\n break;\n case \"GoTo\":\n dest = action.get(\"D\");\n break;\n case \"Launch\":\n case \"GoToR\":\n const urlDict = action.get(\"F\");\n if (urlDict instanceof Dict) {\n const fs = new FileSpec(urlDict, null, true);\n const {\n rawFilename\n } = fs.serializable;\n url = rawFilename;\n } else if (typeof urlDict === \"string\") {\n url = urlDict;\n }\n const remoteDest = fetchRemoteDest(action);\n if (remoteDest && typeof url === \"string\") {\n url = url.split(\"#\", 1)[0] + \"#\" + remoteDest;\n }\n const newWindow = action.get(\"NewWindow\");\n if (typeof newWindow === \"boolean\") {\n resultObj.newWindow = newWindow;\n }\n break;\n case \"GoToE\":\n const target = action.get(\"T\");\n let attachment;\n if (docAttachments && target instanceof Dict) {\n const relationship = target.get(\"R\");\n const name = target.get(\"N\");\n if (isName(relationship, \"C\") && typeof name === \"string\") {\n attachment = docAttachments[stringToPDFString(name)];\n }\n }\n if (attachment) {\n resultObj.attachment = attachment;\n const attachmentDest = fetchRemoteDest(action);\n if (attachmentDest) {\n resultObj.attachmentDest = attachmentDest;\n }\n } else {\n warn(`parseDestDictionary - unimplemented \"GoToE\" action.`);\n }\n break;\n case \"Named\":\n const namedAction = action.get(\"N\");\n if (namedAction instanceof Name) {\n resultObj.action = namedAction.name;\n }\n break;\n case \"SetOCGState\":\n const state = action.get(\"State\");\n const preserveRB = action.get(\"PreserveRB\");\n if (!Array.isArray(state) || state.length === 0) {\n break;\n }\n const stateArr = [];\n for (const elem of state) {\n if (elem instanceof Name) {\n switch (elem.name) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n stateArr.push(elem.name);\n break;\n }\n } else if (elem instanceof Ref) {\n stateArr.push(elem.toString());\n }\n }\n if (stateArr.length !== state.length) {\n break;\n }\n resultObj.setOCGState = {\n state: stateArr,\n preserveRB: typeof preserveRB === \"boolean\" ? preserveRB : true\n };\n break;\n case \"JavaScript\":\n const jsAction = action.get(\"JS\");\n let js;\n if (jsAction instanceof BaseStream) {\n js = jsAction.getString();\n } else if (typeof jsAction === \"string\") {\n js = jsAction;\n }\n const jsURL = js && recoverJsURL(stringToPDFString(js));\n if (jsURL) {\n url = jsURL.url;\n resultObj.newWindow = jsURL.newWindow;\n break;\n }\n default:\n if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n break;\n }\n warn(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n break;\n }\n } else if (destDict.has(\"Dest\")) {\n dest = destDict.get(\"Dest\");\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\") {\n resultObj.dest = stringToPDFString(dest);\n } else if (isValidExplicitDest(dest)) {\n resultObj.dest = dest;\n }\n }\n }\n}\n\n;// ./src/core/object_loader.js\n\n\n\n\nfunction mayHaveChildren(value) {\n return value instanceof Ref || value instanceof Dict || value instanceof BaseStream || Array.isArray(value);\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}\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 async load() {\n if (this.xref.stream.isDataLoaded) {\n return undefined;\n }\n const {\n keys,\n dict\n } = this;\n this.refSet = new RefSet();\n const nodesToVisit = [];\n for (const key of keys) {\n const rawValue = dict.getRaw(key);\n if (rawValue !== undefined) {\n nodesToVisit.push(rawValue);\n }\n }\n return this._walk(nodesToVisit);\n }\n async _walk(nodesToVisit) {\n const nodesToRevisit = [];\n const pendingRequests = [];\n while (nodesToVisit.length) {\n let currentNode = nodesToVisit.pop();\n if (currentNode instanceof Ref) {\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 const {\n manager\n } = this.xref.stream;\n return manager.requestAllChunks();\n }\n nodesToRevisit.push(currentNode);\n pendingRequests.push({\n begin: ex.begin,\n end: ex.end\n });\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({\n begin: stream.start,\n end: stream.end\n });\n }\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n }\n addChildren(currentNode, nodesToVisit);\n }\n if (pendingRequests.length) {\n await this.xref.stream.manager.requestRanges(pendingRequests);\n for (const node of nodesToRevisit) {\n if (node instanceof Ref) {\n this.refSet.remove(node);\n }\n }\n return this._walk(nodesToRevisit);\n }\n this.refSet = null;\n return undefined;\n }\n}\n\n;// ./src/core/xfa/symbol_utils.js\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\n;// ./src/core/xfa/namespaces.js\nconst $buildXFAObject = Symbol();\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\n;// ./src/core/xfa/utils.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*)(.*)/;\nfunction stripQuotes(str) {\n if (str.startsWith(\"'\") || str.startsWith('\"')) {\n return str.slice(1, -1);\n }\n return str;\n}\nfunction getInteger({\n data,\n defaultValue,\n validate\n}) {\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}\nfunction getFloat({\n data,\n defaultValue,\n validate\n}) {\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}\nfunction getKeyword({\n data,\n defaultValue,\n validate\n}) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n if (validate(data)) {\n return data;\n }\n return defaultValue;\n}\nfunction getStringOption(data, options) {\n return getKeyword({\n data,\n defaultValue: options[0],\n validate: k => options.includes(k)\n });\n}\nfunction getMeasurement(str, def = \"0\") {\n 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 if (value === 0) {\n return 0;\n }\n const conv = dimConverters[unit];\n if (conv) {\n return conv(value);\n }\n return value;\n}\nfunction getRatio(data) {\n if (!data) {\n return {\n num: 1,\n den: 1\n };\n }\n const ratio = data.trim().split(/\\s*:\\s*/).map(x => parseFloat(x)).filter(x => !isNaN(x));\n if (ratio.length === 1) {\n ratio.push(1);\n }\n if (ratio.length === 0) {\n return {\n num: 1,\n den: 1\n };\n }\n const [num, den] = ratio;\n return {\n num,\n den\n };\n}\nfunction getRelevant(data) {\n if (!data) {\n return [];\n }\n return data.trim().split(/\\s+/).map(e => ({\n excluded: e[0] === \"-\",\n viewname: e.substring(1)\n }));\n}\nfunction getColor(data, def = [0, 0, 0]) {\n let [r, g, b] = def;\n if (!data) {\n return {\n r,\n g,\n b\n };\n }\n const color = data.trim().split(/\\s*,\\s*/).map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255)).map(c => isNaN(c) ? 0 : c);\n if (color.length < 3) {\n return {\n r,\n g,\n b\n };\n }\n [r, g, b] = color;\n return {\n r,\n g,\n b\n };\n}\nfunction getBBox(data) {\n const def = -1;\n if (!data) {\n return {\n x: def,\n y: def,\n width: def,\n height: def\n };\n }\n const bbox = data.trim().split(/\\s*,\\s*/).map(m => getMeasurement(m, \"-1\"));\n if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n return {\n x: def,\n y: def,\n width: def,\n height: def\n };\n }\n const [x, y, width, height] = bbox;\n return {\n x,\n y,\n width,\n height\n };\n}\nclass HTMLResult {\n static get FAILURE() {\n return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n }\n static get EMPTY() {\n return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\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 isBreak() {\n return !!this.breakNode;\n }\n static breakNode(node) {\n return new HTMLResult(false, null, null, node);\n }\n static success(html, bbox = null) {\n return new HTMLResult(true, html, bbox, null);\n }\n}\n\n;// ./src/core/xfa/fonts.js\n\n\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 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 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 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 if (!property) {\n if (pdfFont.name.includes(\"Bold\") || pdfFont.psName?.includes(\"Bold\")) {\n property = \"bold\";\n }\n if (pdfFont.name.includes(\"Italic\") || pdfFont.name.endsWith(\"It\") || pdfFont.psName?.includes(\"Italic\") || pdfFont.psName?.endsWith(\"It\")) {\n property += \"italic\";\n }\n }\n if (!property) {\n property = \"regular\";\n }\n font[property] = pdfFont;\n }\n getDefault() {\n return this.defaultFont;\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 const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;\n let name = fontName.replaceAll(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 const maybe = [];\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n if (maybe.length === 0) {\n for (const [, pdfFont] of this.fonts.entries()) {\n if (pdfFont.regular.name?.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n if (maybe.length === 0) {\n name = name.replaceAll(/psmt|mt/gi, \"\");\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n if (maybe.length === 0) {\n for (const pdfFont of this.fonts.values()) {\n if (pdfFont.regular.name?.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\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 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}\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 return typeface.regular;\n}\nfunction fonts_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 if (!pdfFont) {\n return {\n lineHeight: 12,\n lineGap: 2,\n lineNoGap: 10\n };\n }\n const size = xfaFont.size || 10;\n const lineHeight = pdfFont.lineHeight ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight) : 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\n;// ./src/core/xfa/text.js\n\nconst WIDTH_FACTOR = 1.02;\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 if (!xfaFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\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 this.pdfFont = selectFont(xfaFont, typeface);\n if (!this.pdfFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n }\n }\n defaultFont(fontFinder) {\n const font = fontFinder.find(\"Helvetica\", false) || fontFinder.find(\"Myriad Pro\", false) || fontFinder.find(\"Arial\", false) || fontFinder.getDefault();\n if (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 const xfaFont = {\n typeface: \"Courier\",\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0\n };\n return [null, xfaFont];\n }\n}\nclass FontSelector {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder) {\n this.fontFinder = fontFinder;\n this.stack = [new FontInfo(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder)];\n }\n pushData(xfaFont, margin, lineHeight) {\n const lastFont = this.stack.at(-1);\n for (const name of [\"typeface\", \"posture\", \"weight\", \"size\", \"letterSpacing\"]) {\n if (!xfaFont[name]) {\n xfaFont[name] = lastFont.xfaFont[name];\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 const fontInfo = new FontInfo(xfaFont, margin, lineHeight || lastFont.lineHeight, this.fontFinder);\n if (!fontInfo.pdfFont) {\n fontInfo.pdfFont = lastFont.pdfFont;\n }\n this.stack.push(fontInfo);\n }\n popFont() {\n this.stack.pop();\n }\n topFont() {\n return this.stack.at(-1);\n }\n}\nclass TextMeasure {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n this.glyphs = [];\n this.fontSelector = new FontSelector(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts);\n this.extraHeight = 0;\n }\n pushData(xfaFont, margin, lineHeight) {\n this.fontSelector.pushData(xfaFont, margin, lineHeight);\n }\n popFont(xfaFont) {\n return this.fontSelector.popFont();\n }\n addPara() {\n const lastFont = this.fontSelector.topFont();\n this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n }\n addString(str) {\n if (!str) {\n return;\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 = 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 = pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n for (const line of str.split(/[\\u2029\\n]/)) {\n const encodedLine = pdfFont.encodeString(line).join(\"\");\n const glyphs = pdfFont.charsToGlyphs(encodedLine);\n for (const glyph of glyphs) {\n const width = glyph.width || fallbackWidth;\n this.glyphs.push([width * scale + letterSpacing, lineHeight, firstLineHeight, glyph.unicode, false]);\n }\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n return;\n }\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 this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\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 for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] = 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 if (isSpace) {\n if (currentLineWidth + glyphWidth > maxWidth) {\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 if (currentLineWidth + glyphWidth > maxWidth) {\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 width = Math.max(width, currentLineWidth);\n currentLineWidth = glyphWidth;\n }\n isBroken = true;\n isFirstLine = false;\n continue;\n }\n currentLineWidth += glyphWidth;\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n }\n width = Math.max(width, currentLineWidth);\n height += currentLineHeight + this.extraHeight;\n return {\n width: WIDTH_FACTOR * width,\n height,\n isBroken\n };\n }\n}\n\n;// ./src/core/xfa/som.js\n\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n dot: 0,\n dotDot: 1,\n dotHash: 2,\n dotBracket: 3,\n dotParen: 4\n};\nconst shortcuts = new Map([[\"$data\", (root, current) => root.datasets ? root.datasets.data : root], [\"$record\", (root, current) => (root.datasets ? root.datasets.data : root)[$getChildren]()[0]], [\"$template\", (root, current) => root.template], [\"$connectionSet\", (root, current) => root.connectionSet], [\"$form\", (root, current) => root.form], [\"$layout\", (root, current) => root.layout], [\"$host\", (root, current) => root.host], [\"$dataWindow\", (root, current) => root.dataWindow], [\"$event\", (root, current) => root.event], [\"!\", (root, current) => root.datasets], [\"$xfa\", (root, current) => root], [\"xfa\", (root, current) => root], [\"$\", (root, current) => current]]);\nconst somCache = new WeakMap();\nfunction parseIndex(index) {\n index = index.trim();\n if (index === \"*\") {\n return Infinity;\n }\n return parseInt(index, 10) || 0;\n}\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n let match = expr.match(namePattern);\n if (!match) {\n return null;\n }\n let [name] = match;\n const parsed = [{\n name,\n cacheName: \".\" + name,\n index: 0,\n js: null,\n formCalc: null,\n operator: operators.dot\n }];\n let pos = name.length;\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.at(-1).index = parseIndex(match[0]);\n pos += match[0].length + 1;\n continue;\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(\"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\");\n return null;\n }\n operator = operators.dotBracket;\n break;\n case \"(\":\n if (noExpr) {\n warn(\"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\");\n return null;\n }\n operator = operators.dotParen;\n break;\n default:\n operator = operators.dot;\n break;\n }\n match = expr.slice(pos).match(namePattern);\n if (!match) {\n break;\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}\nfunction searchNode(root, container, expr, dotDotAllowed = true, useCache = true) {\n const parsed = parseExpression(expr, dotDotAllowed);\n if (!parsed) {\n return null;\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 for (let ii = parsed.length; i < ii; i++) {\n const {\n name,\n cacheName,\n operator,\n index\n } = parsed[i];\n const nodes = [];\n for (const node of root) {\n if (!node.isXFAObject) {\n continue;\n }\n let children, cached;\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 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 children = children.isXFAObjectArray ? children.children : [children];\n break;\n default:\n break;\n }\n if (useCache) {\n cached.set(cacheName, children);\n }\n }\n if (children.length > 0) {\n nodes.push(children);\n }\n }\n if (nodes.length === 0 && !isQualified && i === 0) {\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 root = isFinite(index) ? nodes.filter(node => index < node.length).map(node => node[index]) : nodes.flat();\n }\n if (root.length === 0) {\n return null;\n }\n return root;\n}\nfunction createDataNode(root, container, expr) {\n const parsed = parseExpression(expr);\n if (!parsed) {\n return null;\n }\n if (parsed.some(x => x.operator === operators.dotDot)) {\n return null;\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 for (let ii = parsed.length; i < ii; i++) {\n const {\n name,\n operator,\n index\n } = parsed[i];\n if (!isFinite(index)) {\n parsed[i].index = 0;\n return root.createNodes(parsed.slice(i));\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 children = children.isXFAObjectArray ? children.children : [children];\n break;\n default:\n break;\n }\n if (children.length === 0) {\n return root.createNodes(parsed.slice(i));\n }\n if (index < children.length) {\n const child = children[index];\n if (!child.isXFAObject) {\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 root.createNodes(parsed.slice(i));\n }\n }\n return null;\n}\n\n;// ./src/core/xfa/xfa_object.js\n\n\n\n\n\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();\nlet uid = 0;\nconst NS_DATASETS = NamespaceIds.datasets.id;\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 get isXFAObject() {\n return true;\n }\n get isXFAObjectArray() {\n return false;\n }\n createNodes(path) {\n let root = this,\n node = null;\n for (const {\n name,\n index\n } of path) {\n for (let i = 0, ii = isFinite(index) ? index : 0; 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 root = node;\n }\n return node;\n }\n [$onChild](child) {\n if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n return false;\n }\n const name = child[$nodeName];\n const node = this[name];\n if (node instanceof XFAObjectArray) {\n if (node.push(child)) {\n this[$appendChild](child);\n return true;\n }\n } else {\n if (node !== null) {\n this[$removeChild](node);\n }\n this[name] = child;\n this[$appendChild](child);\n return true;\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 [$onChildCheck](child) {\n return this.hasOwnProperty(child[$nodeName]) && child[$namespaceId] === this[$namespaceId];\n }\n [$isNsAgnostic]() {\n return false;\n }\n [$acceptWhitespace]() {\n return false;\n }\n [$isCDATAXml]() {\n return false;\n }\n [$isBindable]() {\n return false;\n }\n [$popPara]() {\n if (this.para) {\n this[$getTemplateRoot]()[$extra].paraStack.pop();\n }\n }\n [$pushPara]() {\n this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n }\n [$setId](ids) {\n if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n ids.set(this.id, this);\n }\n }\n [$getTemplateRoot]() {\n return this[$globalData].template;\n }\n [$isSplittable]() {\n return false;\n }\n [$isThereMoreWidth]() {\n return false;\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 [$removeChild](child) {\n const i = this[_children].indexOf(child);\n this[_children].splice(i, 1);\n }\n [$hasSettableValue]() {\n return this.hasOwnProperty(\"value\");\n }\n [$setValue](_) {}\n [$onText](_) {}\n [$finalize]() {}\n [$clean](builder) {\n delete this[_hasChildren];\n if (this[$cleanup]) {\n builder.clean(this[$cleanup]);\n delete this[$cleanup];\n }\n }\n [$indexOf](child) {\n return this[_children].indexOf(child);\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 [$isTransparent]() {\n return !this.name;\n }\n [$lastAttribute]() {\n return \"\";\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 get [_attributeNames]() {\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 (this[name] === null || this[name] instanceof XFAObject || this[name] instanceof XFAObjectArray) {\n break;\n }\n attributes.add(name);\n }\n }\n return shadow(this, _attributeNames, proto._attributes);\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 [$getParent]() {\n return this[_parent];\n }\n [$getSubformParent]() {\n return this[$getParent]();\n }\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n return this[name];\n }\n [$dump]() {\n const dumped = Object.create(null);\n if (this[$content]) {\n dumped.$content = this[$content];\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 return dumped;\n }\n [$toStyle]() {\n return null;\n }\n [$toHTML]() {\n return HTMLResult.EMPTY;\n }\n *[$getContainedChildren]() {\n for (const node of this[$getChildren]()) {\n yield node;\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 [$flushHTML]() {\n return null;\n }\n [$addHTML](html, bbox) {\n this[$extra].children.push(html);\n }\n [$getAvailableSpace]() {}\n [$childrenToHTML]({\n filter = null,\n include = true\n }) {\n if (!this[$extra].generator) {\n this[$extra].generator = this[_filteredChildrenGenerator](filter, include);\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 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 this[$extra].generator = null;\n return HTMLResult.EMPTY;\n }\n [$setSetAttributes](attributes) {\n this[_setAttributes] = new Set(Object.keys(attributes));\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 [$resolvePrototypes](ids, ancestors = new Set()) {\n for (const child of this[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n [_resolvePrototypesHelper](ids, ancestors) {\n const proto = this[_getPrototype](ids, ancestors);\n if (proto) {\n this[_applyPrototype](proto, ids, ancestors);\n } else {\n this[$resolvePrototypes](ids, ancestors);\n }\n }\n [_getPrototype](ids, ancestors) {\n const {\n use,\n usehref\n } = this;\n if (!use && !usehref) {\n return null;\n }\n let proto = null;\n let somExpression = null;\n let id = null;\n let ref = use;\n if (usehref) {\n ref = usehref;\n if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\"#som(\".length, -1);\n } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\".#som(\".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 this.use = this.usehref = \"\";\n if (id) {\n proto = ids.get(id);\n } else {\n proto = searchNode(ids.get($root), this, somExpression, true, false);\n if (proto) {\n proto = proto[0];\n }\n }\n if (!proto) {\n warn(`XFA - Invalid prototype reference: ${ref}.`);\n return null;\n }\n if (proto[$nodeName] !== this[$nodeName]) {\n warn(`XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`);\n return null;\n }\n if (ancestors.has(proto)) {\n warn(`XFA - Cycle detected in prototypes use.`);\n return null;\n }\n ancestors.add(proto);\n const protoProto = proto[_getPrototype](ids, ancestors);\n if (protoProto) {\n proto[_applyPrototype](protoProto, ids, ancestors);\n }\n proto[$resolvePrototypes](ids, ancestors);\n ancestors.delete(proto);\n return proto;\n }\n [_applyPrototype](proto, ids, ancestors) {\n if (ancestors.has(proto)) {\n warn(`XFA - Cycle detected in prototypes use.`);\n return;\n }\n if (!this[$content] && proto[$content]) {\n this[$content] = proto[$content];\n }\n const newAncestors = new Set(ancestors);\n newAncestors.add(proto);\n for (const unsetAttrName of this[_getUnsetAttributes](proto[_setAttributes])) {\n this[unsetAttrName] = proto[unsetAttrName];\n if (this[_setAttributes]) {\n this[_setAttributes].add(unsetAttrName);\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 if (value instanceof XFAObjectArray) {\n for (const child of value[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n for (let i = value[_children].length, ii = protoValue[_children].length; i < ii; i++) {\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 break;\n }\n }\n continue;\n }\n if (value !== null) {\n value[$resolvePrototypes](ids, ancestors);\n if (protoValue) {\n value[_applyPrototype](protoValue, ids, ancestors);\n }\n continue;\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 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 [$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 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 clone[name] = value instanceof XFAObjectArray ? new XFAObjectArray(value[_max]) : null;\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 return clone;\n }\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n return this[_children].filter(c => c[$nodeName] === name);\n }\n [$getChildrenByClass](name) {\n return this[name];\n }\n [$getChildrenByName](name, allTransparent, first = true) {\n return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n }\n *[$getChildrenByNameIt](name, allTransparent, first = true) {\n if (name === \"parent\") {\n yield this[_parent];\n return;\n }\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n if (child.name === name) {\n yield child;\n }\n if (allTransparent || child[$isTransparent]()) {\n yield* child[$getChildrenByNameIt](name, allTransparent, false);\n }\n }\n if (first && this[_attributeNames].has(name)) {\n yield new XFAAttribute(this, name, this[name]);\n }\n }\n}\nclass XFAObjectArray {\n constructor(max = Infinity) {\n this[_max] = max;\n this[_children] = [];\n }\n get isXFAObject() {\n return false;\n }\n get isXFAObjectArray() {\n return true;\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(`XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`);\n return false;\n }\n isEmpty() {\n return this[_children].length === 0;\n }\n dump() {\n return this[_children].length === 1 ? this[_children][0][$dump]() : this[_children].map(x => x[$dump]());\n }\n [$clone]() {\n const clone = new XFAObjectArray(this[_max]);\n clone[_children] = this[_children].map(c => c[$clone]());\n return clone;\n }\n get children() {\n return this[_children];\n }\n clear() {\n this[_children].length = 0;\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 [$getParent]() {\n return this[_parent];\n }\n [$isDataValue]() {\n return true;\n }\n [$getDataValue]() {\n return this[$content].trim();\n }\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n [$text]() {\n return this[$content];\n }\n [$isDescendent](parent) {\n return this[_parent] === parent || this[_parent][$isDescendent](parent);\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 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 [$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 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(``);\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 [$onText](str) {\n this[$content] += str;\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 [$toHTML]() {\n if (this[$nodeName] === \"#text\") {\n return HTMLResult.success({\n name: \"#text\",\n value: this[$content]\n });\n }\n return HTMLResult.EMPTY;\n }\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n return this[_children].filter(c => c[$nodeName] === name);\n }\n [$getAttributes]() {\n return this[_attributes];\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 *[$getChildrenByNameIt](name, allTransparent) {\n const value = this[_attributes].get(name);\n if (value) {\n yield value;\n }\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n if (allTransparent) {\n yield* child[$getChildrenByNameIt](name, allTransparent);\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 *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n for (const child of this[_children]) {\n if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n yield child;\n }\n if (allTransparent) {\n yield* child[$getRealChildrenByNameIt](name, allTransparent, skipConsumed);\n }\n }\n }\n [$isDataValue]() {\n if (this[_dataValue] === null) {\n return this[_children].length === 0 || this[_children][0][$namespaceId] === NamespaceIds.xhtml.id;\n }\n return this[_dataValue];\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 [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\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 dumped.children = [];\n for (const child of this[_children]) {\n dumped.children.push(child[$dump](hasNS));\n }\n dumped.attributes = Object.create(null);\n for (const [name, value] of this[_attributes]) {\n dumped.attributes[name] = value[$content];\n }\n return dumped;\n }\n}\nclass ContentObject extends XFAObject {\n constructor(nsId, name) {\n super(nsId, name);\n this[$content] = \"\";\n }\n [$onText](text) {\n this[$content] += text;\n }\n [$finalize]() {}\n}\nclass OptionObject extends ContentObject {\n constructor(nsId, name, options) {\n super(nsId, name);\n this[_options] = options;\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 [$clean](builder) {\n super[$clean](builder);\n delete this[_options];\n }\n}\nclass StringObject extends ContentObject {\n [$finalize]() {\n this[$content] = this[$content].trim();\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 [$finalize]() {\n this[$content] = getInteger({\n data: this[$content],\n defaultValue: this[_defaultValue],\n validate: this[_validator]\n });\n }\n [$clean](builder) {\n super[$clean](builder);\n delete this[_defaultValue];\n delete this[_validator];\n }\n}\nclass Option01 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 0, n => n === 1);\n }\n}\nclass Option10 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 1, n => n === 0);\n }\n}\n\n;// ./src/core/xfa/html_utils.js\n\n\n\n\n\n\nfunction measureToString(m) {\n if (typeof m === \"string\") {\n return \"0px\";\n }\n return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\nconst converters = {\n anchorType(node, style) {\n const parent = node[$getSubformParent]();\n if (!parent || parent.layout && parent.layout !== \"position\") {\n return;\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?.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let w;\n if (colSpan === -1) {\n w = extra.columnWidths.slice(extra.currentColumn).reduce((a, x) => a + x, 0);\n extra.currentColumn = 0;\n } else {\n w = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, x) => a + x, 0);\n extra.currentColumn = (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n }\n if (!isNaN(w)) {\n width = node.w = w;\n }\n }\n style.width = width !== \"\" ? measureToString(width) : \"auto\";\n style.height = height !== \"\" ? measureToString(height) : \"auto\";\n },\n position(node, style) {\n const parent = node[$getSubformParent]();\n if (parent?.layout && parent.layout !== \"position\") {\n return;\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 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};\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}\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 return measure.compute(width);\n}\nfunction layoutNode(node, availableSpace) {\n let height = null;\n let width = null;\n let isBroken = false;\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 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 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 const maxWidth = (node.w || availableSpace.width) - marginH;\n const fontFinder = node[$globalData].fontFinder;\n if (node.value.exData && node.value.exData[$content] && node.value.exData.contentType === \"text/html\") {\n const res = layoutText(node.value.exData[$content], font, margin, lineHeight, fontFinder, maxWidth);\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(text, font, margin, lineHeight, fontFinder, maxWidth);\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n }\n }\n if (width !== null && !node.w) {\n width += marginH;\n }\n if (height !== null && !node.h) {\n height += marginV;\n }\n }\n return {\n w: width,\n h: height,\n 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 width = parent.layout === \"position\" && parent.w !== \"\" ? 0 : node.minW;\n } else {\n width = Math.min(node.maxW, availableSpace.width);\n }\n html.attributes.style.width = measureToString(width);\n }\n let height = node.h;\n if (height === \"\") {\n if (node.maxH === 0) {\n const parent = node[$getSubformParent]();\n height = parent.layout === \"position\" && parent.h !== \"\" ? 0 : node.minH;\n } else {\n height = Math.min(node.maxH, availableSpace.height);\n }\n html.attributes.style.height = measureToString(height);\n }\n bbox = [node.x, node.y, width, height];\n }\n return bbox;\n}\nfunction fixDimensions(node) {\n const parent = node[$getSubformParent]();\n if (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.slice(extra.currentColumn).reduce((a, w) => a + w, 0);\n } else {\n width = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, w) => a + w, 0);\n }\n if (!isNaN(width)) {\n node.w = width;\n }\n }\n if (parent.layout && parent.layout !== \"position\") {\n node.x = node.y = 0;\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}\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}\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 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}\nfunction createWrapper(node, html) {\n const {\n attributes\n } = html;\n const {\n style\n } = attributes;\n const wrapper = {\n name: \"div\",\n attributes: {\n class: [\"xfaWrapper\"],\n style: Object.create(null)\n },\n children: []\n };\n attributes.class.push(\"xfaWrapped\");\n if (node.border) {\n const {\n widths,\n insets\n } = 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 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 for (const key of [\"border\", \"borderWidth\", \"borderColor\", \"borderRadius\", \"borderStyle\"]) {\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 for (const key of [\"background\", \"backgroundClip\", \"top\", \"left\", \"width\", \"height\", \"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\", \"transform\", \"transformOrigin\", \"visibility\"]) {\n if (style[key] !== undefined) {\n wrapper.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n wrapper.attributes.style.position = style.position === \"absolute\" ? \"absolute\" : \"relative\";\n delete style.position;\n if (style.alignSelf) {\n wrapper.attributes.style.alignSelf = style.alignSelf;\n delete style.alignSelf;\n }\n return wrapper;\n}\nfunction fixTextIndent(styles) {\n const indent = getMeasurement(styles.textIndent, \"0px\");\n if (indent >= 0) {\n return;\n }\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}\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}\nfunction isPrintOnly(node) {\n return node.relevant.length > 0 && !node.relevant[0].excluded && node.relevant[0].viewname === \"print\";\n}\nfunction getCurrentPara(node) {\n const stack = node[$getTemplateRoot]()[$extra].paraStack;\n return stack.length ? stack.at(-1) : null;\n}\nfunction setPara(node, nodeStyle, value) {\n if (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 const para = getCurrentPara(node);\n if (para) {\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 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}\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n if (!fontFinder) {\n delete style.fontFamily;\n return;\n }\n const name = stripQuotes(xfaFont.typeface);\n style.fontFamily = `\"${name}\"`;\n const typeface = fontFinder.find(name);\n if (typeface) {\n const {\n fontFamily\n } = typeface.regular.cssFontInfo;\n if (fontFamily !== name) {\n style.fontFamily = `\"${fontFamily}\"`;\n }\n const para = getCurrentPara(node);\n if (para && para.lineHeight !== \"\") {\n return;\n }\n if (style.lineHeight) {\n return;\n }\n const pdfFont = selectFont(xfaFont, typeface);\n if (pdfFont) {\n style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n }\n }\n}\nfunction fixURL(str) {\n const absoluteUrl = createValidAbsoluteUrl(str, null, {\n addDefaultProtocol: true,\n tryConvertEncoding: true\n });\n return absoluteUrl ? absoluteUrl.href : null;\n}\n\n;// ./src/core/xfa/layout.js\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}\nfunction flushHTML(node) {\n if (!node[$extra]) {\n return null;\n }\n const attributes = node[$extra].attributes;\n const html = {\n name: \"div\",\n attributes,\n children: node[$extra].children\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 if (html.children.length === 0) {\n return null;\n }\n return html;\n}\nfunction addHTML(node, html, bbox) {\n const extra = node[$extra];\n const availableSpace = extra.availableSpace;\n const [x, y, w, h] = bbox;\n switch (node.layout) {\n case \"position\":\n {\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 extra.numberInLine += 1;\n extra.line.children.push(html);\n if (extra.attempt === 0) {\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 extra.attempt = 0;\n }\n extra.width = Math.max(extra.width, extra.currentWidth);\n break;\n case \"rl-row\":\n case \"row\":\n {\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 {\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 {\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}\nfunction getAvailableSpace(node) {\n const availableSpace = node[$extra].availableSpace;\n const marginV = node.margin ? node.margin.topInset + node.margin.bottomInset : 0;\n const marginH = node.margin ? node.margin.leftInset + node.margin.rightInset : 0;\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.slice(node[$extra].currentColumn).reduce((a, x) => a + x);\n return {\n width,\n height: availableSpace.height - marginH\n };\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}\nfunction getTransformedBBox(node) {\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 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 return [node.x + x + Math.min(0, w), node.y + y + Math.min(0, h), Math.abs(w), Math.abs(h)];\n}\nfunction checkDimensions(node, space) {\n if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n return true;\n }\n if (node.w === 0 || node.h === 0) {\n return true;\n }\n const ERROR = 2;\n const parent = node[$getSubformParent]();\n const attempt = parent[$extra]?.attempt || 0;\n const [, y, w, h] = getTransformedBBox(node);\n switch (parent.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (attempt === 0) {\n if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\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 return false;\n }\n return space.width > ERROR;\n }\n if (node.w !== \"\") {\n return Math.round(w - space.width) <= ERROR;\n }\n return space.width > ERROR;\n }\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\n }\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n return space.height > ERROR;\n case \"table\":\n case \"tb\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n if (node.h !== \"\" && !node[$isSplittable]()) {\n return Math.round(h - space.height) <= ERROR;\n }\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n return space.height > ERROR;\n case \"position\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n return true;\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 if (node.h !== \"\") {\n return Math.round(h - space.height) <= ERROR;\n }\n return true;\n default:\n return true;\n }\n}\n\n;// ./src/core/xfa/template.js\n\n\n\n\n\n\n\n\n\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\nconst MAX_EMPTY_PAGES = 3;\nconst DEFAULT_TAB_INDEX = 5000;\nconst HEADING_PATTERN = /^H(\\d+)$/;\nconst MIMES = new Set([\"image/gif\", \"image/jpeg\", \"image/jpg\", \"image/pjpeg\", \"image/png\", \"image/apng\", \"image/x-png\", \"image/bmp\", \"image/x-ms-bmp\", \"image/tiff\", \"image/tif\", \"application/octet-stream\"]);\nconst IMAGES_HEADERS = [[[0x42, 0x4d], \"image/bmp\"], [[0xff, 0xd8, 0xff], \"image/jpeg\"], [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"], [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"], [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"], [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"]];\nfunction getBorderDims(node) {\n if (!node || !node.border) {\n return {\n w: 0,\n h: 0\n };\n }\n const borderExtra = node.border[$getExtra]();\n if (!borderExtra) {\n return {\n w: 0,\n h: 0\n };\n }\n return {\n w: borderExtra.widths[0] + borderExtra.widths[2] + borderExtra.insets[0] + borderExtra.insets[2],\n h: borderExtra.widths[1] + borderExtra.widths[3] + borderExtra.insets[1] + borderExtra.insets[3]\n };\n}\nfunction hasMargin(node) {\n return node.margin && (node.margin.topInset || node.margin.rightInset || node.margin.bottomInset || node.margin.leftInset);\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}\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}\nfunction isRequired(node) {\n return node.validate?.nullTest === \"error\";\n}\nfunction setTabIndex(node) {\n while (node) {\n if (!node.traversal) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n if (node[$tabIndex]) {\n return;\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 if (!next || !next.ref) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n const root = node[$getTemplateRoot]();\n node[$tabIndex] = ++root[$tabIndex];\n const ref = root[$searchNode](next.ref, node);\n if (!ref) {\n return;\n }\n node = ref[0];\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 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 attributes.role = parent.assist?.role === \"TH\" ? \"columnheader\" : \"cell\";\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 return null;\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 name: \"span\",\n attributes: {\n style: Object.create(null)\n },\n value\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}\nfunction unsetFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === node) {\n root[$extra].noLayoutFailure = false;\n }\n}\nfunction handleBreak(node) {\n if (node[$extra]) {\n return false;\n }\n node[$extra] = Object.create(null);\n if (node.targetType === \"auto\") {\n return false;\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 const {\n currentPageArea,\n currentContentArea\n } = root[$extra];\n if (node.targetType === \"pageArea\") {\n if (!(target instanceof PageArea)) {\n target = null;\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 return false;\n }\n if (!(target instanceof ContentArea)) {\n target = null;\n }\n const pageArea = target && target[$getParent]();\n let index;\n let nextPageArea = pageArea;\n if (node.startNew) {\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 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 node[$extra].target = nextPageArea;\n node[$extra].index = index;\n return true;\n}\nfunction handleOverflow(node, extraNode, space) {\n const root = node[$getTemplateRoot]();\n const saved = root[$extra].noLayoutFailure;\n const savedMethod = extraNode[$getSubformParent];\n extraNode[$getSubformParent] = () => node;\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}\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}\nclass Arc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"arc\", 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 [$toHTML]() {\n const edge = this.edge || new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill?.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(edge.presence === \"visible\" ? edge.thickness : 0);\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 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] = [50 * (1 + Math.cos(startAngle)), 50 * (1 - Math.sin(startAngle)), 50 * (1 + Math.cos(startAngle + sweepAngle)), 50 * (1 - Math.sin(startAngle + sweepAngle))];\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 Object.assign(attributes, {\n viewBox: \"0 0 100 100\",\n preserveAspectRatio: \"none\"\n });\n }\n const svg = {\n name: \"svg\",\n children: [arc],\n attributes\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 svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\nclass Area extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"area\", 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 *[$getContainedChildren]() {\n yield* getContainedChildren(this);\n }\n [$isTransparent]() {\n return true;\n }\n [$isBindable]() {\n return true;\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 this[$extra].children.push(html);\n }\n [$getAvailableSpace]() {\n return this[$extra].availableSpace;\n }\n [$toHTML](availableSpace) {\n const style = toStyle(this, \"position\");\n const attributes = {\n style,\n id: this[$uid],\n class: [\"xfaArea\"]\n };\n if (isPrintOnly(this)) {\n attributes.class.push(\"xfaPrintOnly\");\n }\n if (this.name) {\n attributes.xfaName = this.name;\n }\n const children = [];\n this[$extra] = {\n children,\n width: 0,\n height: 0,\n availableSpace\n };\n const result = this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"exclGroup\", \"subform\", \"subformSet\"]),\n include: true\n });\n if (!result.success) {\n if (result.isBreak()) {\n return result;\n }\n delete this[$extra];\n return HTMLResult.FAILURE;\n }\n style.width = measureToString(this[$extra].width);\n style.height = measureToString(this[$extra].height);\n const html = {\n name: \"div\",\n attributes,\n children\n };\n const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n delete this[$extra];\n return HTMLResult.success(html, bbox);\n }\n}\nclass Assist extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"assist\", 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 [$toHTML]() {\n return this.toolTip?.[$content] || null;\n }\n}\nclass Barcode extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"barcode\", true);\n this.charEncoding = getKeyword({\n data: attributes.charEncoding ? attributes.charEncoding.toLowerCase() : \"\",\n defaultValue: \"\",\n validate: k => [\"utf-8\", \"big-five\", \"fontspecific\", \"gbk\", \"gb-18030\", \"gb-2312\", \"ksc-5601\", \"none\", \"shift-jis\", \"ucs-2\", \"utf-16\"].includes(k) || k.match(/iso-8859-\\d{2}/)\n });\n this.checksum = getStringOption(attributes.checksum, [\"none\", \"1mod10\", \"1mod10_1mod11\", \"2mod10\", \"auto\"]);\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, [\"none\", \"flateCompress\"]);\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, [\"below\", \"above\", \"aboveEmbedded\", \"belowEmbedded\", \"none\"]);\n this.truncate = getInteger({\n data: attributes.truncate,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.type = getStringOption(attributes.type ? attributes.type.toLowerCase() : \"\", [\"aztec\", \"codabar\", \"code2of5industrial\", \"code2of5interleaved\", \"code2of5matrix\", \"code2of5standard\", \"code3of9\", \"code3of9extended\", \"code11\", \"code49\", \"code93\", \"code128\", \"code128a\", \"code128b\", \"code128c\", \"code128sscc\", \"datamatrix\", \"ean8\", \"ean8add2\", \"ean8add5\", \"ean13\", \"ean13add2\", \"ean13add5\", \"ean13pwcd\", \"fim\", \"logmars\", \"maxicode\", \"msi\", \"pdf417\", \"pdf417macro\", \"plessey\", \"postauscust2\", \"postauscust3\", \"postausreplypaid\", \"postausstandard\", \"postukrm4scc\", \"postusdpbc\", \"postusimb\", \"postusstandard\", \"postus5zip\", \"qrcode\", \"rfid\", \"rss14\", \"rss14expanded\", \"rss14limited\", \"rss14stacked\", \"rss14stackedomni\", \"rss14truncated\", \"telepen\", \"ucc128\", \"ucc128random\", \"ucc128sscc\", \"upca\", \"upcaadd2\", \"upcaadd5\", \"upcapwcd\", \"upce\", \"upceadd2\", \"upceadd5\", \"upcean2\", \"upcean5\", \"upsmaxicode\"]);\n this.upsMode = getStringOption(attributes.upsMode, [\"usCarrier\", \"internationalCarrier\", \"secureSymbol\", \"standardSymbol\"]);\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}\nclass Bind extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bind\", true);\n this.match = getStringOption(attributes.match, [\"once\", \"dataRef\", \"global\", \"none\"]);\n this.ref = attributes.ref || \"\";\n this.picture = null;\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}\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}\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 [$toHTML](availableSpace) {\n return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n }\n}\nclass Border extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"border\", 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, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\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 [$getExtra]() {\n if (!this[$extra]) {\n const edges = this.edge.children.slice();\n if (edges.length < 4) {\n const defaultEdge = edges.at(-1) || new Edge({});\n for (let i = edges.length; i < 4; i++) {\n edges.push(defaultEdge);\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] = {\n widths,\n insets,\n edges\n };\n }\n return this[$extra];\n }\n [$toStyle]() {\n const {\n edges\n } = this[$getExtra]();\n const edgeStyles = edges.map(node => {\n const style = node[$toStyle]();\n style.color ||= \"#000000\";\n return style;\n });\n const style = Object.create(null);\n if (this.margin) {\n Object.assign(style, this.margin[$toStyle]());\n }\n if (this.fill?.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\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.at(-1);\n for (let i = cornerStyles.length; i < 4; i++) {\n cornerStyles.push(last);\n }\n }\n style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\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 style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n return style;\n }\n}\nclass Break extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"break\", true);\n this.after = getStringOption(attributes.after, [\"auto\", \"contentArea\", \"pageArea\", \"pageEven\", \"pageOdd\"]);\n this.afterTarget = attributes.afterTarget || \"\";\n this.before = getStringOption(attributes.before, [\"auto\", \"contentArea\", \"pageArea\", \"pageEven\", \"pageOdd\"]);\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}\nclass BreakAfter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakAfter\", 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, [\"auto\", \"contentArea\", \"pageArea\"]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n}\nclass BreakBefore extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakBefore\", 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, [\"auto\", \"contentArea\", \"pageArea\"]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n [$toHTML](availableSpace) {\n this[$extra] = {};\n return HTMLResult.FAILURE;\n }\n}\nclass Button extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"button\", true);\n this.highlight = getStringOption(attributes.highlight, [\"inverted\", \"none\", \"outline\", \"push\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n [$toHTML](availableSpace) {\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 for (const event of grandpa.event.children) {\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 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 return HTMLResult.success(htmlButton);\n }\n}\nclass Calculate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"calculate\", true);\n this.id = attributes.id || \"\";\n this.override = getStringOption(attributes.override, [\"disabled\", \"error\", \"ignore\", \"warning\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.script = null;\n }\n}\nclass Caption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"caption\", true);\n this.id = attributes.id || \"\";\n this.placement = getStringOption(attributes.placement, [\"left\", \"bottom\", \"inline\", \"right\", \"top\"]);\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\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 [$setValue](value) {\n _setValue(this, value);\n }\n [$getExtra](availableSpace) {\n if (!this[$extra]) {\n let {\n width,\n height\n } = 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 this[$extra] = layoutNode(this, {\n width,\n height\n });\n }\n return this[$extra];\n }\n [$toHTML](availableSpace) {\n if (!this.value) {\n return HTMLResult.EMPTY;\n }\n this[$pushPara]();\n const value = this.value[$toHTML](availableSpace).html;\n if (!value) {\n this[$popPara]();\n return HTMLResult.EMPTY;\n }\n const savedReserve = this.reserve;\n if (this.reserve <= 0) {\n const {\n w,\n h\n } = 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 const children = [];\n if (typeof value === \"string\") {\n children.push({\n name: \"#text\",\n value\n });\n } else {\n children.push(value);\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 setPara(this, null, value);\n this[$popPara]();\n this.reserve = savedReserve;\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style,\n class: [\"xfaCaption\"]\n },\n children\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}\nclass Certificates extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificates\", true);\n this.credentialServerPolicy = getStringOption(attributes.credentialServerPolicy, [\"optional\", \"required\"]);\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}\nclass CheckButton extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"checkButton\", true);\n this.id = attributes.id || \"\";\n this.mark = getStringOption(attributes.mark, [\"default\", \"check\", \"circle\", \"cross\", \"diamond\", \"square\", \"star\"]);\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 [$toHTML](availableSpace) {\n const style = toStyle(\"margin\");\n const size = measureToString(this.size);\n style.width = style.height = size;\n let type;\n let className;\n let groupId;\n const field = this[$getParent]()[$getParent]();\n const items = field.items.children.length && field.items.children[0][$toHTML]().html || [];\n const exportedValue = {\n on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n off: (items[1] !== undefined ? items[1] : \"off\").toString()\n };\n const 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 if (container instanceof ExclGroup) {\n groupId = container[$uid];\n type = \"radio\";\n className = \"xfaRadio\";\n dataId = container[$data]?.[$uid] || container[$uid];\n } else {\n type = \"checkbox\";\n className = \"xfaCheckbox\";\n dataId = field[$data]?.[$uid] || field[$uid];\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 \"aria-required\": false\n }\n };\n if (groupId) {\n input.attributes.name = groupId;\n }\n if (isRequired(field)) {\n input.attributes[\"aria-required\"] = true;\n input.attributes.required = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [input]\n });\n }\n}\nclass ChoiceList extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"choiceList\", true);\n this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n this.id = attributes.id || \"\";\n this.open = getStringOption(attributes.open, [\"userControl\", \"always\", \"multiSelect\", \"onEntry\"]);\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 [$toHTML](availableSpace) {\n const style = toStyle(this, \"border\", \"margin\");\n const ui = this[$getParent]();\n const field = ui[$getParent]();\n const fontSize = field.font?.size || 10;\n const optionStyle = {\n fontSize: `calc(${fontSize}px * var(--scale-factor))`\n };\n const children = [];\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 let selected = false;\n const 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 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 const selectAttributes = {\n class: [\"xfaSelect\"],\n fieldId: field[$uid],\n dataId: field[$data]?.[$uid] || field[$uid],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n };\n if (isRequired(field)) {\n selectAttributes[\"aria-required\"] = true;\n selectAttributes.required = true;\n }\n if (this.open === \"multiSelect\") {\n selectAttributes.multiple = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [{\n name: \"select\",\n children,\n attributes: selectAttributes\n }]\n });\n }\n}\nclass Color extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"color\", 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 [$hasSettableValue]() {\n return false;\n }\n [$toStyle]() {\n return this.value ? Util.makeHexColor(this.value.r, this.value.g, this.value.b) : null;\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}\nclass Connect extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"connect\", true);\n this.connection = attributes.connection || \"\";\n this.id = attributes.id || \"\";\n this.ref = attributes.ref || \"\";\n this.usage = getStringOption(attributes.usage, [\"exportAndImport\", \"exportOnly\", \"importOnly\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.picture = null;\n }\n}\nclass ContentArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"contentArea\", 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 [$toHTML](availableSpace) {\n const left = measureToString(this.x);\n const top = measureToString(this.y);\n const style = {\n left,\n top,\n width: measureToString(this.w),\n height: measureToString(this.h)\n };\n const classNames = [\"xfaContentarea\"];\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\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}\nclass Corner extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"corner\", 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, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.radius = getMeasurement(attributes.radius);\n this.stroke = getStringOption(attributes.stroke, [\"solid\", \"dashDot\", \"dashDotDot\", \"dashed\", \"dotted\", \"embossed\", \"etched\", \"lowered\", \"raised\"]);\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 [$toStyle]() {\n const style = toStyle(this, \"visibility\");\n style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n return style;\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 [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\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 [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\nclass DateTimeEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTimeEdit\", true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\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 [$toHTML](availableSpace) {\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]?.[$uid] || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n if (isRequired(field)) {\n html.attributes[\"aria-required\"] = true;\n html.attributes.required = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [html]\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 [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] !== null ? this[$content].toString() : \"\");\n }\n}\nclass DefaultUi extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"defaultUi\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\nclass Desc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"desc\", 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}\nclass DigestMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethod\", [\"\", \"SHA1\", \"SHA256\", \"SHA512\", \"RIPEMD160\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass DigestMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethods\", 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}\nclass Draw extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"draw\", true);\n this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\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, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\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, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\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 [$setValue](value) {\n _setValue(this, value);\n }\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n fixDimensions(this);\n this[$pushPara]();\n const savedW = this.w;\n const savedH = this.h;\n const {\n w,\n h,\n isBroken\n } = layoutNode(this, availableSpace);\n if (w && this.w === \"\") {\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n this.w = w;\n }\n if (h && this.h === \"\") {\n this.h = h;\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 const style = toStyle(this, \"font\", \"hAlign\", \"dimensions\", \"position\", \"presence\", \"rotate\", \"anchorType\", \"border\", \"margin\");\n setMinMaxDimensions(this, style);\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n const classNames = [\"xfaDraw\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n const attributes = {\n style,\n id: this[$uid],\n class: classNames\n };\n if (this.name) {\n attributes.xfaName = this.name;\n }\n const html = {\n name: \"div\",\n attributes,\n children: []\n };\n applyAssist(this, attributes);\n const bbox = computeBbox(this, html, availableSpace);\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 html.children.push(value);\n setPara(this, style, value);\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\nclass Edge extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"edge\", true);\n this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.stroke = getStringOption(attributes.stroke, [\"solid\", \"dashDot\", \"dashDotDot\", \"dashed\", \"dotted\", \"embossed\", \"etched\", \"lowered\", \"raised\"]);\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 [$toStyle]() {\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 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}\nclass Encoding extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encoding\", [\"adbe.x509.rsa_sha1\", \"adbe.pkcs7.detached\", \"adbe.pkcs7.sha1\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Encodings extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encodings\", 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}\nclass Encrypt extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encrypt\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = null;\n }\n}\nclass EncryptData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptData\", true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\"encrypt\", \"decrypt\"]);\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}\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryption\", 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}\nclass EncryptionMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethod\", [\"\", \"AES256-CBC\", \"TRIPLEDES-CBC\", \"AES128-CBC\", \"AES192-CBC\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass EncryptionMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethods\", 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}\nclass Event extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"event\", true);\n this.activity = getStringOption(attributes.activity, [\"click\", \"change\", \"docClose\", \"docReady\", \"enter\", \"exit\", \"full\", \"indexChange\", \"initialize\", \"mouseDown\", \"mouseEnter\", \"mouseExit\", \"mouseUp\", \"postExecute\", \"postOpen\", \"postPrint\", \"postSave\", \"postSign\", \"postSubmit\", \"preExecute\", \"preOpen\", \"prePrint\", \"preSave\", \"preSign\", \"preSubmit\", \"ready\", \"validationState\"]);\n this.id = attributes.id || \"\";\n this.listen = getStringOption(attributes.listen, [\"refOnly\", \"refAndDescendents\"]);\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 this.encryptData = null;\n this.execute = null;\n this.script = null;\n this.signData = null;\n this.submit = null;\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, [\"none\", \"base64\", \"package\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$isCDATAXml]() {\n return this.contentType === \"text/html\";\n }\n [$onChild](child) {\n if (this.contentType === \"text/html\" && child[$namespaceId] === NamespaceIds.xhtml.id) {\n this[$content] = child;\n return true;\n }\n if (this.contentType === \"text/xml\") {\n this[$content] = child;\n return true;\n }\n return false;\n }\n [$toHTML](availableSpace) {\n if (this.contentType !== \"text/html\" || !this[$content]) {\n return HTMLResult.EMPTY;\n }\n return this[$content][$toHTML](availableSpace);\n }\n}\nclass ExObject extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exObject\", 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}\nclass ExclGroup extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exclGroup\", true);\n this.access = getStringOption(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\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, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\"position\", \"lr-tb\", \"rl-row\", \"rl-tb\", \"row\", \"table\", \"tb\"]);\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, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\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 [$isBindable]() {\n return true;\n }\n [$hasSettableValue]() {\n return true;\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 field.value[$setValue](value);\n }\n }\n [$isThereMoreWidth]() {\n return this.layout.endsWith(\"-tb\") && this[$extra].attempt === 0 && this[$extra].numberInLine > 0 || this[$getParent]()[$isThereMoreWidth]();\n }\n [$isSplittable]() {\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n if (parent.layout?.endsWith(\"-tb\") && parent[$extra].numberInLine !== 0) {\n return false;\n }\n this[$extra]._isSplittable = true;\n return true;\n }\n [$flushHTML]() {\n return flushHTML(this);\n }\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (this.presence === \"hidden\" || this.presence === \"inactive\" || this.h === 0 || this.w === 0) {\n return HTMLResult.EMPTY;\n }\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: []\n };\n setAccess(this, attributes.class);\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\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 const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"field\"]);\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 const style = toStyle(this, \"anchorType\", \"dimensions\", \"position\", \"presence\", \"border\", \"margin\", \"hAlign\");\n const classNames = [\"xfaExclgroup\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n attributes.style = style;\n attributes.class = classNames;\n if (this.name) {\n attributes.xfaName = this.name;\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 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 (isLrTb && this[$extra].attempt === 0 && this[$extra].numberInLine === 0 && !this[$getTemplateRoot]()[$extra].noLayoutFailure) {\n this[$extra].attempt = maxRun;\n break;\n }\n }\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n if (this[$extra].attempt === maxRun) {\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\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 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 if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n const html = {\n name: \"div\",\n attributes,\n children\n };\n applyAssist(this, attributes);\n delete this[$extra];\n return HTMLResult.success(createWrapper(this, html), bbox);\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, [\"import\", \"remerge\"]);\n this.id = attributes.id || \"\";\n this.runAt = getStringOption(attributes.runAt, [\"client\", \"both\", \"server\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Extras extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"extras\", 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}\nclass Field extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"field\", true);\n this.access = getStringOption(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\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, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\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, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\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 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 [$isBindable]() {\n return true;\n }\n [$setValue](value) {\n _setValue(this, value);\n }\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (!this.ui) {\n this.ui = new Ui({});\n this.ui[$globalData] = this[$globalData];\n this[$appendChild](this.ui);\n let node;\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 if (!this.ui || this.presence === \"hidden\" || this.presence === \"inactive\" || this.h === 0 || this.w === 0) {\n return HTMLResult.EMPTY;\n }\n if (this.caption) {\n delete this.caption[$extra];\n }\n this[$pushPara]();\n const caption = this.caption ? this.caption[$toHTML](availableSpace).html : 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 let borderDims = null;\n if (this.w === \"\" || this.h === \"\") {\n let width = null;\n let height = null;\n let uiW = 0;\n let uiH = 0;\n if (this.ui.checkButton) {\n uiW = uiH = this.ui.checkButton.size;\n } else {\n const {\n w,\n h\n } = layoutNode(this, availableSpace);\n if (w !== null) {\n uiW = w;\n uiH = h;\n } else {\n uiH = fonts_getMetrics(this.font, true).lineNoGap;\n }\n }\n borderDims = getBorderDims(this.ui[$getExtra]());\n uiW += borderDims.w;\n uiH += borderDims.h;\n if (this.caption) {\n const {\n w,\n h,\n isBroken\n } = this.caption[$getExtra](availableSpace);\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n width = w;\n height = h;\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 if (width && this.w === \"\") {\n width += marginH;\n this.w = Math.min(this.maxW <= 0 ? Infinity : this.maxW, this.minW + 1 < width ? width : this.minW);\n }\n if (height && this.h === \"\") {\n height += marginV;\n this.h = Math.min(this.maxH <= 0 ? Infinity : this.maxH, this.minH + 1 < height ? height : this.minH);\n }\n }\n this[$popPara]();\n fixDimensions(this);\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 const style = toStyle(this, \"font\", \"dimensions\", \"position\", \"rotate\", \"anchorType\", \"presence\", \"margin\", \"hAlign\");\n setMinMaxDimensions(this, style);\n const classNames = [\"xfaField\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n const attributes = {\n style,\n id: this[$uid],\n class: classNames\n };\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n setAccess(this, classNames);\n if (this.name) {\n attributes.xfaName = this.name;\n }\n const children = [];\n const html = {\n name: \"div\",\n attributes,\n children\n };\n applyAssist(this, attributes);\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 if (this[$tabIndex]) {\n if (ui.children?.[0]) {\n ui.children[0].attributes.tabindex = this[$tabIndex];\n } else {\n ui.attributes.tabindex = this[$tabIndex];\n }\n }\n if (!ui.attributes.style) {\n ui.attributes.style = Object.create(null);\n }\n let aElement = null;\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 children.push(ui);\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?.maxChars) {\n ui.children[0].attributes.maxLength = this.value.text.maxChars;\n }\n if (value) {\n if (this.ui.numericEdit) {\n value = parseFloat(value);\n value = isNaN(value) ? \"\" : value.toString();\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 if (!this.ui.imageEdit && ui.children?.[0] && this.h) {\n borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\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 if (aElement) {\n ui.children.push(aElement);\n }\n if (!caption) {\n if (ui.attributes.class) {\n ui.attributes.class.push(\"xfaLeft\");\n }\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\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 if (!ui.attributes.class) {\n ui.attributes.class = [];\n }\n ui.children.splice(0, 0, caption);\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 ui.attributes.class.push(\"xfaLeft\");\n break;\n }\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\nclass Fill extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"fill\", true);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n this.linear = null;\n this.pattern = null;\n this.radial = null;\n this.solid = null;\n this.stipple = null;\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 let propName = \"color\";\n let altPropName = propName;\n if (parent instanceof Border) {\n propName = \"background-color\";\n altPropName = \"background\";\n if (ggrandpa instanceof Ui) {\n style.backgroundColor = \"white\";\n }\n }\n if (parent instanceof Rectangle || parent instanceof Arc) {\n propName = altPropName = \"fill\";\n style.fill = \"white\";\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 const color = obj[$toStyle](this.color);\n if (color) {\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n if (this.color?.value) {\n const color = this.color[$toStyle]();\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n}\nclass Filter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"filter\", true);\n this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\"\", \"required\", \"optional\", \"none\"]);\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}\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 [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] !== null ? this[$content].toString() : \"\");\n }\n}\nclass template_Font extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"font\", 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, [\"none\", \"pair\"]);\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, [\"all\", \"word\"]);\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, [\"all\", \"word\"]);\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, [\"all\", \"word\"]);\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 [$clean](builder) {\n super[$clean](builder);\n this[$globalData].usedTypefaces.add(this.typeface);\n }\n [$toStyle]() {\n const style = toStyle(this, \"fill\");\n const color = style.color;\n if (color) {\n if (color === \"#000000\") {\n delete style.color;\n } else if (!color.startsWith(\"#\")) {\n style.background = color;\n style.backgroundClip = \"text\";\n style.color = \"transparent\";\n }\n }\n if (this.baselineShift) {\n style.verticalAlign = measureToString(this.baselineShift);\n }\n style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n style.letterSpacing = measureToString(this.letterSpacing);\n if (this.lineThrough !== 0) {\n style.textDecoration = \"line-through\";\n if (this.lineThrough === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n if (this.overline !== 0) {\n style.textDecoration = \"overline\";\n if (this.overline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n style.fontStyle = this.posture;\n style.fontSize = measureToString(0.99 * this.size);\n setFontFamily(this, this, this[$globalData].fontFinder, style);\n if (this.underline !== 0) {\n style.textDecoration = \"underline\";\n if (this.underline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n style.fontWeight = this.weight;\n return style;\n }\n}\nclass Format extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"format\", 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}\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}\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}\nclass Image extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"image\");\n this.aspect = getStringOption(attributes.aspect, [\"fit\", \"actual\", \"height\", \"none\", \"width\"]);\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, [\"base64\", \"none\", \"package\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n [$toHTML]() {\n if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n return HTMLResult.EMPTY;\n }\n let buffer = this[$globalData].images && this[$globalData].images.get(this.href);\n if (!buffer && (this.href || !this[$content])) {\n return HTMLResult.EMPTY;\n }\n if (!buffer && this.transferEncoding === \"base64\") {\n buffer = fromBase64Util(this[$content]);\n }\n if (!buffer) {\n return HTMLResult.EMPTY;\n }\n if (!this.contentType) {\n for (const [header, type] of IMAGES_HEADERS) {\n if (buffer.length > header.length && header.every((x, i) => x === buffer[i])) {\n this.contentType = type;\n break;\n }\n }\n if (!this.contentType) {\n return HTMLResult.EMPTY;\n }\n }\n const blob = new Blob([buffer], {\n type: this.contentType\n });\n let style;\n switch (this.aspect) {\n case \"fit\":\n case \"actual\":\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}\nclass ImageEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"imageEdit\", 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 [$toHTML](availableSpace) {\n if (this.data === \"embed\") {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {}\n });\n }\n return HTMLResult.EMPTY;\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 [$finalize]() {\n const number = parseInt(this[$content].trim(), 10);\n this[$content] = isNaN(number) ? null : number;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] !== null ? this[$content].toString() : \"\");\n }\n}\nclass Issuers extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"issuers\", 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}\nclass Items extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"items\", true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\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 [$toHTML]() {\n const output = [];\n for (const child of this[$getChildren]()) {\n output.push(child[$text]());\n }\n return HTMLResult.success(output);\n }\n}\nclass Keep extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keep\", 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}\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(attributes.dataEncipherment, options);\n this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n this.digitalSignature = getStringOption(attributes.digitalSignature, options);\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}\nclass Line extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"line\", 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 [$toHTML]() {\n const parent = this[$getParent]()[$getParent]();\n const 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 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 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 const line = {\n name: \"line\",\n attributes: {\n xmlns: SVG_NS,\n x1,\n y1,\n x2,\n y2,\n style\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 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 svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\nclass Linear extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"linear\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"toRight\", \"toBottom\", \"toLeft\", \"toTop\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\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}\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 [$finalize]() {\n this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n }\n}\nclass Manifest extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"manifest\", true);\n this.action = getStringOption(attributes.action, [\"include\", \"all\", \"exclude\"]);\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}\nclass Margin extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"margin\", 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 [$toStyle]() {\n return {\n margin: measureToString(this.topInset) + \" \" + measureToString(this.rightInset) + \" \" + measureToString(this.bottomInset) + \" \" + measureToString(this.leftInset)\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, [\"filler\", \"author\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\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, [\"portrait\", \"landscape\"]);\n this.short = getMeasurement(attributes.short);\n this.stock = attributes.stock || \"\";\n this.trayIn = getStringOption(attributes.trayIn, [\"auto\", \"delegate\", \"pageFront\"]);\n this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Message extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"message\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.text = new XFAObjectArray();\n }\n}\nclass NumericEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"numericEdit\", true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\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 [$toHTML](availableSpace) {\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]?.[$uid] || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n if (isRequired(field)) {\n html.attributes[\"aria-required\"] = true;\n html.attributes.required = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [html]\n });\n }\n}\nclass Occur extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"occur\", true);\n this.id = attributes.id || \"\";\n this.initial = attributes.initial !== \"\" ? getInteger({\n data: attributes.initial,\n defaultValue: \"\",\n validate: x => true\n }) : \"\";\n this.max = attributes.max !== \"\" ? getInteger({\n data: attributes.max,\n defaultValue: 1,\n validate: x => true\n }) : \"\";\n this.min = attributes.min !== \"\" ? getInteger({\n data: attributes.min,\n defaultValue: 1,\n validate: x => true\n }) : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n [$clean]() {\n const parent = this[$getParent]();\n const originalMin = this.min;\n if (this.min === \"\") {\n this.min = parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n }\n if (this.max === \"\") {\n if (originalMin === \"\") {\n this.max = parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n } else {\n this.max = this.min;\n }\n }\n if (this.max !== -1 && this.max < this.min) {\n this.max = this.min;\n }\n if (this.initial === \"\") {\n this.initial = parent instanceof Template ? 1 : this.min;\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}\nclass Oids extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oids\", 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}\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 [$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?.[0] || null,\n leader: leader?.[0] || null,\n trailer: trailer?.[0] || null,\n addLeader: false,\n addTrailer: false\n };\n }\n return this[$extra];\n }\n}\nclass PageArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageArea\", true);\n this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\"any\", \"blank\", \"notBlank\"]);\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, [\"any\", \"even\", \"odd\"]);\n this.pagePosition = getStringOption(attributes.pagePosition, [\"any\", \"first\", \"last\", \"only\", \"rest\"]);\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 [$isUsable]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0\n };\n return true;\n }\n return !this.occur || this.occur.max === -1 || this[$extra].numberOfUse < this.occur.max;\n }\n [$cleanPage]() {\n delete this[$extra];\n }\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0\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 return parent[$getNextPage]();\n }\n [$getAvailableSpace]() {\n return this[$extra].space || {\n width: 0,\n height: 0\n };\n }\n [$toHTML]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1\n };\n }\n const children = [];\n this[$extra].children = children;\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 this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n include: true\n });\n this[$childrenToHTML]({\n filter: new Set([\"contentArea\"]),\n include: true\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}\nclass PageSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageSet\", true);\n this.duplexImposition = getStringOption(attributes.duplexImposition, [\"longEdge\", \"shortEdge\"]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\"orderedOccurrence\", \"duplexPaginated\", \"simplexPaginated\"]);\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 [$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 [$isUsable]() {\n return !this.occur || this.occur.max === -1 || this[$extra].numberOfUse < this.occur.max;\n }\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n pageIndex: -1,\n pageSetIndex: -1\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 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 if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n this[$extra].pageIndex = -1;\n this[$extra].pageSetIndex = -1;\n return this[$getNextPage]();\n }\n const parent = this[$getParent]();\n if (parent instanceof PageSet) {\n return parent[$getNextPage]();\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 let page = this.pageArea.children.find(p => p.oddOrEven === parity && p.pagePosition === position);\n if (page) {\n return page;\n }\n page = this.pageArea.children.find(p => p.oddOrEven === \"any\" && p.pagePosition === position);\n if (page) {\n return page;\n }\n page = this.pageArea.children.find(p => p.oddOrEven === \"any\" && p.pagePosition === \"any\");\n if (page) {\n return page;\n }\n return this.pageArea.children[0];\n }\n}\nclass Para extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"para\", true);\n this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.lineHeight = attributes.lineHeight ? getMeasurement(attributes.lineHeight, \"0pt\") : \"\";\n this.marginLeft = attributes.marginLeft ? getMeasurement(attributes.marginLeft, \"0pt\") : \"\";\n this.marginRight = attributes.marginRight ? getMeasurement(attributes.marginRight, \"0pt\") : \"\";\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 ? getMeasurement(attributes.radixOffset, \"0pt\") : \"\";\n this.spaceAbove = attributes.spaceAbove ? getMeasurement(attributes.spaceAbove, \"0pt\") : \"\";\n this.spaceBelow = attributes.spaceBelow ? getMeasurement(attributes.spaceBelow, \"0pt\") : \"\";\n this.tabDefault = attributes.tabDefault ? getMeasurement(this.tabDefault) : \"\";\n this.tabStops = (attributes.tabStops || \"\").trim().split(/\\s+/).map((x, i) => i % 2 === 1 ? getMeasurement(x) : x);\n this.textIndent = attributes.textIndent ? getMeasurement(attributes.textIndent, \"0pt\") : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vAlign = getStringOption(attributes.vAlign, [\"top\", \"bottom\", \"middle\"]);\n this.widows = getInteger({\n data: attributes.widows,\n defaultValue: 0,\n validate: x => x >= 0\n });\n this.hyphenation = null;\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.paddingRight = 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 if (this.lineHeight > 0) {\n style.lineHeight = measureToString(this.lineHeight);\n }\n if (this.tabDefault !== \"\") {\n style.tabSize = measureToString(this.tabDefault);\n }\n if (this.tabStops.length > 0) {}\n if (this.hyphenatation) {\n Object.assign(style, this.hyphenatation[$toStyle]());\n }\n return style;\n }\n}\nclass PasswordEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"passwordEdit\", true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\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}\nclass template_Pattern extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pattern\", true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"crossHatch\", \"crossDiagonal\", \"diagonalLeft\", \"diagonalRight\", \"horizontal\", \"vertical\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\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} ${2 * width}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 return \"\";\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}\nclass Proto extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"proto\", 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}\nclass Radial extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"radial\", 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 [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const colors = this.type === \"toEdge\" ? `${startColor},${endColor}` : `${endColor},${startColor}`;\n return `radial-gradient(circle at center, ${colors})`;\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}\nclass Reasons extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reasons\", 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}\nclass Rectangle extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"rectangle\", 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 [$toHTML]() {\n const edge = this.edge.children.length ? this.edge.children[0] : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill?.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(edge.presence === \"visible\" ? edge.thickness : 0);\n style.stroke = edgeStyle.color;\n const corner = this.corner.children.length ? this.corner.children[0] : new Corner({});\n const cornerStyle = corner[$toStyle]();\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 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 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 svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\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}\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, [\"client\", \"both\", \"server\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\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}\nclass SignData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signData\", true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\"sign\", \"clear\", \"verify\"]);\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}\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signature\", 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}\nclass Signing extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signing\", 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}\nclass Solid extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"solid\", true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n [$toStyle](startColor) {\n return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\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, [\"custom\", \"caption\", \"name\", \"toolTip\"]);\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\nclass Stipple extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"stipple\", 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 [$toStyle](bgColor) {\n const alpha = this.rate / 100;\n return Util.makeHexColor(Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha), Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha), Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha));\n }\n}\nclass Subform extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subform\", true);\n this.access = getStringOption(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n this.allowMacro = getInteger({\n data: attributes.allowMacro,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1\n });\n this.columnWidths = (attributes.columnWidths || \"\").trim().split(/\\s+/).map(x => x === \"-1\" ? -1 : getMeasurement(x));\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\"position\", \"lr-tb\", \"rl-row\", \"rl-tb\", \"row\", \"table\", \"tb\"]);\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, [\"consumeData\", \"matchTemplate\"]);\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, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n this.relevant = getRelevant(attributes.relevant);\n this.restoreState = getStringOption(attributes.restoreState, [\"manual\", \"auto\"]);\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 [$getSubformParent]() {\n const parent = this[$getParent]();\n if (parent instanceof SubformSet) {\n return parent[$getSubformParent]();\n }\n return parent;\n }\n [$isBindable]() {\n return true;\n }\n [$isThereMoreWidth]() {\n return this.layout.endsWith(\"-tb\") && this[$extra].attempt === 0 && this[$extra].numberInLine > 0 || this[$getParent]()[$isThereMoreWidth]();\n }\n *[$getContainedChildren]() {\n yield* getContainedChildren(this);\n }\n [$flushHTML]() {\n return flushHTML(this);\n }\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n [$isSplittable]() {\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n if (this.keep && this.keep.intact !== \"none\") {\n this[$extra]._isSplittable = false;\n return false;\n }\n if (parent.layout?.endsWith(\"-tb\") && parent[$extra].numberInLine !== 0) {\n return false;\n }\n this[$extra]._isSplittable = true;\n return true;\n }\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (this.break) {\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 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 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 this[$removeChild](this.break);\n this.break = null;\n }\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n if (this.breakBefore.children.length > 1 || this.breakAfter.children.length > 1) {\n warn(\"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\");\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 if (this[$extra]?.afterBreakAfter) {\n return HTMLResult.EMPTY;\n }\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: []\n };\n setAccess(this, attributes.class);\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\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 const root = this[$getTemplateRoot]();\n const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"area\", \"draw\", \"exclGroup\", \"field\", \"subform\", \"subformSet\"]);\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 const style = toStyle(this, \"anchorType\", \"dimensions\", \"position\", \"presence\", \"border\", \"margin\", \"hAlign\");\n const classNames = [\"xfaSubform\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n attributes.style = style;\n attributes.class = classNames;\n if (this.name) {\n attributes.xfaName = this.name;\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 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 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 (isLrTb && this[$extra].attempt === 0 && this[$extra].numberInLine === 0 && !root[$extra].noLayoutFailure) {\n this[$extra].attempt = maxRun;\n break;\n }\n }\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n root[$extra].noLayoutFailure = savedNoLayoutFailure;\n if (this[$extra].attempt === maxRun) {\n if (this.overflow) {\n this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n }\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\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 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 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 if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n if ((style.width === \"0px\" || style.height === \"0px\") && children.length === 0) {\n return HTMLResult.EMPTY;\n }\n const html = {\n name: \"div\",\n attributes,\n children\n };\n applyAssist(this, attributes);\n const result = HTMLResult.success(createWrapper(this, html), bbox);\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 delete this[$extra];\n return result;\n }\n}\nclass SubformSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subformSet\", true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\"ordered\", \"choice\", \"unordered\"]);\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 *[$getContainedChildren]() {\n yield* getContainedChildren(this);\n }\n [$getSubformParent]() {\n let parent = this[$getParent]();\n while (!(parent instanceof Subform)) {\n parent = parent[$getParent]();\n }\n return parent;\n }\n [$isBindable]() {\n return true;\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 [$finalize]() {\n this[$content] = new Map(this[$content].split(this.delimiter).map(kv => {\n kv = kv.split(\"=\", 2);\n kv[0] = kv[0].trim();\n return kv;\n }));\n }\n}\nclass SubjectDNs extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDNs\", 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}\nclass Submit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"submit\", true);\n this.embedPDF = getInteger({\n data: attributes.embedPDF,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.format = getStringOption(attributes.format, [\"xdp\", \"formdata\", \"pdf\", \"urlencoded\", \"xfd\", \"xml\"]);\n this.id = attributes.id || \"\";\n this.target = attributes.target || \"\";\n this.textEncoding = getKeyword({\n data: attributes.textEncoding ? attributes.textEncoding.toLowerCase() : \"\",\n defaultValue: \"\",\n validate: k => [\"utf-8\", \"big-five\", \"fontspecific\", \"gbk\", \"gb-18030\", \"gb-2312\", \"ksc-5601\", \"none\", \"shift-jis\", \"ucs-2\", \"utf-16\"].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}\nclass Template extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"template\", true);\n this.baseProfile = getStringOption(attributes.baseProfile, [\"full\", \"interactiveForms\"]);\n this.extras = null;\n this.subform = new XFAObjectArray();\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 [$isSplittable]() {\n return true;\n }\n [$searchNode](expr, container) {\n if (expr.startsWith(\"#\")) {\n return [this[$ids].get(expr.slice(1))];\n }\n return searchNode(this, container, expr, true, true);\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 const root = this.subform.children[0];\n root.pageSet[$cleanPage]();\n const pageAreas = root.pageSet.pageArea.children;\n const mainHtml = {\n name: \"div\",\n children: []\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 (root.subform.children.length >= 1 && root.subform.children[0].breakBefore.children.length >= 1) {\n breakBefore = root.subform.children[0].breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (root.break?.beforeTarget) {\n breakBefore = root.break;\n breakBeforeTarget = breakBefore.beforeTarget;\n } else if (root.subform.children.length >= 1 && root.subform.children[0].break?.beforeTarget) {\n breakBefore = root.subform.children[0].break;\n breakBeforeTarget = breakBefore.beforeTarget;\n }\n if (breakBefore) {\n const target = this[$searchNode](breakBeforeTarget, breakBefore[$getParent]());\n if (target instanceof PageArea) {\n pageArea = target;\n breakBefore[$extra] = {};\n }\n }\n if (!pageArea) {\n pageArea = pageAreas[0];\n }\n pageArea[$extra] = {\n numberOfUse: 1\n };\n const pageAreaParent = pageArea[$getParent]();\n pageAreaParent[$extra] = {\n numberOfUse: 1,\n pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n pageSetIndex: 0\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 while (true) {\n if (!hasSomething) {\n mainHtml.children.pop();\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 targetPageArea = null;\n this[$extra].currentPageArea = pageArea;\n const page = pageArea[$toHTML]().html;\n mainHtml.children.push(page);\n if (leader) {\n this[$extra].noLayoutFailure = true;\n page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n leader = null;\n }\n if (trailer) {\n this[$extra].noLayoutFailure = true;\n page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n trailer = null;\n }\n const contentAreas = pageArea.contentArea.children;\n const htmlContentAreas = page.children.filter(node => node.attributes.class.includes(\"xfaContentarea\"));\n hasSomething = false;\n this[$extra].firstUnsplittable = null;\n this[$extra].noLayoutFailure = false;\n const flush = index => {\n const html = root[$flushHTML]();\n if (html) {\n hasSomething ||= html.children?.length > 0;\n htmlContentAreas[index].children.push(html);\n }\n };\n for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n const contentArea = this[$extra].currentContentArea = contentAreas[i];\n const space = {\n width: contentArea.w,\n height: contentArea.h\n };\n startIndex = 0;\n if (leader) {\n htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n leader = null;\n }\n if (trailer) {\n htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n trailer = null;\n }\n const html = root[$toHTML](space);\n if (html.success) {\n if (html.html) {\n hasSomething ||= 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 if (html.isBreak()) {\n const node = html.breakNode;\n flush(i);\n if (node.targetType === \"auto\") {\n continue;\n }\n if (node.leader) {\n leader = this[$searchNode](node.leader, node[$getParent]());\n leader = leader ? leader[0] : null;\n }\n if (node.trailer) {\n trailer = this[$searchNode](node.trailer, node[$getParent]());\n trailer = trailer ? trailer[0] : null;\n }\n if (node.targetType === \"pageArea\") {\n targetPageArea = node[$extra].target;\n i = Infinity;\n } else if (!node[$extra].target) {\n i = node[$extra].index;\n } else {\n targetPageArea = node[$extra].target;\n startIndex = node[$extra].index + 1;\n i = Infinity;\n }\n continue;\n }\n if (this[$extra].overflowNode) {\n const node = this[$extra].overflowNode;\n this[$extra].overflowNode = null;\n const overflowExtra = node[$getExtra]();\n const target = overflowExtra.target;\n overflowExtra.addLeader = overflowExtra.leader !== null;\n overflowExtra.addTrailer = overflowExtra.trailer !== null;\n flush(i);\n const currentIndex = i;\n i = Infinity;\n if (target instanceof PageArea) {\n targetPageArea = target;\n } else if (target instanceof ContentArea) {\n const index = contentAreas.indexOf(target);\n if (index !== -1) {\n if (index > currentIndex) {\n i = index - 1;\n } else {\n startIndex = index;\n }\n } else {\n targetPageArea = target[$getParent]();\n startIndex = targetPageArea.contentArea.children.indexOf(target);\n }\n }\n continue;\n }\n flush(i);\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}\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 [$acceptWhitespace]() {\n return true;\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 [$onText](str) {\n if (this[$content] instanceof XFAObject) {\n return;\n }\n super[$onText](str);\n }\n [$finalize]() {\n if (typeof this[$content] === \"string\") {\n this[$content] = this[$content].replaceAll(\"\\r\\n\", \"\\n\");\n }\n }\n [$getExtra]() {\n if (typeof this[$content] === \"string\") {\n return this[$content].split(/[\\u2029\\u2028\\n]/).reduce((acc, line) => {\n if (line) {\n acc.push(line);\n }\n return acc;\n }, []).join(\"\\n\");\n }\n return this[$content][$text]();\n }\n [$toHTML](availableSpace) {\n if (typeof this[$content] === \"string\") {\n const html = valueToHtml(this[$content]).html;\n if (this[$content].includes(\"\\u2029\")) {\n html.name = \"div\";\n html.children = [];\n this[$content].split(\"\\u2029\").map(para => para.split(/[\\u2028\\n]/).reduce((acc, line) => {\n acc.push({\n name: \"span\",\n value: line\n }, {\n name: \"br\"\n });\n return acc;\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 this[$content].split(/[\\u2028\\n]/).forEach(line => {\n html.children.push({\n name: \"span\",\n value: line\n }, {\n name: \"br\"\n });\n });\n }\n return HTMLResult.success(html);\n }\n return this[$content][$toHTML](availableSpace);\n }\n}\nclass TextEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"textEdit\", true);\n this.allowRichText = getInteger({\n data: attributes.allowRichText,\n defaultValue: 0,\n validate: x => x === 1\n });\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\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, [\"auto\", \"off\", \"on\"]);\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n [$toHTML](availableSpace) {\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]?.[$uid] || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n } else {\n html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n dataId: field[$data]?.[$uid] || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false\n }\n };\n }\n if (isRequired(field)) {\n html.attributes[\"aria-required\"] = true;\n html.attributes.required = true;\n }\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"]\n },\n children: [html]\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 [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\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}\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}\nclass Traversal extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traversal\", 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}\nclass Traverse extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traverse\", true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\"next\", \"back\", \"down\", \"first\", \"left\", \"right\", \"up\"]);\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 get name() {\n return this.operation;\n }\n [$isTransparent]() {\n return false;\n }\n}\nclass Ui extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ui\", 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 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 [$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 this[$extra] = obj;\n return obj;\n }\n this[$extra] = null;\n }\n return this[$extra];\n }\n [$toHTML](availableSpace) {\n const obj = this[$getExtra]();\n if (obj) {\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\nclass Validate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"validate\", true);\n this.formatTest = getStringOption(attributes.formatTest, [\"warning\", \"disabled\", \"error\"]);\n this.id = attributes.id || \"\";\n this.nullTest = getStringOption(attributes.nullTest, [\"disabled\", \"error\", \"warning\"]);\n this.scriptTest = getStringOption(attributes.scriptTest, [\"error\", \"disabled\", \"warning\"]);\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}\nclass Value extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"value\", 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 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 [$setValue](value) {\n const parent = this[$getParent]();\n if (parent instanceof Field) {\n if (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 const valueName = value[$nodeName];\n if (this[valueName] !== null) {\n this[valueName][$content] = value[$content];\n return;\n }\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 this[value[$nodeName]] = value;\n this[$appendChild](value);\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 [$toHTML](availableSpace) {\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\nclass Variables extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"variables\", 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 [$isTransparent]() {\n return true;\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 static appearanceFilter(attrs) {\n return new AppearanceFilter(attrs);\n }\n static arc(attrs) {\n return new Arc(attrs);\n }\n static area(attrs) {\n return new Area(attrs);\n }\n static assist(attrs) {\n return new Assist(attrs);\n }\n static barcode(attrs) {\n return new Barcode(attrs);\n }\n static bind(attrs) {\n return new Bind(attrs);\n }\n static bindItems(attrs) {\n return new BindItems(attrs);\n }\n static bookend(attrs) {\n return new Bookend(attrs);\n }\n static boolean(attrs) {\n return new BooleanElement(attrs);\n }\n static border(attrs) {\n return new Border(attrs);\n }\n static break(attrs) {\n return new Break(attrs);\n }\n static breakAfter(attrs) {\n return new BreakAfter(attrs);\n }\n static breakBefore(attrs) {\n return new BreakBefore(attrs);\n }\n static button(attrs) {\n return new Button(attrs);\n }\n static calculate(attrs) {\n return new Calculate(attrs);\n }\n static caption(attrs) {\n return new Caption(attrs);\n }\n static certificate(attrs) {\n return new Certificate(attrs);\n }\n static certificates(attrs) {\n return new Certificates(attrs);\n }\n static checkButton(attrs) {\n return new CheckButton(attrs);\n }\n static choiceList(attrs) {\n return new ChoiceList(attrs);\n }\n static color(attrs) {\n return new Color(attrs);\n }\n static comb(attrs) {\n return new Comb(attrs);\n }\n static connect(attrs) {\n return new Connect(attrs);\n }\n static contentArea(attrs) {\n return new ContentArea(attrs);\n }\n static corner(attrs) {\n return new Corner(attrs);\n }\n static date(attrs) {\n return new DateElement(attrs);\n }\n static dateTime(attrs) {\n return new DateTime(attrs);\n }\n static dateTimeEdit(attrs) {\n return new DateTimeEdit(attrs);\n }\n static decimal(attrs) {\n return new Decimal(attrs);\n }\n static defaultUi(attrs) {\n return new DefaultUi(attrs);\n }\n static desc(attrs) {\n return new Desc(attrs);\n }\n static digestMethod(attrs) {\n return new DigestMethod(attrs);\n }\n static digestMethods(attrs) {\n return new DigestMethods(attrs);\n }\n static draw(attrs) {\n return new Draw(attrs);\n }\n static edge(attrs) {\n return new Edge(attrs);\n }\n static encoding(attrs) {\n return new Encoding(attrs);\n }\n static encodings(attrs) {\n return new Encodings(attrs);\n }\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n static encryptData(attrs) {\n return new EncryptData(attrs);\n }\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n static encryptionMethod(attrs) {\n return new EncryptionMethod(attrs);\n }\n static encryptionMethods(attrs) {\n return new EncryptionMethods(attrs);\n }\n static event(attrs) {\n return new Event(attrs);\n }\n static exData(attrs) {\n return new ExData(attrs);\n }\n static exObject(attrs) {\n return new ExObject(attrs);\n }\n static exclGroup(attrs) {\n return new ExclGroup(attrs);\n }\n static execute(attrs) {\n return new Execute(attrs);\n }\n static extras(attrs) {\n return new Extras(attrs);\n }\n static field(attrs) {\n return new Field(attrs);\n }\n static fill(attrs) {\n return new Fill(attrs);\n }\n static filter(attrs) {\n return new Filter(attrs);\n }\n static float(attrs) {\n return new Float(attrs);\n }\n static font(attrs) {\n return new template_Font(attrs);\n }\n static format(attrs) {\n return new Format(attrs);\n }\n static handler(attrs) {\n return new Handler(attrs);\n }\n static hyphenation(attrs) {\n return new Hyphenation(attrs);\n }\n static image(attrs) {\n return new Image(attrs);\n }\n static imageEdit(attrs) {\n return new ImageEdit(attrs);\n }\n static integer(attrs) {\n return new Integer(attrs);\n }\n static issuers(attrs) {\n return new Issuers(attrs);\n }\n static items(attrs) {\n return new Items(attrs);\n }\n static keep(attrs) {\n return new Keep(attrs);\n }\n static keyUsage(attrs) {\n return new KeyUsage(attrs);\n }\n static line(attrs) {\n return new Line(attrs);\n }\n static linear(attrs) {\n return new Linear(attrs);\n }\n static lockDocument(attrs) {\n return new LockDocument(attrs);\n }\n static manifest(attrs) {\n return new Manifest(attrs);\n }\n static margin(attrs) {\n return new Margin(attrs);\n }\n static mdp(attrs) {\n return new Mdp(attrs);\n }\n static medium(attrs) {\n return new Medium(attrs);\n }\n static message(attrs) {\n return new Message(attrs);\n }\n static numericEdit(attrs) {\n return new NumericEdit(attrs);\n }\n static occur(attrs) {\n return new Occur(attrs);\n }\n static oid(attrs) {\n return new Oid(attrs);\n }\n static oids(attrs) {\n return new Oids(attrs);\n }\n static overflow(attrs) {\n return new Overflow(attrs);\n }\n static pageArea(attrs) {\n return new PageArea(attrs);\n }\n static pageSet(attrs) {\n return new PageSet(attrs);\n }\n static para(attrs) {\n return new Para(attrs);\n }\n static passwordEdit(attrs) {\n return new PasswordEdit(attrs);\n }\n static pattern(attrs) {\n return new template_Pattern(attrs);\n }\n static picture(attrs) {\n return new Picture(attrs);\n }\n static proto(attrs) {\n return new Proto(attrs);\n }\n static radial(attrs) {\n return new Radial(attrs);\n }\n static reason(attrs) {\n return new Reason(attrs);\n }\n static reasons(attrs) {\n return new Reasons(attrs);\n }\n static rectangle(attrs) {\n return new Rectangle(attrs);\n }\n static ref(attrs) {\n return new RefElement(attrs);\n }\n static script(attrs) {\n return new Script(attrs);\n }\n static setProperty(attrs) {\n return new SetProperty(attrs);\n }\n static signData(attrs) {\n return new SignData(attrs);\n }\n static signature(attrs) {\n return new Signature(attrs);\n }\n static signing(attrs) {\n return new Signing(attrs);\n }\n static solid(attrs) {\n return new Solid(attrs);\n }\n static speak(attrs) {\n return new Speak(attrs);\n }\n static stipple(attrs) {\n return new Stipple(attrs);\n }\n static subform(attrs) {\n return new Subform(attrs);\n }\n static subformSet(attrs) {\n return new SubformSet(attrs);\n }\n static subjectDN(attrs) {\n return new SubjectDN(attrs);\n }\n static subjectDNs(attrs) {\n return new SubjectDNs(attrs);\n }\n static submit(attrs) {\n return new Submit(attrs);\n }\n static template(attrs) {\n return new Template(attrs);\n }\n static text(attrs) {\n return new Text(attrs);\n }\n static textEdit(attrs) {\n return new TextEdit(attrs);\n }\n static time(attrs) {\n return new Time(attrs);\n }\n static timeStamp(attrs) {\n return new TimeStamp(attrs);\n }\n static toolTip(attrs) {\n return new ToolTip(attrs);\n }\n static traversal(attrs) {\n return new Traversal(attrs);\n }\n static traverse(attrs) {\n return new Traverse(attrs);\n }\n static ui(attrs) {\n return new Ui(attrs);\n }\n static validate(attrs) {\n return new Validate(attrs);\n }\n static value(attrs) {\n return new Value(attrs);\n }\n static variables(attrs) {\n return new Variables(attrs);\n }\n}\n\n;// ./src/core/xfa/bind.js\n\n\n\n\n\n\nconst bind_NS_DATASETS = NamespaceIds.datasets.id;\nfunction createText(content) {\n const node = new Text({});\n node[$content] = content;\n return node;\n}\nclass Binder {\n constructor(root) {\n this.root = root;\n this.datasets = root.datasets;\n this.data = root.datasets?.data || new XmlObject(NamespaceIds.datasets.id, \"data\");\n this.emptyMerge = this.data[$getChildren]().length === 0;\n this.root.form = this.form = root.template[$clone]();\n }\n _isConsumeData() {\n return !this.emptyMerge && this._mergeMode;\n }\n _isMatchTemplate() {\n return !this._isConsumeData();\n }\n bind() {\n this._bindElement(this.form, this.data);\n return this.form;\n }\n getData() {\n return this.data;\n }\n _bindValue(formNode, data, picture) {\n formNode[$data] = data;\n if (formNode[$hasSettableValue]()) {\n if (data[$isDataValue]()) {\n const value = data[$getDataValue]();\n formNode[$setValue](createText(value));\n } else if (formNode instanceof Field && formNode.ui?.choiceList?.open === \"multiSelect\") {\n const value = data[$getChildren]().map(child => child[$content].trim()).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 _findDataByNameToConsume(name, isValue, dataNode, global) {\n if (!name) {\n return null;\n }\n let generator, match;\n for (let i = 0; i < 3; i++) {\n generator = dataNode[$getRealChildrenByNameIt](name, false, true);\n while (true) {\n match = generator.next().value;\n if (!match) {\n break;\n }\n if (isValue === match[$isDataValue]()) {\n return match;\n }\n }\n if (dataNode[$namespaceId] === NamespaceIds.datasets.id && dataNode[$nodeName] === \"data\") {\n break;\n }\n dataNode = dataNode[$getParent]();\n }\n if (!global) {\n return null;\n }\n generator = this.data[$getRealChildrenByNameIt](name, true, false);\n match = generator.next().value;\n if (match) {\n return match;\n }\n generator = this.data[$getAttributeIt](name, true);\n match = generator.next().value;\n if (match?.[$isDataValue]()) {\n return match;\n }\n return null;\n }\n _setProperties(formNode, dataNode) {\n if (!formNode.hasOwnProperty(\"setProperty\")) {\n return;\n }\n for (const {\n ref,\n target,\n connection\n } of formNode.setProperty.children) {\n if (connection) {\n continue;\n }\n if (!ref) {\n continue;\n }\n const nodes = searchNode(this.root, dataNode, ref, false, false);\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n const [node] = nodes;\n if (!node[$isDescendent](this.data)) {\n warn(`XFA - Invalid node: must be a data node.`);\n continue;\n }\n const targetNodes = searchNode(this.root, formNode, target, false, false);\n if (!targetNodes) {\n warn(`XFA - Invalid target: ${target}.`);\n continue;\n }\n const [targetNode] = targetNodes;\n if (!targetNode[$isDescendent](formNode)) {\n warn(`XFA - Invalid target: must be a property or subproperty.`);\n continue;\n }\n const targetParent = targetNode[$getParent]();\n if (targetNode instanceof SetProperty || targetParent instanceof SetProperty) {\n warn(`XFA - Invalid target: cannot be a setProperty or one of its properties.`);\n continue;\n }\n if (targetNode instanceof BindItems || targetParent instanceof BindItems) {\n warn(`XFA - Invalid target: cannot be a bindItems or one of its properties.`);\n continue;\n }\n const content = node[$text]();\n const name = targetNode[$nodeName];\n if (targetNode instanceof XFAAttribute) {\n const attrs = Object.create(null);\n attrs[name] = content;\n const obj = Reflect.construct(Object.getPrototypeOf(targetParent).constructor, [attrs]);\n targetParent[name] = obj[name];\n continue;\n }\n if (!targetNode.hasOwnProperty($content)) {\n warn(`XFA - Invalid node to use in setProperty`);\n continue;\n }\n targetNode[$data] = node;\n targetNode[$content] = content;\n targetNode[$finalize]();\n }\n }\n _bindItems(formNode, dataNode) {\n if (!formNode.hasOwnProperty(\"items\") || !formNode.hasOwnProperty(\"bindItems\") || formNode.bindItems.isEmpty()) {\n return;\n }\n for (const item of formNode.items.children) {\n formNode[$removeChild](item);\n }\n formNode.items.clear();\n const labels = new Items({});\n const values = new Items({});\n formNode[$appendChild](labels);\n formNode.items.push(labels);\n formNode[$appendChild](values);\n formNode.items.push(values);\n for (const {\n ref,\n labelRef,\n valueRef,\n connection\n } of formNode.bindItems.children) {\n if (connection) {\n continue;\n }\n if (!ref) {\n continue;\n }\n const nodes = searchNode(this.root, dataNode, ref, false, false);\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 const labelNodes = searchNode(this.root, node, labelRef, true, false);\n if (!labelNodes) {\n warn(`XFA - Invalid label: ${labelRef}.`);\n continue;\n }\n const [labelNode] = labelNodes;\n if (!labelNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid label: must be a datasets child.`);\n continue;\n }\n const valueNodes = searchNode(this.root, node, valueRef, true, false);\n if (!valueNodes) {\n warn(`XFA - Invalid value: ${valueRef}.`);\n continue;\n }\n const [valueNode] = valueNodes;\n if (!valueNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid value: must be a datasets child.`);\n continue;\n }\n const label = createText(labelNode[$text]());\n const value = createText(valueNode[$text]());\n labels[$appendChild](label);\n labels.text.push(label);\n values[$appendChild](value);\n values.text.push(value);\n }\n }\n }\n _bindOccurrences(formNode, matches, picture) {\n let baseClone;\n if (matches.length > 1) {\n baseClone = formNode[$clone]();\n baseClone[$removeChild](baseClone.occur);\n baseClone.occur = null;\n }\n this._bindValue(formNode, matches[0], picture);\n this._setProperties(formNode, matches[0]);\n this._bindItems(formNode, matches[0]);\n if (matches.length === 1) {\n return;\n }\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n const pos = parent[$indexOf](formNode);\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 this._bindValue(clone, match, picture);\n this._setProperties(clone, match);\n this._bindItems(clone, match);\n }\n }\n _createOccurrences(formNode) {\n if (!this.emptyMerge) {\n return;\n }\n const {\n occur\n } = formNode;\n if (!occur || occur.initial <= 1) {\n return;\n }\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n if (!(parent[name] instanceof XFAObjectArray)) {\n return;\n }\n let currentNumber;\n if (formNode.name) {\n currentNumber = parent[name].children.filter(e => e.name === formNode.name).length;\n } else {\n currentNumber = parent[name].children.length;\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 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 _getOccurInfo(formNode) {\n const {\n name,\n occur\n } = 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 _setAndBind(formNode, dataNode) {\n this._setProperties(formNode, dataNode);\n this._bindItems(formNode, dataNode);\n this._bindElement(formNode, dataNode);\n }\n _bindElement(formNode, dataNode) {\n const uselessNodes = [];\n this._createOccurrences(formNode);\n for (const child of formNode[$getChildren]()) {\n if (child[$data]) {\n continue;\n }\n if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n this._mergeMode = child.mergeMode === \"consumeData\";\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 = dataNode[$namespaceId] === bind_NS_DATASETS ? -1 : dataNode[$namespaceId];\n const dataChild = child[$data] = new XmlObject(nsId, child.name || \"root\");\n dataNode[$appendChild](dataChild);\n this._bindElement(child, dataChild);\n }\n continue;\n }\n if (!child[$isBindable]()) {\n continue;\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 const [min, max] = this._getOccurInfo(child);\n if (ref) {\n match = searchNode(this.root, dataNode, ref, true, false);\n if (match === null) {\n match = createDataNode(this.data, dataNode, ref);\n if (!match) {\n continue;\n }\n if (this._isConsumeData()) {\n match[$consumed] = true;\n }\n this._setAndBind(child, match);\n continue;\n } else {\n if (this._isConsumeData()) {\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 const matches = [];\n while (matches.length < max) {\n const found = this._findDataByNameToConsume(child.name, child[$hasSettableValue](), dataNode, global);\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 match = dataNode[$getRealChildrenByNameIt](child.name, false, this.emptyMerge).next().value;\n if (!match) {\n if (min === 0) {\n uselessNodes.push(child);\n continue;\n }\n const nsId = dataNode[$namespaceId] === bind_NS_DATASETS ? -1 : 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 this._setAndBind(child, match);\n continue;\n }\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n match = [match];\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 uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n }\n}\n\n;// ./src/core/xfa/data.js\n\nclass DataHandler {\n constructor(root, data) {\n this.data = data;\n this.dataset = root.datasets || null;\n }\n serialize(storage) {\n const stack = [[-1, this.data[$getChildren]()]];\n while (stack.length > 0) {\n const last = stack.at(-1);\n const [i, children] = last;\n if (i + 1 === children.length) {\n stack.pop();\n continue;\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 const nodes = child[$getChildren]();\n if (nodes.length > 0) {\n stack.push([-1, nodes]);\n }\n }\n const buf = [``];\n if (this.dataset) {\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(\"\");\n return buf.join(\"\");\n }\n}\n\n;// ./src/core/xfa/config.js\n\n\n\n\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\nclass Acrobat extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat\", 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}\nclass Acrobat7 extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat7\", true);\n this.dynamicRender = null;\n }\n}\nclass ADBE_JSConsole extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\nclass ADBE_JSDebugger extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\nclass AddSilentPrint extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addSilentPrint\");\n }\n}\nclass AddViewerPreferences extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addViewerPreferences\");\n }\n}\nclass AdjustData extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adjustData\");\n }\n}\nclass AdobeExtensionLevel extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n }\n}\nclass Agent extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"agent\", true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.common = new XFAObjectArray();\n }\n}\nclass AlwaysEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"alwaysEmbed\");\n }\n}\nclass Amd extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"amd\");\n }\n}\nclass config_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, [\"\", \"barcode\", \"coreinit\", \"deviceDriver\", \"font\", \"general\", \"layout\", \"merge\", \"script\", \"signature\", \"sourceSet\", \"templateCache\"]);\n }\n}\nclass Attributes extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n }\n}\nclass AutoSave extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n }\n}\nclass Base extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"base\");\n }\n}\nclass BatchOutput extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"batchOutput\");\n this.format = getStringOption(attributes.format, [\"none\", \"concat\", \"zip\", \"zipCompress\"]);\n }\n}\nclass BehaviorOverride extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"behaviorOverride\");\n }\n [$finalize]() {\n this[$content] = new Map(this[$content].trim().split(/\\s+/).filter(x => x.includes(\":\")).map(x => x.split(\":\", 2)));\n }\n}\nclass Cache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"cache\", true);\n this.templateCache = null;\n }\n}\nclass Change extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"change\");\n }\n}\nclass Common extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"common\", 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}\nclass Compress extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compress\");\n this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n }\n}\nclass CompressLogicalStructure extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressLogicalStructure\");\n }\n}\nclass CompressObjectStream extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressObjectStream\");\n }\n}\nclass Compression extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compression\", true);\n this.compressLogicalStructure = null;\n this.compressObjectStream = null;\n this.level = null;\n this.type = null;\n }\n}\nclass Config extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"config\", true);\n this.acrobat = null;\n this.present = null;\n this.trace = null;\n this.agent = new XFAObjectArray();\n }\n}\nclass Conformance extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n }\n}\nclass ContentCopy extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"contentCopy\");\n }\n}\nclass Copies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n }\n}\nclass Creator extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"creator\");\n }\n}\nclass CurrentPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n }\n}\nclass Data extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"data\", 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}\nclass Debug extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"debug\", true);\n this.uri = null;\n }\n}\nclass DefaultTypeface extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"defaultTypeface\");\n this.writingScript = getStringOption(attributes.writingScript, [\"*\", \"Arabic\", \"Cyrillic\", \"EastEuropeanRoman\", \"Greek\", \"Hebrew\", \"Japanese\", \"Korean\", \"Roman\", \"SimplifiedChinese\", \"Thai\", \"TraditionalChinese\", \"Vietnamese\"]);\n }\n}\nclass Destination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"destination\", [\"pdf\", \"pcl\", \"ps\", \"webClient\", \"zpl\"]);\n }\n}\nclass DocumentAssembly extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"documentAssembly\");\n }\n}\nclass Driver extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"driver\", true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\nclass DuplexOption extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"duplexOption\", [\"simplex\", \"duplexFlipLongEdge\", \"duplexFlipShortEdge\"]);\n }\n}\nclass DynamicRender extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n }\n}\nclass Embed extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"embed\");\n }\n}\nclass config_Encrypt extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encrypt\");\n }\n}\nclass config_Encryption extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryption\", true);\n this.encrypt = null;\n this.encryptionLevel = null;\n this.permissions = null;\n }\n}\nclass EncryptionLevel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n }\n}\nclass Enforce extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"enforce\");\n }\n}\nclass Equate extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equate\");\n this.force = getInteger({\n data: attributes.force,\n defaultValue: 1,\n validate: n => n === 0\n });\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n }\n}\nclass EquateRange extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equateRange\");\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n this._unicodeRange = attributes.unicodeRange || \"\";\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.split(\",\").map(x => x.trim()).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}\nclass Exclude extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"exclude\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/).filter(x => x && [\"calculate\", \"close\", \"enter\", \"exit\", \"initialize\", \"ready\", \"validate\"].includes(x));\n }\n}\nclass ExcludeNS extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"excludeNS\");\n }\n}\nclass FlipLabel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\nclass config_FontInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"fontInfo\", 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}\nclass FormFieldFilling extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"formFieldFilling\");\n }\n}\nclass GroupParent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"groupParent\");\n }\n}\nclass IfEmpty extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ifEmpty\", [\"dataValue\", \"dataGroup\", \"ignore\", \"remove\"]);\n }\n}\nclass IncludeXDPContent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"includeXDPContent\");\n }\n}\nclass IncrementalLoad extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n }\n}\nclass IncrementalMerge extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalMerge\");\n }\n}\nclass Interactive extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"interactive\");\n }\n}\nclass Jog extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n }\n}\nclass LabelPrinter extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"labelPrinter\", 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}\nclass Layout extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n }\n}\nclass Level extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n }\n}\nclass Linearized extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"linearized\");\n }\n}\nclass Locale extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"locale\");\n }\n}\nclass LocaleSet extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"localeSet\");\n }\n}\nclass Log extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"log\", true);\n this.mode = null;\n this.threshold = null;\n this.to = null;\n this.uri = null;\n }\n}\nclass MapElement extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"map\", true);\n this.equate = new XFAObjectArray();\n this.equateRange = new XFAObjectArray();\n }\n}\nclass MediumInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mediumInfo\", true);\n this.map = null;\n }\n}\nclass config_Message extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"message\", true);\n this.msgId = null;\n this.severity = null;\n }\n}\nclass Messaging extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"messaging\", true);\n this.message = new XFAObjectArray();\n }\n}\nclass Mode extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n }\n}\nclass ModifyAnnots extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"modifyAnnots\");\n }\n}\nclass MsgId extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n }\n}\nclass NameAttr extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"nameAttr\");\n }\n}\nclass NeverEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"neverEmbed\");\n }\n}\nclass NumberOfCopies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n }\n}\nclass OpenAction extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"openAction\", true);\n this.destination = null;\n }\n}\nclass Output extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"output\", true);\n this.to = null;\n this.type = null;\n this.uri = null;\n }\n}\nclass OutputBin extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputBin\");\n }\n}\nclass OutputXSL extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputXSL\", true);\n this.uri = null;\n }\n}\nclass Overprint extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n }\n}\nclass Packets extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"packets\");\n }\n [$finalize]() {\n if (this[$content] === \"*\") {\n return;\n }\n this[$content] = this[$content].trim().split(/\\s+/).filter(x => [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x));\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}\nclass PageRange extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageRange\");\n }\n [$finalize]() {\n const numbers = this[$content].trim().split(/\\s+/).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}\nclass Pagination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pagination\", [\"simplex\", \"duplexShortEdge\", \"duplexLongEdge\"]);\n }\n}\nclass PaginationOverride extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"paginationOverride\", [\"none\", \"forceDuplex\", \"forceDuplexLongEdge\", \"forceDuplexShortEdge\", \"forceSimplex\"]);\n }\n}\nclass Part extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"part\", 1, n => false);\n }\n}\nclass Pcl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pcl\", 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}\nclass Pdf extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdf\", 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}\nclass Pdfa extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdfa\", true);\n this.amd = null;\n this.conformance = null;\n this.includeXDPContent = null;\n this.part = null;\n }\n}\nclass Permissions extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"permissions\", 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}\nclass PickTrayByPDFSize extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n }\n}\nclass config_Picture extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"picture\");\n }\n}\nclass PlaintextMetadata extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"plaintextMetadata\");\n }\n}\nclass Presence extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"presence\", [\"preserve\", \"dissolve\", \"dissolveStructure\", \"ignore\", \"remove\"]);\n }\n}\nclass Present extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"present\", 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}\nclass Print extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"print\");\n }\n}\nclass PrintHighQuality extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printHighQuality\");\n }\n}\nclass PrintScaling extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n }\n}\nclass PrinterName extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printerName\");\n }\n}\nclass Producer extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"producer\");\n }\n}\nclass Ps extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ps\", 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}\nclass Range extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"range\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s*,\\s*/, 2).map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10))).filter(range => range.every(x => !isNaN(x))).map(range => {\n if (range.length === 1) {\n range.push(range[0]);\n }\n return range;\n });\n }\n}\nclass Record extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"record\");\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}\nclass Relevant extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"relevant\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/);\n }\n}\nclass Rename extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"rename\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim();\n if (this[$content].toLowerCase().startsWith(\"xml\") || new RegExp(\"[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*\", \"u\").test(this[$content])) {\n warn(\"XFA - Rename: invalid XFA name\");\n }\n }\n}\nclass RenderPolicy extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n }\n}\nclass RunScripts extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n }\n}\nclass config_Script extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"script\", true);\n this.currentPage = null;\n this.exclude = null;\n this.runScripts = null;\n }\n}\nclass ScriptModel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n }\n}\nclass Severity extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"severity\", [\"ignore\", \"error\", \"information\", \"trace\", \"warning\"]);\n }\n}\nclass SilentPrint extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"silentPrint\", true);\n this.addSilentPrint = null;\n this.printerName = null;\n }\n}\nclass Staple extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"staple\");\n this.mode = getStringOption(attributes.mode, [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\nclass StartNode extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startNode\");\n }\n}\nclass StartPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n }\n}\nclass SubmitFormat extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitFormat\", [\"html\", \"delegate\", \"fdf\", \"xml\", \"pdf\"]);\n }\n}\nclass SubmitUrl extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitUrl\");\n }\n}\nclass SubsetBelow extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n }\n}\nclass SuppressBanner extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"suppressBanner\");\n }\n}\nclass Tagged extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"tagged\");\n }\n}\nclass config_Template extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"template\", true);\n this.base = null;\n this.relevant = null;\n this.startPage = null;\n this.uri = null;\n this.xsl = null;\n }\n}\nclass Threshold extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"threshold\", [\"trace\", \"error\", \"information\", \"warning\"]);\n }\n}\nclass To extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"to\", [\"null\", \"memory\", \"stderr\", \"stdout\", \"system\", \"uri\"]);\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}\nclass Trace extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"trace\", true);\n this.area = new XFAObjectArray();\n }\n}\nclass Transform extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"transform\", 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}\nclass Type extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"type\", [\"none\", \"ascii85\", \"asciiHex\", \"ccittfax\", \"flate\", \"lzw\", \"runLength\", \"native\", \"xdp\", \"mergedXDP\"]);\n }\n}\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"uri\");\n }\n}\nclass config_Validate extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validate\", [\"preSubmit\", \"prePrint\", \"preExecute\", \"preSave\"]);\n }\n}\nclass ValidateApprovalSignatures extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n }\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/).filter(x => [\"docReady\", \"postSign\"].includes(x));\n }\n}\nclass ValidationMessaging extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validationMessaging\", [\"allMessagesIndividually\", \"allMessagesTogether\", \"firstMessageOnly\", \"noMessages\"]);\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}\nclass VersionControl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"VersionControl\");\n this.outputBelow = getStringOption(attributes.outputBelow, [\"warn\", \"error\", \"update\"]);\n this.sourceAbove = getStringOption(attributes.sourceAbove, [\"warn\", \"error\"]);\n this.sourceBelow = getStringOption(attributes.sourceBelow, [\"update\", \"maintain\"]);\n }\n}\nclass ViewerPreferences extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"viewerPreferences\", 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}\nclass WebClient extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"webClient\", true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\nclass Whitespace extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"whitespace\", [\"preserve\", \"ltrim\", \"normalize\", \"rtrim\", \"trim\"]);\n }\n}\nclass Window extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"window\");\n }\n [$finalize]() {\n const pair = this[$content].trim().split(/\\s*,\\s*/, 2).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}\nclass Xdc extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdc\", true);\n this.uri = new XFAObjectArray();\n this.xsl = new XFAObjectArray();\n }\n}\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdp\", true);\n this.packets = null;\n }\n}\nclass Xsl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xsl\", true);\n this.debug = null;\n this.uri = null;\n }\n}\nclass Zpl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"zpl\", 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}\nclass ConfigNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConfigNamespace.hasOwnProperty(name)) {\n return ConfigNamespace[name](attributes);\n }\n return undefined;\n }\n static acrobat(attrs) {\n return new Acrobat(attrs);\n }\n static acrobat7(attrs) {\n return new Acrobat7(attrs);\n }\n static ADBE_JSConsole(attrs) {\n return new ADBE_JSConsole(attrs);\n }\n static ADBE_JSDebugger(attrs) {\n return new ADBE_JSDebugger(attrs);\n }\n static addSilentPrint(attrs) {\n return new AddSilentPrint(attrs);\n }\n static addViewerPreferences(attrs) {\n return new AddViewerPreferences(attrs);\n }\n static adjustData(attrs) {\n return new AdjustData(attrs);\n }\n static adobeExtensionLevel(attrs) {\n return new AdobeExtensionLevel(attrs);\n }\n static agent(attrs) {\n return new Agent(attrs);\n }\n static alwaysEmbed(attrs) {\n return new AlwaysEmbed(attrs);\n }\n static amd(attrs) {\n return new Amd(attrs);\n }\n static area(attrs) {\n return new config_Area(attrs);\n }\n static attributes(attrs) {\n return new Attributes(attrs);\n }\n static autoSave(attrs) {\n return new AutoSave(attrs);\n }\n static base(attrs) {\n return new Base(attrs);\n }\n static batchOutput(attrs) {\n return new BatchOutput(attrs);\n }\n static behaviorOverride(attrs) {\n return new BehaviorOverride(attrs);\n }\n static cache(attrs) {\n return new Cache(attrs);\n }\n static change(attrs) {\n return new Change(attrs);\n }\n static common(attrs) {\n return new Common(attrs);\n }\n static compress(attrs) {\n return new Compress(attrs);\n }\n static compressLogicalStructure(attrs) {\n return new CompressLogicalStructure(attrs);\n }\n static compressObjectStream(attrs) {\n return new CompressObjectStream(attrs);\n }\n static compression(attrs) {\n return new Compression(attrs);\n }\n static config(attrs) {\n return new Config(attrs);\n }\n static conformance(attrs) {\n return new Conformance(attrs);\n }\n static contentCopy(attrs) {\n return new ContentCopy(attrs);\n }\n static copies(attrs) {\n return new Copies(attrs);\n }\n static creator(attrs) {\n return new Creator(attrs);\n }\n static currentPage(attrs) {\n return new CurrentPage(attrs);\n }\n static data(attrs) {\n return new Data(attrs);\n }\n static debug(attrs) {\n return new Debug(attrs);\n }\n static defaultTypeface(attrs) {\n return new DefaultTypeface(attrs);\n }\n static destination(attrs) {\n return new Destination(attrs);\n }\n static documentAssembly(attrs) {\n return new DocumentAssembly(attrs);\n }\n static driver(attrs) {\n return new Driver(attrs);\n }\n static duplexOption(attrs) {\n return new DuplexOption(attrs);\n }\n static dynamicRender(attrs) {\n return new DynamicRender(attrs);\n }\n static embed(attrs) {\n return new Embed(attrs);\n }\n static encrypt(attrs) {\n return new config_Encrypt(attrs);\n }\n static encryption(attrs) {\n return new config_Encryption(attrs);\n }\n static encryptionLevel(attrs) {\n return new EncryptionLevel(attrs);\n }\n static enforce(attrs) {\n return new Enforce(attrs);\n }\n static equate(attrs) {\n return new Equate(attrs);\n }\n static equateRange(attrs) {\n return new EquateRange(attrs);\n }\n static exclude(attrs) {\n return new Exclude(attrs);\n }\n static excludeNS(attrs) {\n return new ExcludeNS(attrs);\n }\n static flipLabel(attrs) {\n return new FlipLabel(attrs);\n }\n static fontInfo(attrs) {\n return new config_FontInfo(attrs);\n }\n static formFieldFilling(attrs) {\n return new FormFieldFilling(attrs);\n }\n static groupParent(attrs) {\n return new GroupParent(attrs);\n }\n static ifEmpty(attrs) {\n return new IfEmpty(attrs);\n }\n static includeXDPContent(attrs) {\n return new IncludeXDPContent(attrs);\n }\n static incrementalLoad(attrs) {\n return new IncrementalLoad(attrs);\n }\n static incrementalMerge(attrs) {\n return new IncrementalMerge(attrs);\n }\n static interactive(attrs) {\n return new Interactive(attrs);\n }\n static jog(attrs) {\n return new Jog(attrs);\n }\n static labelPrinter(attrs) {\n return new LabelPrinter(attrs);\n }\n static layout(attrs) {\n return new Layout(attrs);\n }\n static level(attrs) {\n return new Level(attrs);\n }\n static linearized(attrs) {\n return new Linearized(attrs);\n }\n static locale(attrs) {\n return new Locale(attrs);\n }\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n static log(attrs) {\n return new Log(attrs);\n }\n static map(attrs) {\n return new MapElement(attrs);\n }\n static mediumInfo(attrs) {\n return new MediumInfo(attrs);\n }\n static message(attrs) {\n return new config_Message(attrs);\n }\n static messaging(attrs) {\n return new Messaging(attrs);\n }\n static mode(attrs) {\n return new Mode(attrs);\n }\n static modifyAnnots(attrs) {\n return new ModifyAnnots(attrs);\n }\n static msgId(attrs) {\n return new MsgId(attrs);\n }\n static nameAttr(attrs) {\n return new NameAttr(attrs);\n }\n static neverEmbed(attrs) {\n return new NeverEmbed(attrs);\n }\n static numberOfCopies(attrs) {\n return new NumberOfCopies(attrs);\n }\n static openAction(attrs) {\n return new OpenAction(attrs);\n }\n static output(attrs) {\n return new Output(attrs);\n }\n static outputBin(attrs) {\n return new OutputBin(attrs);\n }\n static outputXSL(attrs) {\n return new OutputXSL(attrs);\n }\n static overprint(attrs) {\n return new Overprint(attrs);\n }\n static packets(attrs) {\n return new Packets(attrs);\n }\n static pageOffset(attrs) {\n return new PageOffset(attrs);\n }\n static pageRange(attrs) {\n return new PageRange(attrs);\n }\n static pagination(attrs) {\n return new Pagination(attrs);\n }\n static paginationOverride(attrs) {\n return new PaginationOverride(attrs);\n }\n static part(attrs) {\n return new Part(attrs);\n }\n static pcl(attrs) {\n return new Pcl(attrs);\n }\n static pdf(attrs) {\n return new Pdf(attrs);\n }\n static pdfa(attrs) {\n return new Pdfa(attrs);\n }\n static permissions(attrs) {\n return new Permissions(attrs);\n }\n static pickTrayByPDFSize(attrs) {\n return new PickTrayByPDFSize(attrs);\n }\n static picture(attrs) {\n return new config_Picture(attrs);\n }\n static plaintextMetadata(attrs) {\n return new PlaintextMetadata(attrs);\n }\n static presence(attrs) {\n return new Presence(attrs);\n }\n static present(attrs) {\n return new Present(attrs);\n }\n static print(attrs) {\n return new Print(attrs);\n }\n static printHighQuality(attrs) {\n return new PrintHighQuality(attrs);\n }\n static printScaling(attrs) {\n return new PrintScaling(attrs);\n }\n static printerName(attrs) {\n return new PrinterName(attrs);\n }\n static producer(attrs) {\n return new Producer(attrs);\n }\n static ps(attrs) {\n return new Ps(attrs);\n }\n static range(attrs) {\n return new Range(attrs);\n }\n static record(attrs) {\n return new Record(attrs);\n }\n static relevant(attrs) {\n return new Relevant(attrs);\n }\n static rename(attrs) {\n return new Rename(attrs);\n }\n static renderPolicy(attrs) {\n return new RenderPolicy(attrs);\n }\n static runScripts(attrs) {\n return new RunScripts(attrs);\n }\n static script(attrs) {\n return new config_Script(attrs);\n }\n static scriptModel(attrs) {\n return new ScriptModel(attrs);\n }\n static severity(attrs) {\n return new Severity(attrs);\n }\n static silentPrint(attrs) {\n return new SilentPrint(attrs);\n }\n static staple(attrs) {\n return new Staple(attrs);\n }\n static startNode(attrs) {\n return new StartNode(attrs);\n }\n static startPage(attrs) {\n return new StartPage(attrs);\n }\n static submitFormat(attrs) {\n return new SubmitFormat(attrs);\n }\n static submitUrl(attrs) {\n return new SubmitUrl(attrs);\n }\n static subsetBelow(attrs) {\n return new SubsetBelow(attrs);\n }\n static suppressBanner(attrs) {\n return new SuppressBanner(attrs);\n }\n static tagged(attrs) {\n return new Tagged(attrs);\n }\n static template(attrs) {\n return new config_Template(attrs);\n }\n static templateCache(attrs) {\n return new TemplateCache(attrs);\n }\n static threshold(attrs) {\n return new Threshold(attrs);\n }\n static to(attrs) {\n return new To(attrs);\n }\n static trace(attrs) {\n return new Trace(attrs);\n }\n static transform(attrs) {\n return new Transform(attrs);\n }\n static type(attrs) {\n return new Type(attrs);\n }\n static uri(attrs) {\n return new Uri(attrs);\n }\n static validate(attrs) {\n return new config_Validate(attrs);\n }\n static validateApprovalSignatures(attrs) {\n return new ValidateApprovalSignatures(attrs);\n }\n static validationMessaging(attrs) {\n return new ValidationMessaging(attrs);\n }\n static version(attrs) {\n return new Version(attrs);\n }\n static versionControl(attrs) {\n return new VersionControl(attrs);\n }\n static viewerPreferences(attrs) {\n return new ViewerPreferences(attrs);\n }\n static webClient(attrs) {\n return new WebClient(attrs);\n }\n static whitespace(attrs) {\n return new Whitespace(attrs);\n }\n static window(attrs) {\n return new Window(attrs);\n }\n static xdc(attrs) {\n return new Xdc(attrs);\n }\n static xdp(attrs) {\n return new Xdp(attrs);\n }\n static xsl(attrs) {\n return new Xsl(attrs);\n }\n static zpl(attrs) {\n return new Zpl(attrs);\n }\n}\n\n;// ./src/core/xfa/connection_set.js\n\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\nclass ConnectionSet extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"connectionSet\", true);\n this.wsdlConnection = new XFAObjectArray();\n this.xmlConnection = new XFAObjectArray();\n this.xsdConnection = new XFAObjectArray();\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}\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}\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}\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}\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}\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}\nclass connection_set_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}\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}\nclass WsdlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlConnection\", 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}\nclass XmlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xmlConnection\", true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.uri = null;\n }\n}\nclass XsdConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xsdConnection\", true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.rootElement = null;\n this.uri = null;\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 static connectionSet(attrs) {\n return new ConnectionSet(attrs);\n }\n static effectiveInputPolicy(attrs) {\n return new EffectiveInputPolicy(attrs);\n }\n static effectiveOutputPolicy(attrs) {\n return new EffectiveOutputPolicy(attrs);\n }\n static operation(attrs) {\n return new Operation(attrs);\n }\n static rootElement(attrs) {\n return new RootElement(attrs);\n }\n static soapAction(attrs) {\n return new SoapAction(attrs);\n }\n static soapAddress(attrs) {\n return new SoapAddress(attrs);\n }\n static uri(attrs) {\n return new connection_set_Uri(attrs);\n }\n static wsdlAddress(attrs) {\n return new WsdlAddress(attrs);\n }\n static wsdlConnection(attrs) {\n return new WsdlConnection(attrs);\n }\n static xmlConnection(attrs) {\n return new XmlConnection(attrs);\n }\n static xsdConnection(attrs) {\n return new XsdConnection(attrs);\n }\n}\n\n;// ./src/core/xfa/datasets.js\n\n\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\nclass datasets_Data extends XmlObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"data\", attributes);\n }\n [$isNsAgnostic]() {\n return true;\n }\n}\nclass Datasets extends XFAObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"datasets\", true);\n this.data = null;\n this.Signature = null;\n }\n [$onChild](child) {\n const name = child[$nodeName];\n if (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID || name === \"Signature\" && child[$namespaceId] === NamespaceIds.signature.id) {\n this[name] = child;\n }\n this[$appendChild](child);\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 static datasets(attributes) {\n return new Datasets(attributes);\n }\n static data(attributes) {\n return new datasets_Data(attributes);\n }\n}\n\n;// ./src/core/xfa/locale_set.js\n\n\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\nclass CalendarSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"calendarSymbols\", 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}\nclass CurrencySymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbol\");\n this.name = getStringOption(attributes.name, [\"symbol\", \"isoname\", \"decimal\"]);\n }\n}\nclass CurrencySymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbols\", true);\n this.currencySymbol = new XFAObjectArray(3);\n }\n}\nclass DatePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePattern\");\n this.name = getStringOption(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n }\n}\nclass DatePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePatterns\", true);\n this.datePattern = new XFAObjectArray(4);\n }\n}\nclass DateTimeSymbols extends ContentObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n }\n}\nclass Day extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"day\");\n }\n}\nclass DayNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dayNames\", 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}\nclass Era extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"era\");\n }\n}\nclass EraNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"eraNames\", true);\n this.era = new XFAObjectArray(2);\n }\n}\nclass locale_set_Locale extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"locale\", 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}\nclass locale_set_LocaleSet extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"localeSet\", true);\n this.locale = new XFAObjectArray();\n }\n}\nclass Meridiem extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiem\");\n }\n}\nclass MeridiemNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiemNames\", true);\n this.meridiem = new XFAObjectArray(2);\n }\n}\nclass Month extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"month\");\n }\n}\nclass MonthNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"monthNames\", 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}\nclass NumberPattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPattern\");\n this.name = getStringOption(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n }\n}\nclass NumberPatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPatterns\", true);\n this.numberPattern = new XFAObjectArray(4);\n }\n}\nclass NumberSymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbol\");\n this.name = getStringOption(attributes.name, [\"decimal\", \"grouping\", \"percent\", \"minus\", \"zero\"]);\n }\n}\nclass NumberSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbols\", true);\n this.numberSymbol = new XFAObjectArray(5);\n }\n}\nclass TimePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePattern\");\n this.name = getStringOption(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n }\n}\nclass TimePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePatterns\", true);\n this.timePattern = new XFAObjectArray(4);\n }\n}\nclass TypeFace extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFace\", true);\n this.name = attributes.name | \"\";\n }\n}\nclass TypeFaces extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFaces\", true);\n this.typeFace = new XFAObjectArray();\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 static calendarSymbols(attrs) {\n return new CalendarSymbols(attrs);\n }\n static currencySymbol(attrs) {\n return new CurrencySymbol(attrs);\n }\n static currencySymbols(attrs) {\n return new CurrencySymbols(attrs);\n }\n static datePattern(attrs) {\n return new DatePattern(attrs);\n }\n static datePatterns(attrs) {\n return new DatePatterns(attrs);\n }\n static dateTimeSymbols(attrs) {\n return new DateTimeSymbols(attrs);\n }\n static day(attrs) {\n return new Day(attrs);\n }\n static dayNames(attrs) {\n return new DayNames(attrs);\n }\n static era(attrs) {\n return new Era(attrs);\n }\n static eraNames(attrs) {\n return new EraNames(attrs);\n }\n static locale(attrs) {\n return new locale_set_Locale(attrs);\n }\n static localeSet(attrs) {\n return new locale_set_LocaleSet(attrs);\n }\n static meridiem(attrs) {\n return new Meridiem(attrs);\n }\n static meridiemNames(attrs) {\n return new MeridiemNames(attrs);\n }\n static month(attrs) {\n return new Month(attrs);\n }\n static monthNames(attrs) {\n return new MonthNames(attrs);\n }\n static numberPattern(attrs) {\n return new NumberPattern(attrs);\n }\n static numberPatterns(attrs) {\n return new NumberPatterns(attrs);\n }\n static numberSymbol(attrs) {\n return new NumberSymbol(attrs);\n }\n static numberSymbols(attrs) {\n return new NumberSymbols(attrs);\n }\n static timePattern(attrs) {\n return new TimePattern(attrs);\n }\n static timePatterns(attrs) {\n return new TimePatterns(attrs);\n }\n static typeFace(attrs) {\n return new TypeFace(attrs);\n }\n static typeFaces(attrs) {\n return new TypeFaces(attrs);\n }\n}\n\n;// ./src/core/xfa/signature.js\n\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\nclass signature_Signature extends XFAObject {\n constructor(attributes) {\n super(SIGNATURE_NS_ID, \"signature\", true);\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 static signature(attributes) {\n return new signature_Signature(attributes);\n }\n}\n\n;// ./src/core/xfa/stylesheet.js\n\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\nclass Stylesheet extends XFAObject {\n constructor(attributes) {\n super(STYLESHEET_NS_ID, \"stylesheet\", true);\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 static stylesheet(attributes) {\n return new Stylesheet(attributes);\n }\n}\n\n;// ./src/core/xfa/xdp.js\n\n\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\nclass xdp_Xdp extends XFAObject {\n constructor(attributes) {\n super(XDP_NS_ID, \"xdp\", 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 [$onChildCheck](child) {\n const ns = NamespaceIds[child[$nodeName]];\n return ns && child[$namespaceId] === ns.id;\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 static xdp(attributes) {\n return new xdp_Xdp(attributes);\n }\n}\n\n;// ./src/core/xfa/xhtml.js\n\n\n\n\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\nconst VALID_STYLES = new Set([\"color\", \"font\", \"font-family\", \"font-size\", \"font-stretch\", \"font-style\", \"font-weight\", \"margin\", \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"letter-spacing\", \"line-height\", \"orphans\", \"page-break-after\", \"page-break-before\", \"page-break-inside\", \"tab-interval\", \"tab-stop\", \"text-align\", \"text-decoration\", \"text-indent\", \"vertical-align\", \"widows\", \"kerning-mode\", \"xfa-font-horizontal-scale\", \"xfa-font-vertical-scale\", \"xfa-spacerun\", \"xfa-tab-stops\"]);\nconst StyleMapping = new Map([[\"page-break-after\", \"breakAfter\"], [\"page-break-before\", \"breakBefore\"], [\"page-break-inside\", \"breakInside\"], [\"kerning-mode\", value => value === \"none\" ? \"none\" : \"normal\"], [\"xfa-font-horizontal-scale\", value => `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], [\"xfa-font-vertical-scale\", value => `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], [\"xfa-spacerun\", \"\"], [\"xfa-tab-stops\", \"\"], [\"font-size\", (value, original) => {\n value = original.fontSize = Math.abs(getMeasurement(value));\n return measureToString(0.99 * value);\n}], [\"letter-spacing\", value => measureToString(getMeasurement(value))], [\"line-height\", value => measureToString(getMeasurement(value))], [\"margin\", value => measureToString(getMeasurement(value))], [\"margin-bottom\", value => measureToString(getMeasurement(value))], [\"margin-left\", value => measureToString(getMeasurement(value))], [\"margin-right\", value => measureToString(getMeasurement(value))], [\"margin-top\", value => measureToString(getMeasurement(value))], [\"text-indent\", value => measureToString(getMeasurement(value))], [\"font-family\", value => value], [\"vertical-align\", value => measureToString(getMeasurement(value))]]);\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\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 newValue = typeof mapping === \"string\" ? mapping : mapping(value, original);\n }\n if (key.endsWith(\"scale\")) {\n style.transform = style.transform ? `${style[key]} ${newValue}` : newValue;\n } else {\n style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] = newValue;\n }\n }\n if (style.fontFamily) {\n setFontFamily({\n typeface: style.fontFamily,\n weight: style.fontWeight || \"normal\",\n posture: style.fontStyle || \"normal\",\n size: original.fontSize || 0\n }, node, node[$globalData].fontFinder, style);\n }\n if (richText && style.verticalAlign && style.verticalAlign !== \"0px\" && style.fontSize) {\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(Math.sign(getMeasurement(style.verticalAlign)) * fontSize * VERTICAL_FACTOR);\n }\n if (richText && style.fontSize) {\n style.fontSize = `calc(${style.fontSize} * var(--scale-factor))`;\n }\n fixTextIndent(style);\n return style;\n}\nfunction checkStyle(node) {\n if (!node.style) {\n return \"\";\n }\n return node.style.trim().split(/\\s*;\\s*/).filter(s => !!s).map(s => s.split(/\\s*:\\s*/, 2)).filter(([key, value]) => {\n if (key === \"font-family\") {\n node[$globalData].usedTypefaces.add(value);\n }\n return VALID_STYLES.has(key);\n }).map(kv => kv.join(\":\")).join(\";\");\n}\nconst NoWhites = new Set([\"body\", \"html\"]);\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 [$clean](builder) {\n super[$clean](builder);\n this.style = checkStyle(this);\n }\n [$acceptWhitespace]() {\n return !NoWhites.has(this[$nodeName]);\n }\n [$onText](str, richText = false) {\n if (!richText) {\n str = str.replaceAll(crlfRegExp, \"\");\n if (!this.style.includes(\"xfa-spacerun:yes\")) {\n str = str.replaceAll(spacesRegExp, \" \");\n }\n } else {\n this[$richText] = true;\n }\n if (str) {\n this[$content] += str;\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.split(\";\").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 = margin.bottom = margin.left = margin.right = 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 measure.pushData(xfaFont, margin, lineHeight);\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 if (mustPop) {\n measure.popFont();\n }\n }\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children\n };\n this[$childrenToHTML]({});\n if (children.length === 0 && !this[$content]) {\n return HTMLResult.EMPTY;\n }\n let value;\n if (this[$richText]) {\n value = this[$content] ? this[$content].replaceAll(crlfForRichTextRegExp, \"\\n\") : undefined;\n } else {\n value = this[$content] || undefined;\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}\nclass A extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"a\");\n this.href = fixURL(attributes.href) || \"\";\n }\n}\nclass B extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"b\");\n }\n [$pushGlyphs](measure) {\n measure.pushFont({\n weight: \"bold\"\n });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\nclass Body extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"body\");\n }\n [$toHTML](availableSpace) {\n const res = super[$toHTML](availableSpace);\n const {\n html\n } = res;\n if (!html) {\n return HTMLResult.EMPTY;\n }\n html.name = \"div\";\n html.attributes.class = [\"xfaRich\"];\n return res;\n }\n}\nclass Br extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"br\");\n }\n [$text]() {\n return \"\\n\";\n }\n [$pushGlyphs](measure) {\n measure.addString(\"\\n\");\n }\n [$toHTML](availableSpace) {\n return HTMLResult.success({\n name: \"br\"\n });\n }\n}\nclass Html extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"html\");\n }\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children\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 if (children.length === 1) {\n const child = children[0];\n if (child.attributes?.class.includes(\"xfaRich\")) {\n return HTMLResult.success(child);\n }\n }\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {}\n },\n children\n });\n }\n}\nclass I extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"i\");\n }\n [$pushGlyphs](measure) {\n measure.pushFont({\n posture: \"italic\"\n });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\nclass Li extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"li\");\n }\n}\nclass Ol extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ol\");\n }\n}\nclass P extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"p\");\n }\n [$pushGlyphs](measure) {\n super[$pushGlyphs](measure, false);\n measure.addString(\"\\n\");\n measure.addPara();\n measure.popFont();\n }\n [$text]() {\n const siblings = this[$getParent]()[$getChildren]();\n if (siblings.at(-1) === this) {\n return super[$text]();\n }\n return super[$text]() + \"\\n\";\n }\n}\nclass Span extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"span\");\n }\n}\nclass Sub extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sub\");\n }\n}\nclass Sup extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sup\");\n }\n}\nclass Ul extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ul\");\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 static a(attributes) {\n return new A(attributes);\n }\n static b(attributes) {\n return new B(attributes);\n }\n static body(attributes) {\n return new Body(attributes);\n }\n static br(attributes) {\n return new Br(attributes);\n }\n static html(attributes) {\n return new Html(attributes);\n }\n static i(attributes) {\n return new I(attributes);\n }\n static li(attributes) {\n return new Li(attributes);\n }\n static ol(attributes) {\n return new Ol(attributes);\n }\n static p(attributes) {\n return new P(attributes);\n }\n static span(attributes) {\n return new Span(attributes);\n }\n static sub(attributes) {\n return new Sub(attributes);\n }\n static sup(attributes) {\n return new Sup(attributes);\n }\n static ul(attributes) {\n return new Ul(attributes);\n }\n}\n\n;// ./src/core/xfa/setup.js\n\n\n\n\n\n\n\n\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\n;// ./src/core/xfa/unknown.js\n\n\nclass UnknownNamespace {\n constructor(nsId) {\n this.namespaceId = nsId;\n }\n [$buildXFAObject](name, attributes) {\n return new XmlObject(this.namespaceId, name, attributes);\n }\n}\n\n;// ./src/core/xfa/builder.js\n\n\n\n\n\n\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 [$onChild](child) {\n this.element = child;\n return true;\n }\n [$finalize]() {\n super[$finalize]();\n if (this.element.template instanceof Template) {\n this[$ids].set($root, this.element);\n this.element.template[$resolvePrototypes](this[$ids]);\n this.element.template[$ids] = this[$ids];\n }\n }\n}\nclass Empty extends XFAObject {\n constructor() {\n super(-1, \"\", Object.create(null));\n }\n [$onChild](_) {\n return false;\n }\n}\nclass Builder {\n constructor(rootNameSpace = null) {\n this._namespaceStack = [];\n this._nsAgnosticLevel = 0;\n this._namespacePrefixes = new Map();\n this._namespaces = new Map();\n this._nextNsId = Math.max(...Object.values(NamespaceIds).map(({\n id\n }) => id));\n this._currentNamespace = rootNameSpace || new UnknownNamespace(++this._nextNsId);\n }\n buildRoot(ids) {\n return new Root(ids);\n }\n build({\n nsPrefix,\n name,\n attributes,\n namespace,\n prefixes\n }) {\n const hasNamespaceDef = namespace !== null;\n if (hasNamespaceDef) {\n this._namespaceStack.push(this._currentNamespace);\n this._currentNamespace = this._searchNamespace(namespace);\n }\n if (prefixes) {\n this._addNamespacePrefix(prefixes);\n }\n if (attributes.hasOwnProperty($nsAttributes)) {\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 = {\n xfa: attrs\n };\n break;\n }\n }\n if (xfaAttrs) {\n attributes[$nsAttributes] = xfaAttrs;\n } else {\n delete attributes[$nsAttributes];\n }\n }\n const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n const node = namespaceToUse?.[$buildXFAObject](name, attributes) || new Empty();\n if (node[$isNsAgnostic]()) {\n this._nsAgnosticLevel++;\n }\n if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n node[$cleanup] = {\n hasNamespace: hasNamespaceDef,\n prefixes,\n nsAgnostic: node[$isNsAgnostic]()\n };\n }\n return node;\n }\n isNsAgnostic() {\n return this._nsAgnosticLevel > 0;\n }\n _searchNamespace(nsName) {\n let ns = this._namespaces.get(nsName);\n if (ns) {\n return ns;\n }\n for (const [name, {\n check\n }] 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 break;\n }\n }\n ns = new UnknownNamespace(++this._nextNsId);\n this._namespaces.set(nsName, ns);\n return ns;\n }\n _addNamespacePrefix(prefixes) {\n for (const {\n prefix,\n value\n } 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 _getNamespaceToUse(prefix) {\n if (!prefix) {\n return this._currentNamespace;\n }\n const prefixStack = this._namespacePrefixes.get(prefix);\n if (prefixStack?.length > 0) {\n return prefixStack.at(-1);\n }\n warn(`Unknown namespace prefix: ${prefix}.`);\n return null;\n }\n clean(data) {\n const {\n hasNamespace,\n prefixes,\n nsAgnostic\n } = data;\n if (hasNamespace) {\n this._currentNamespace = this._namespaceStack.pop();\n }\n if (prefixes) {\n prefixes.forEach(({\n prefix\n }) => {\n this._namespacePrefixes.get(prefix).pop();\n });\n }\n if (nsAgnostic) {\n this._nsAgnosticLevel--;\n }\n }\n}\n\n;// ./src/core/xfa/parser.js\n\n\n\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 parse(data) {\n this.parseXml(data);\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n this._current[$finalize]();\n return this._current.element;\n }\n onText(text) {\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 if (this._whiteRegex.test(text)) {\n return;\n }\n this._current[$onText](text.trim());\n }\n onCdata(text) {\n this._current[$onText](text);\n }\n _mkAttributes(attributes, tagName) {\n let namespace = null;\n let prefixes = null;\n const attributeObj = Object.create({});\n for (const {\n name,\n value\n } 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({\n prefix,\n value\n });\n } else {\n const i = name.indexOf(\":\");\n if (i === -1) {\n attributeObj[name] = value;\n } else {\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 const attrs = nsAttrs[ns] ||= Object.create(null);\n attrs[attrName] = value;\n }\n }\n }\n return [namespace, prefixes, attributeObj];\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 onBeginElement(tagName, attributes, isEmpty) {\n const [namespace, prefixes, attributesObj] = this._mkAttributes(attributes, tagName);\n const [name, nsPrefix] = this._getNameAndPrefix(tagName, this._builder.isNsAgnostic());\n const node = this._builder.build({\n nsPrefix,\n name,\n attributes: attributesObj,\n namespace,\n prefixes\n });\n node[$globalData] = this._globalData;\n if (isEmpty) {\n node[$finalize]();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n return;\n }\n this._stack.push(this._current);\n this._current = node;\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 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 onError(code) {\n this._errorCode = code;\n }\n}\n\n;// ./src/core/xfa/factory.js\n\n\n\n\n\n\n\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 isValid() {\n return this.root && this.form;\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 async _createPages() {\n try {\n this.pages = await this._createPagesHelper();\n this.dims = this.pages.children.map(c => {\n const {\n width,\n height\n } = 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 getBoundingBox(pageIndex) {\n return this.dims[pageIndex];\n }\n async getNumPages() {\n if (!this.pages) {\n await this._createPages();\n }\n return this.dims.length;\n }\n setImages(images) {\n this.form[$globalData].images = images;\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 if (missingFonts.length > 0) {\n return missingFonts;\n }\n return null;\n }\n appendFonts(fonts, reallyMissingFonts) {\n this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\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 serializeData(storage) {\n return this.dataHandler.serialize(storage);\n }\n static _createDocument(data) {\n if (!data[\"/xdp:xdp\"]) {\n return data[\"xdp:xdp\"];\n }\n return Object.values(data).join(\"\");\n }\n static getRichTextAsHtml(rc) {\n if (!rc || typeof rc !== \"string\") {\n return null;\n }\n try {\n let root = new XFAParser(XhtmlNamespace, true).parse(rc);\n if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n const newRoot = XhtmlNamespace.body({});\n newRoot[$appendChild](root);\n root = newRoot;\n }\n const result = root[$toHTML]();\n if (!result.success) {\n return null;\n }\n const {\n html\n } = result;\n const {\n attributes\n } = html;\n if (attributes) {\n if (attributes.class) {\n attributes.class = attributes.class.filter(attr => !attr.startsWith(\"xfa\"));\n }\n attributes.dir = \"auto\";\n }\n return {\n html,\n str: root[$text]()\n };\n } catch (e) {\n warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n }\n return null;\n }\n}\n\n;// ./src/core/annotation.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass AnnotationFactory {\n static createGlobals(pdfManager) {\n return Promise.all([pdfManager.ensureCatalog(\"acroForm\"), pdfManager.ensureDoc(\"xfaDatasets\"), pdfManager.ensureCatalog(\"structTreeRoot\"), pdfManager.ensureCatalog(\"baseUrl\"), pdfManager.ensureCatalog(\"attachments\")]).then(([acroForm, xfaDatasets, structTreeRoot, baseUrl, attachments]) => {\n return {\n pdfManager,\n acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n xfaDatasets,\n structTreeRoot,\n baseUrl,\n attachments\n };\n }, reason => {\n warn(`createGlobals: \"${reason}\".`);\n return null;\n });\n }\n static async create(xref, ref, annotationGlobals, idFactory, collectFields, orphanFields, pageRef) {\n const pageIndex = collectFields ? await this._getPageIndex(xref, ref, annotationGlobals.pdfManager) : null;\n return annotationGlobals.pdfManager.ensure(this, \"_create\", [xref, ref, annotationGlobals, idFactory, collectFields, orphanFields, pageIndex, pageRef]);\n }\n static _create(xref, ref, annotationGlobals, idFactory, collectFields = false, orphanFields = null, pageIndex = null, pageRef = null) {\n const dict = xref.fetchIfRef(ref);\n if (!(dict instanceof Dict)) {\n return undefined;\n }\n const {\n acroForm,\n pdfManager\n } = annotationGlobals;\n const id = ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\n let subtype = dict.get(\"Subtype\");\n subtype = subtype instanceof Name ? subtype.name : null;\n const parameters = {\n xref,\n ref,\n dict,\n subtype,\n id,\n annotationGlobals,\n collectFields,\n orphanFields,\n needAppearances: !collectFields && acroForm.get(\"NeedAppearances\") === true,\n pageIndex,\n evaluatorOptions: pdfManager.evaluatorOptions,\n pageRef\n };\n switch (subtype) {\n case \"Link\":\n return new LinkAnnotation(parameters);\n case \"Text\":\n return new TextAnnotation(parameters);\n case \"Widget\":\n let fieldType = getInheritableProperty({\n dict,\n key: \"FT\"\n });\n fieldType = fieldType instanceof Name ? fieldType.name : null;\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(`Unimplemented widget field type \"${fieldType}\", ` + \"falling back to base field type.\");\n return new WidgetAnnotation(parameters);\n case \"Popup\":\n return new PopupAnnotation(parameters);\n case \"FreeText\":\n return new FreeTextAnnotation(parameters);\n case \"Line\":\n return new LineAnnotation(parameters);\n case \"Square\":\n return new SquareAnnotation(parameters);\n case \"Circle\":\n return new CircleAnnotation(parameters);\n case \"PolyLine\":\n return new PolylineAnnotation(parameters);\n case \"Polygon\":\n return new PolygonAnnotation(parameters);\n case \"Caret\":\n return new CaretAnnotation(parameters);\n case \"Ink\":\n return new InkAnnotation(parameters);\n case \"Highlight\":\n return new HighlightAnnotation(parameters);\n case \"Underline\":\n return new UnderlineAnnotation(parameters);\n case \"Squiggly\":\n return new SquigglyAnnotation(parameters);\n case \"StrikeOut\":\n return new StrikeOutAnnotation(parameters);\n case \"Stamp\":\n return new StampAnnotation(parameters);\n case \"FileAttachment\":\n return new FileAttachmentAnnotation(parameters);\n default:\n if (!collectFields) {\n if (!subtype) {\n warn(\"Annotation is missing the required /Subtype.\");\n } else {\n warn(`Unimplemented annotation type \"${subtype}\", ` + \"falling back to base annotation.\");\n }\n }\n return new Annotation(parameters);\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 try {\n const pageIndex = await pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n return pageIndex;\n } catch (ex) {\n info(`_getPageIndex -- not a valid page reference: \"${ex}\".`);\n }\n }\n if (annotDict.has(\"Kids\")) {\n return -1;\n }\n const numPages = await pdfManager.ensureDoc(\"numPages\");\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n const page = await pdfManager.getPage(pageIndex);\n const annotations = await pdfManager.ensure(page, \"annotations\");\n for (const annotRef of annotations) {\n if (annotRef instanceof Ref && isRefsEqual(annotRef, ref)) {\n return pageIndex;\n }\n }\n }\n } catch (ex) {\n warn(`_getPageIndex: \"${ex}\".`);\n }\n return -1;\n }\n static generateImages(annotations, xref, isOffscreenCanvasSupported) {\n if (!isOffscreenCanvasSupported) {\n warn(\"generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images.\");\n return null;\n }\n let imagePromises;\n for (const {\n bitmapId,\n bitmap\n } of annotations) {\n if (!bitmap) {\n continue;\n }\n imagePromises ||= new Map();\n imagePromises.set(bitmapId, StampAnnotation.createImage(bitmap, xref));\n }\n return imagePromises;\n }\n static async saveNewAnnotations(evaluator, task, annotations, imagePromises, changes) {\n const xref = evaluator.xref;\n let baseFontRef;\n const promises = [];\n const {\n isOffscreenCanvasSupported\n } = evaluator.options;\n for (const annotation of annotations) {\n if (annotation.deleted) {\n continue;\n }\n switch (annotation.annotationType) {\n case AnnotationEditorType.FREETEXT:\n if (!baseFontRef) {\n const baseFont = new Dict(xref);\n baseFont.set(\"BaseFont\", Name.get(\"Helvetica\"));\n baseFont.set(\"Type\", Name.get(\"Font\"));\n baseFont.set(\"Subtype\", Name.get(\"Type1\"));\n baseFont.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n baseFontRef = xref.getNewTemporaryRef();\n changes.put(baseFontRef, {\n data: baseFont\n });\n }\n promises.push(FreeTextAnnotation.createNewAnnotation(xref, annotation, changes, {\n evaluator,\n task,\n baseFontRef\n }));\n break;\n case AnnotationEditorType.HIGHLIGHT:\n if (annotation.quadPoints) {\n promises.push(HighlightAnnotation.createNewAnnotation(xref, annotation, changes));\n } else {\n promises.push(InkAnnotation.createNewAnnotation(xref, annotation, changes));\n }\n break;\n case AnnotationEditorType.INK:\n promises.push(InkAnnotation.createNewAnnotation(xref, annotation, changes));\n break;\n case AnnotationEditorType.STAMP:\n const image = isOffscreenCanvasSupported ? await imagePromises?.get(annotation.bitmapId) : null;\n if (image?.imageStream) {\n const {\n imageStream,\n smaskStream\n } = image;\n if (smaskStream) {\n const smaskRef = xref.getNewTemporaryRef();\n changes.put(smaskRef, {\n data: smaskStream\n });\n imageStream.dict.set(\"SMask\", smaskRef);\n }\n const imageRef = image.imageRef = xref.getNewTemporaryRef();\n changes.put(imageRef, {\n data: imageStream\n });\n image.imageStream = image.smaskStream = null;\n }\n promises.push(StampAnnotation.createNewAnnotation(xref, annotation, changes, {\n image\n }));\n break;\n }\n }\n return {\n annotations: await Promise.all(promises)\n };\n }\n static async printNewAnnotations(annotationGlobals, evaluator, task, annotations, imagePromises) {\n if (!annotations) {\n return null;\n }\n const {\n options,\n xref\n } = evaluator;\n const promises = [];\n for (const annotation of annotations) {\n if (annotation.deleted) {\n continue;\n }\n switch (annotation.annotationType) {\n case AnnotationEditorType.FREETEXT:\n promises.push(FreeTextAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluator,\n task,\n evaluatorOptions: options\n }));\n break;\n case AnnotationEditorType.HIGHLIGHT:\n if (annotation.quadPoints) {\n promises.push(HighlightAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluatorOptions: options\n }));\n } else {\n promises.push(InkAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluatorOptions: options\n }));\n }\n break;\n case AnnotationEditorType.INK:\n promises.push(InkAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n evaluatorOptions: options\n }));\n break;\n case AnnotationEditorType.STAMP:\n const image = options.isOffscreenCanvasSupported ? await imagePromises?.get(annotation.bitmapId) : null;\n if (image?.imageStream) {\n const {\n imageStream,\n smaskStream\n } = image;\n if (smaskStream) {\n imageStream.dict.set(\"SMask\", smaskStream);\n }\n image.imageRef = new JpegStream(imageStream, imageStream.length);\n image.imageStream = image.smaskStream = null;\n }\n promises.push(StampAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n image,\n evaluatorOptions: options\n }));\n break;\n }\n }\n return Promise.all(promises);\n }\n}\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n const rgbColor = defaultColor || new Uint8ClampedArray(3);\n switch (color.length) {\n case 0:\n return null;\n case 1:\n ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n case 3:\n ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n case 4:\n ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n default:\n return defaultColor;\n }\n}\nfunction getPdfColorArray(color) {\n return Array.from(color, c => c / 255);\n}\nfunction getQuadPoints(dict, rect) {\n const quadPoints = dict.getArray(\"QuadPoints\");\n if (!isNumberArray(quadPoints, null) || quadPoints.length === 0 || quadPoints.length % 8 > 0) {\n return null;\n }\n const newQuadPoints = new Float32Array(quadPoints.length);\n for (let i = 0, ii = quadPoints.length; i < ii; i += 8) {\n const [x1, y1, x2, y2, x3, y3, x4, y4] = quadPoints.slice(i, i + 8);\n const minX = Math.min(x1, x2, x3, x4);\n const maxX = Math.max(x1, x2, x3, x4);\n const minY = Math.min(y1, y2, y3, y4);\n const maxY = Math.max(y1, y2, y3, y4);\n if (rect !== null && (minX < rect[0] || maxX > rect[2] || minY < rect[1] || maxY > rect[3])) {\n return null;\n }\n newQuadPoints.set([minX, maxY, maxX, maxY, minX, minY, maxX, minY], i);\n }\n return newQuadPoints;\n}\nfunction getTransformMatrix(rect, bbox, matrix) {\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(bbox, matrix);\n if (minX === maxX || minY === maxY) {\n return [1, 0, 0, 1, rect[0], rect[1]];\n }\n const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];\n}\nclass Annotation {\n constructor(params) {\n const {\n dict,\n xref,\n annotationGlobals,\n ref,\n orphanFields\n } = params;\n const parentRef = orphanFields?.get(ref);\n if (parentRef) {\n dict.set(\"Parent\", parentRef);\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.setOptionalContent(dict);\n const MK = dict.get(\"MK\");\n this.setBorderAndBackgroundColors(MK);\n this.setRotation(MK, dict);\n this.ref = params.ref instanceof Ref ? params.ref : null;\n this._streams = [];\n if (this.appearance) {\n this._streams.push(this.appearance);\n }\n const isLocked = !!(this.flags & AnnotationFlag.LOCKED);\n const isContentLocked = !!(this.flags & AnnotationFlag.LOCKEDCONTENTS);\n this.data = {\n annotationFlags: this.flags,\n borderStyle: this.borderStyle,\n color: this.color,\n backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n rotation: this.rotation,\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 noRotate: !!(this.flags & AnnotationFlag.NOROTATE),\n noHTML: isLocked && isContentLocked,\n isEditable: false,\n structParent: -1\n };\n if (annotationGlobals.structTreeRoot) {\n let structParent = dict.get(\"StructParent\");\n this.data.structParent = structParent = Number.isInteger(structParent) && structParent >= 0 ? structParent : -1;\n annotationGlobals.structTreeRoot.addAnnotationIdToPage(params.pageRef, structParent);\n }\n if (params.collectFields) {\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 this.data.actions = collectActions(xref, dict, AnnotationActionEventType);\n this.data.fieldName = this._constructFieldName(dict);\n this.data.pageIndex = params.pageIndex;\n }\n const it = dict.get(\"IT\");\n if (it instanceof Name) {\n this.data.it = it.name;\n }\n this._isOffscreenCanvasSupported = params.evaluatorOptions.isOffscreenCanvasSupported;\n this._fallbackFontDict = null;\n this._needAppearances = false;\n }\n _hasFlag(flags, flag) {\n return !!(flags & flag);\n }\n _buildFlags(noView, noPrint) {\n let {\n flags\n } = this;\n if (noView === undefined) {\n if (noPrint === undefined) {\n return undefined;\n }\n if (noPrint) {\n return flags & ~AnnotationFlag.PRINT;\n }\n return flags & ~AnnotationFlag.HIDDEN | AnnotationFlag.PRINT;\n }\n if (noView) {\n flags |= AnnotationFlag.PRINT;\n if (noPrint) {\n return flags & ~AnnotationFlag.NOVIEW | AnnotationFlag.HIDDEN;\n }\n return flags & ~AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW;\n }\n flags &= ~(AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW);\n if (noPrint) {\n return flags & ~AnnotationFlag.PRINT;\n }\n return flags | AnnotationFlag.PRINT;\n }\n _isViewable(flags) {\n return !this._hasFlag(flags, AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, AnnotationFlag.NOVIEW);\n }\n _isPrintable(flags) {\n return this._hasFlag(flags, AnnotationFlag.PRINT) && !this._hasFlag(flags, AnnotationFlag.HIDDEN) && !this._hasFlag(flags, AnnotationFlag.INVISIBLE);\n }\n mustBeViewed(annotationStorage, _renderForms) {\n const noView = annotationStorage?.get(this.data.id)?.noView;\n if (noView !== undefined) {\n return !noView;\n }\n return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n }\n mustBePrinted(annotationStorage) {\n const noPrint = annotationStorage?.get(this.data.id)?.noPrint;\n if (noPrint !== undefined) {\n return !noPrint;\n }\n return this.printable;\n }\n mustBeViewedWhenEditing(isEditing, modifiedIds = null) {\n return isEditing ? !this.data.isEditable : !modifiedIds?.has(this.data.id);\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 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 _parseStringHelper(data) {\n const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n return {\n str,\n dir\n };\n }\n setDefaultAppearance(params) {\n const {\n dict,\n annotationGlobals\n } = params;\n const defaultAppearance = getInheritableProperty({\n dict,\n key: \"DA\"\n }) || annotationGlobals.acroForm.get(\"DA\");\n this._defaultAppearance = typeof defaultAppearance === \"string\" ? defaultAppearance : \"\";\n this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance);\n }\n setTitle(title) {\n this._title = this._parseStringHelper(title);\n }\n setContents(contents) {\n this._contents = this._parseStringHelper(contents);\n }\n setModificationDate(modificationDate) {\n this.modificationDate = typeof modificationDate === \"string\" ? modificationDate : null;\n }\n setFlags(flags) {\n this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n if (this.flags & AnnotationFlag.INVISIBLE && this.constructor.name !== \"Annotation\") {\n this.flags ^= AnnotationFlag.INVISIBLE;\n }\n }\n hasFlag(flag) {\n return this._hasFlag(this.flags, flag);\n }\n setRectangle(rectangle) {\n this.rectangle = lookupNormalRect(rectangle, [0, 0, 0, 0]);\n }\n setColor(color) {\n this.color = getRgbColor(color);\n }\n setLineEndings(lineEndings) {\n this.lineEndings = [\"None\", \"None\"];\n if (Array.isArray(lineEndings) && lineEndings.length === 2) {\n for (let i = 0; i < 2; i++) {\n const obj = lineEndings[i];\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"None\":\n continue;\n case \"Square\":\n case \"Circle\":\n case \"Diamond\":\n case \"OpenArrow\":\n case \"ClosedArrow\":\n case \"Butt\":\n case \"ROpenArrow\":\n case \"RClosedArrow\":\n case \"Slash\":\n this.lineEndings[i] = obj.name;\n continue;\n }\n }\n warn(`Ignoring invalid lineEnding: ${obj}`);\n }\n }\n }\n setRotation(mk, dict) {\n this.rotation = 0;\n let angle = mk instanceof Dict ? mk.get(\"R\") || 0 : dict.get(\"Rotate\") || 0;\n if (Number.isInteger(angle) && angle !== 0) {\n angle %= 360;\n if (angle < 0) {\n angle += 360;\n }\n if (angle % 90 === 0) {\n this.rotation = angle;\n }\n }\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 setBorderStyle(borderStyle) {\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 if (dict instanceof Dict) {\n const dictType = dict.get(\"Type\");\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 }\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 if (array.length === 4) {\n this.borderStyle.setDashArray(array[3], true);\n }\n }\n } else {\n this.borderStyle.setWidth(0);\n }\n }\n setAppearance(dict) {\n this.appearance = null;\n const appearanceStates = dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\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 const as = dict.get(\"AS\");\n if (!(as instanceof Name) || !normalAppearanceState.has(as.name)) {\n return;\n }\n const appearance = normalAppearanceState.get(as.name);\n if (appearance instanceof BaseStream) {\n this.appearance = appearance;\n }\n }\n setOptionalContent(dict) {\n this.oc = null;\n const oc = dict.get(\"OC\");\n if (oc instanceof Name) {\n warn(\"setOptionalContent: Support for /Name-entry is not implemented.\");\n } else if (oc instanceof Dict) {\n this.oc = oc;\n }\n }\n loadResources(keys, appearance) {\n return appearance.dict.getAsync(\"Resources\").then(resources => {\n if (!resources) {\n return undefined;\n }\n const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n return objectLoader.load().then(function () {\n return resources;\n });\n });\n }\n async getOperatorList(evaluator, task, intent, annotationStorage) {\n const {\n hasOwnCanvas,\n id,\n rect\n } = this.data;\n let appearance = this.appearance;\n const isUsingOwnCanvas = !!(hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY);\n if (isUsingOwnCanvas && (rect[0] === rect[2] || rect[1] === rect[3])) {\n this.data.hasOwnCanvas = false;\n return {\n opList: new OperatorList(),\n separateForm: false,\n separateCanvas: false\n };\n }\n if (!appearance) {\n if (!isUsingOwnCanvas) {\n return {\n opList: new OperatorList(),\n separateForm: false,\n separateCanvas: false\n };\n }\n appearance = new StringStream(\"\");\n appearance.dict = new Dict();\n }\n const appearanceDict = appearance.dict;\n const resources = await this.loadResources([\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"], appearance);\n const bbox = lookupRect(appearanceDict.getArray(\"BBox\"), [0, 0, 1, 1]);\n const matrix = lookupMatrix(appearanceDict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n const transform = getTransformMatrix(rect, bbox, matrix);\n const opList = new OperatorList();\n let optionalContent;\n if (this.oc) {\n optionalContent = await evaluator.parseMarkedContentProps(this.oc, null);\n }\n if (optionalContent !== undefined) {\n opList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n opList.addOp(OPS.beginAnnotation, [id, rect, transform, matrix, isUsingOwnCanvas]);\n await evaluator.getOperatorList({\n stream: appearance,\n task,\n resources,\n operatorList: opList,\n fallbackFontDict: this._fallbackFontDict\n });\n opList.addOp(OPS.endAnnotation, []);\n if (optionalContent !== undefined) {\n opList.addOp(OPS.endMarkedContent, []);\n }\n this.reset();\n return {\n opList,\n separateForm: false,\n separateCanvas: isUsingOwnCanvas\n };\n }\n async save(evaluator, task, annotationStorage, changes) {\n return null;\n }\n get hasTextContent() {\n return false;\n }\n async extractTextContent(evaluator, task, viewBox) {\n if (!this.appearance) {\n return;\n }\n const resources = await this.loadResources([\"ExtGState\", \"Font\", \"Properties\", \"XObject\"], this.appearance);\n const text = [];\n const buffer = [];\n let firstPosition = null;\n const sink = {\n desiredSize: Math.Infinity,\n ready: true,\n enqueue(chunk, size) {\n for (const item of chunk.items) {\n if (item.str === undefined) {\n continue;\n }\n firstPosition ||= item.transform.slice(-2);\n buffer.push(item.str);\n if (item.hasEOL) {\n text.push(buffer.join(\"\").trimEnd());\n buffer.length = 0;\n }\n }\n }\n };\n await evaluator.getTextContent({\n stream: this.appearance,\n task,\n resources,\n includeMarkedContent: true,\n keepWhiteSpace: true,\n sink,\n viewBox\n });\n this.reset();\n if (buffer.length) {\n text.push(buffer.join(\"\").trimEnd());\n }\n if (text.length > 1 || text[0]) {\n const appearanceDict = this.appearance.dict;\n const bbox = lookupRect(appearanceDict.getArray(\"BBox\"), null);\n const matrix = lookupMatrix(appearanceDict.getArray(\"Matrix\"), null);\n this.data.textPosition = this._transformPoint(firstPosition, bbox, matrix);\n this.data.textContent = text;\n }\n }\n _transformPoint(coords, bbox, matrix) {\n const {\n rect\n } = this.data;\n bbox ||= [0, 0, 1, 1];\n matrix ||= [1, 0, 0, 1, 0, 0];\n const transform = getTransformMatrix(rect, bbox, matrix);\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n coords = Util.applyTransform(coords, transform);\n return Util.applyTransform(coords, matrix);\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 rotation: this.rotation\n };\n }\n return null;\n }\n reset() {\n for (const stream of this._streams) {\n stream.reset();\n }\n }\n _constructFieldName(dict) {\n if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n warn(\"Unknown field name, falling back to empty field name.\");\n return \"\";\n }\n if (!dict.has(\"Parent\")) {\n return stringToPDFString(dict.get(\"T\"));\n }\n const fieldName = [];\n if (dict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(dict.get(\"T\")));\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 (!(loopDict instanceof Dict) || loopDict.objId && visited.has(loopDict.objId)) {\n break;\n }\n if (loopDict.objId) {\n visited.put(loopDict.objId);\n }\n if (loopDict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n }\n }\n return fieldName.join(\".\");\n }\n}\nclass AnnotationBorderStyle {\n constructor() {\n this.width = 1;\n this.rawWidth = 1;\n this.style = AnnotationBorderStyleType.SOLID;\n this.dashArray = [3];\n this.horizontalCornerRadius = 0;\n this.verticalCornerRadius = 0;\n }\n setWidth(width, rect = [0, 0, 0, 0]) {\n if (width instanceof Name) {\n this.width = 0;\n return;\n }\n if (typeof width === \"number\") {\n if (width > 0) {\n this.rawWidth = width;\n const maxWidth = (rect[2] - rect[0]) / 2;\n const maxHeight = (rect[3] - rect[1]) / 2;\n if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {\n warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n width = 1;\n }\n }\n this.width = width;\n }\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 case \"D\":\n this.style = AnnotationBorderStyleType.DASHED;\n break;\n case \"B\":\n this.style = AnnotationBorderStyleType.BEVELED;\n break;\n case \"I\":\n this.style = AnnotationBorderStyleType.INSET;\n break;\n case \"U\":\n this.style = AnnotationBorderStyleType.UNDERLINE;\n break;\n default:\n break;\n }\n }\n setDashArray(dashArray, forceStyle = false) {\n if (Array.isArray(dashArray)) {\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 (dashArray.length === 0 || isValid && !allZeros) {\n this.dashArray = dashArray;\n if (forceStyle) {\n this.setStyle(Name.get(\"D\"));\n }\n } else {\n this.width = 0;\n }\n } else if (dashArray) {\n this.width = 0;\n }\n }\n setHorizontalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.horizontalCornerRadius = radius;\n }\n }\n setVerticalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.verticalCornerRadius = radius;\n }\n }\n}\nclass MarkupAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const {\n dict\n } = params;\n if (dict.has(\"IRT\")) {\n const rawIRT = dict.getRaw(\"IRT\");\n this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null;\n const rt = dict.get(\"RT\");\n this.data.replyType = rt instanceof Name ? rt.name : AnnotationReplyType.REPLY;\n }\n let popupRef = null;\n if (this.data.replyType === AnnotationReplyType.GROUP) {\n const parent = dict.get(\"IRT\");\n this.setTitle(parent.get(\"T\"));\n this.data.titleObj = this._title;\n this.setContents(parent.get(\"Contents\"));\n this.data.contentsObj = this._contents;\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 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 popupRef = parent.getRaw(\"Popup\");\n if (!parent.has(\"C\")) {\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 this.setCreationDate(dict.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n popupRef = dict.getRaw(\"Popup\");\n if (!dict.has(\"C\")) {\n this.data.color = null;\n }\n }\n this.data.popupRef = popupRef instanceof Ref ? popupRef.toString() : null;\n if (dict.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n }\n }\n setCreationDate(creationDate) {\n this.creationDate = typeof creationDate === \"string\" ? creationDate : null;\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 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 const pointsArray = this.data.quadPoints || Float32Array.from([this.rectangle[0], this.rectangle[3], this.rectangle[2], this.rectangle[3], this.rectangle[0], this.rectangle[1], this.rectangle[2], this.rectangle[1]]);\n for (let i = 0, ii = pointsArray.length; i < ii; i += 8) {\n const [mX, MX, mY, MY] = pointsCallback(buffer, pointsArray.subarray(i, i + 8));\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 const formDict = new Dict(xref);\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n const appearanceStream = new StringStream(buffer.join(\" \"));\n appearanceStream.dict = appearanceStreamDict;\n formDict.set(\"Fm0\", appearanceStream);\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 const stateDict = new Dict(xref);\n stateDict.set(\"GS0\", gsDict);\n const resources = new Dict(xref);\n resources.set(\"ExtGState\", stateDict);\n resources.set(\"XObject\", formDict);\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 this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\");\n this.appearance.dict = appearanceDict;\n this._streams.push(this.appearance, appearanceStream);\n }\n static async createNewAnnotation(xref, annotation, changes, params) {\n const annotationRef = annotation.ref ||= xref.getNewTemporaryRef();\n const ap = await this.createNewAppearanceStream(annotation, xref, params);\n let annotationDict;\n if (ap) {\n const apRef = xref.getNewTemporaryRef();\n annotationDict = this.createNewDict(annotation, xref, {\n apRef\n });\n changes.put(apRef, {\n data: ap\n });\n } else {\n annotationDict = this.createNewDict(annotation, xref, {});\n }\n if (Number.isInteger(annotation.parentTreeId)) {\n annotationDict.set(\"StructParent\", annotation.parentTreeId);\n }\n changes.put(annotationRef, {\n data: annotationDict\n });\n return {\n ref: annotationRef\n };\n }\n static async createNewPrintAnnotation(annotationGlobals, xref, annotation, params) {\n const ap = await this.createNewAppearanceStream(annotation, xref, params);\n const annotationDict = this.createNewDict(annotation, xref, ap ? {\n ap\n } : {});\n const newAnnotation = new this.prototype.constructor({\n dict: annotationDict,\n xref,\n annotationGlobals,\n evaluatorOptions: params.evaluatorOptions\n });\n if (annotation.ref) {\n newAnnotation.ref = newAnnotation.refToReplace = annotation.ref;\n }\n return newAnnotation;\n }\n}\nclass WidgetAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref,\n annotationGlobals\n } = params;\n const data = this.data;\n this._needAppearances = params.needAppearances;\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(xref, dict, AnnotationActionEventType);\n }\n let fieldValue = getInheritableProperty({\n dict,\n key: \"V\",\n getArray: true\n });\n data.fieldValue = this._decodeFormValue(fieldValue);\n const defaultFieldValue = getInheritableProperty({\n dict,\n key: \"DV\",\n getArray: true\n });\n data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n if (fieldValue === undefined && annotationGlobals.xfaDatasets) {\n const path = this._title.str;\n if (path) {\n this._hasValueFromXFA = true;\n data.fieldValue = fieldValue = annotationGlobals.xfaDatasets.getValue(path);\n }\n }\n if (fieldValue === undefined && data.defaultFieldValue !== null) {\n data.fieldValue = data.defaultFieldValue;\n }\n data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n this.setDefaultAppearance(params);\n data.hasAppearance ||= this._needAppearances && data.fieldValue !== undefined && data.fieldValue !== null;\n const fieldType = getInheritableProperty({\n dict,\n key: \"FT\"\n });\n data.fieldType = fieldType instanceof Name ? fieldType.name : null;\n const localResources = getInheritableProperty({\n dict,\n key: \"DR\"\n });\n const acroFormResources = annotationGlobals.acroForm.get(\"DR\");\n const appearanceResources = this.appearance?.dict.get(\"Resources\");\n this._fieldResources = {\n localResources,\n acroFormResources,\n appearanceResources,\n mergedResources: Dict.merge({\n xref,\n dictArray: [localResources, appearanceResources, acroFormResources],\n mergeSubDicts: true\n })\n };\n data.fieldFlags = getInheritableProperty({\n dict,\n key: \"Ff\"\n });\n if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n data.fieldFlags = 0;\n }\n data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n data.required = this.hasFieldFlag(AnnotationFieldFlag.REQUIRED);\n data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN) || this._hasFlag(data.annotationFlags, AnnotationFlag.NOVIEW);\n }\n _decodeFormValue(formValue) {\n if (Array.isArray(formValue)) {\n return formValue.filter(item => typeof item === \"string\").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 hasFieldFlag(flag) {\n return !!(this.data.fieldFlags & flag);\n }\n _isViewable(flags) {\n return true;\n }\n mustBeViewed(annotationStorage, renderForms) {\n if (renderForms) {\n return this.viewable;\n }\n return super.mustBeViewed(annotationStorage, renderForms) && !this._hasFlag(this.flags, AnnotationFlag.NOVIEW);\n }\n getRotationMatrix(annotationStorage) {\n let rotation = annotationStorage?.get(this.data.id)?.rotation;\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n if (rotation === 0) {\n return IDENTITY_MATRIX;\n }\n const width = this.data.rect[2] - this.data.rect[0];\n const height = this.data.rect[3] - this.data.rect[1];\n return getRotationMatrix(rotation, width, height);\n }\n getBorderAndBackgroundAppearances(annotationStorage) {\n let rotation = annotationStorage?.get(this.data.id)?.rotation;\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n if (!this.backgroundColor && !this.borderColor) {\n return \"\";\n }\n const width = this.data.rect[2] - this.data.rect[0];\n const height = this.data.rect[3] - this.data.rect[1];\n const rect = rotation === 0 || rotation === 180 ? `0 0 ${width} ${height} re` : `0 0 ${height} ${width} re`;\n let str = \"\";\n if (this.backgroundColor) {\n str = `${getPdfColor(this.backgroundColor, true)} ${rect} f `;\n }\n if (this.borderColor) {\n const borderWidth = this.borderStyle.width || 1;\n str += `${borderWidth} w ${getPdfColor(this.borderColor, false)} ${rect} S `;\n }\n return str;\n }\n async getOperatorList(evaluator, task, intent, annotationStorage) {\n if (intent & RenderingIntentFlag.ANNOTATIONS_FORMS && !(this instanceof SignatureWidgetAnnotation) && !this.data.noHTML && !this.data.hasOwnCanvas) {\n return {\n opList: new OperatorList(),\n separateForm: true,\n separateCanvas: false\n };\n }\n if (!this._hasText) {\n return super.getOperatorList(evaluator, task, intent, annotationStorage);\n }\n const content = await this._getAppearance(evaluator, task, intent, annotationStorage);\n if (this.appearance && content === null) {\n return super.getOperatorList(evaluator, task, intent, annotationStorage);\n }\n const opList = new OperatorList();\n if (!this._defaultAppearance || content === null) {\n return {\n opList,\n separateForm: false,\n separateCanvas: false\n };\n }\n const isUsingOwnCanvas = !!(this.data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY);\n const matrix = [1, 0, 0, 1, 0, 0];\n const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];\n const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n let optionalContent;\n if (this.oc) {\n optionalContent = await evaluator.parseMarkedContentProps(this.oc, null);\n }\n if (optionalContent !== undefined) {\n opList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n opList.addOp(OPS.beginAnnotation, [this.data.id, this.data.rect, transform, this.getRotationMatrix(annotationStorage), isUsingOwnCanvas]);\n const stream = new StringStream(content);\n await evaluator.getOperatorList({\n stream,\n task,\n resources: this._fieldResources.mergedResources,\n operatorList: opList\n });\n opList.addOp(OPS.endAnnotation, []);\n if (optionalContent !== undefined) {\n opList.addOp(OPS.endMarkedContent, []);\n }\n return {\n opList,\n separateForm: false,\n separateCanvas: isUsingOwnCanvas\n };\n }\n _getMKDict(rotation) {\n const mk = new Dict(null);\n if (rotation) {\n mk.set(\"R\", rotation);\n }\n if (this.borderColor) {\n mk.set(\"BC\", getPdfColorArray(this.borderColor));\n }\n if (this.backgroundColor) {\n mk.set(\"BG\", getPdfColorArray(this.backgroundColor));\n }\n return mk.size > 0 ? mk : null;\n }\n amendSavedDict(annotationStorage, dict) {}\n setValue(dict, value, xref, changes) {\n const {\n dict: parentDict,\n ref: parentRef\n } = getParentToUpdate(dict, this.ref, xref);\n if (!parentDict) {\n dict.set(\"V\", value);\n } else if (!changes.has(parentRef)) {\n const newParentDict = parentDict.clone();\n newParentDict.set(\"V\", value);\n changes.put(parentRef, {\n data: newParentDict\n });\n return newParentDict;\n }\n return null;\n }\n async save(evaluator, task, annotationStorage, changes) {\n const storageEntry = annotationStorage?.get(this.data.id);\n const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n let value = storageEntry?.value,\n rotation = storageEntry?.rotation;\n if (value === this.data.fieldValue || value === undefined) {\n if (!this._hasValueFromXFA && rotation === undefined && flags === undefined) {\n return;\n }\n value ||= this.data.fieldValue;\n }\n if (rotation === undefined && !this._hasValueFromXFA && Array.isArray(value) && Array.isArray(this.data.fieldValue) && isArrayEqual(value, this.data.fieldValue) && flags === undefined) {\n return;\n }\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n let appearance = null;\n if (!this._needAppearances) {\n appearance = await this._getAppearance(evaluator, task, RenderingIntentFlag.SAVE, annotationStorage);\n if (appearance === null && flags === undefined) {\n return;\n }\n } else {}\n let needAppearances = false;\n if (appearance?.needAppearances) {\n needAppearances = true;\n appearance = null;\n }\n const {\n xref\n } = evaluator;\n const originalDict = xref.fetchIfRef(this.ref);\n if (!(originalDict instanceof Dict)) {\n return;\n }\n const dict = new Dict(xref);\n for (const key of originalDict.getKeys()) {\n if (key !== \"AP\") {\n dict.set(key, originalDict.getRaw(key));\n }\n }\n if (flags !== undefined) {\n dict.set(\"F\", flags);\n if (appearance === null && !needAppearances) {\n const ap = originalDict.getRaw(\"AP\");\n if (ap) {\n dict.set(\"AP\", ap);\n }\n }\n }\n const xfa = {\n path: this.data.fieldName,\n value\n };\n const newParentDict = this.setValue(dict, Array.isArray(value) ? value.map(stringToAsciiOrUTF16BE) : stringToAsciiOrUTF16BE(value), xref, changes);\n this.amendSavedDict(annotationStorage, newParentDict || dict);\n const maybeMK = this._getMKDict(rotation);\n if (maybeMK) {\n dict.set(\"MK\", maybeMK);\n }\n changes.put(this.ref, {\n data: dict,\n xfa,\n needAppearances\n });\n if (appearance !== null) {\n const newRef = xref.getNewTemporaryRef();\n const AP = new Dict(xref);\n dict.set(\"AP\", AP);\n AP.set(\"N\", newRef);\n const resources = this._getSaveFieldResources(xref);\n const appearanceStream = new StringStream(appearance);\n const appearanceDict = appearanceStream.dict = new Dict(xref);\n appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceDict.set(\"Resources\", resources);\n appearanceDict.set(\"BBox\", [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]]);\n const rotationMatrix = this.getRotationMatrix(annotationStorage);\n if (rotationMatrix !== IDENTITY_MATRIX) {\n appearanceDict.set(\"Matrix\", rotationMatrix);\n }\n changes.put(newRef, {\n data: appearanceStream,\n xfa: null,\n needAppearances: false\n });\n }\n dict.set(\"M\", `D:${getModificationDate()}`);\n }\n async _getAppearance(evaluator, task, intent, annotationStorage) {\n const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n if (isPassword) {\n return null;\n }\n const storageEntry = annotationStorage?.get(this.data.id);\n let value, rotation;\n if (storageEntry) {\n value = storageEntry.formattedValue || storageEntry.value;\n rotation = storageEntry.rotation;\n }\n if (rotation === undefined && value === undefined && !this._needAppearances) {\n if (!this._hasValueFromXFA || this.appearance) {\n return null;\n }\n }\n const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n if (value === undefined) {\n value = this.data.fieldValue;\n if (!value) {\n return `/Tx BMC q ${colors}Q EMC`;\n }\n }\n if (Array.isArray(value) && value.length === 1) {\n value = value[0];\n }\n assert(typeof value === \"string\", \"Expected `value` to be a string.\");\n value = value.trimEnd();\n if (this.data.combo) {\n const option = this.data.options.find(({\n exportValue\n }) => value === exportValue);\n value = option?.displayValue || value;\n }\n if (value === \"\") {\n return `/Tx BMC q ${colors}Q EMC`;\n }\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n let lineCount = -1;\n let lines;\n if (this.data.multiLine) {\n lines = value.split(/\\r\\n?|\\n/).map(line => line.normalize(\"NFC\"));\n lineCount = lines.length;\n } else {\n lines = [value.replace(/\\r\\n?|\\n/, \"\").normalize(\"NFC\")];\n }\n const defaultPadding = 1;\n const defaultHPadding = 2;\n let totalHeight = this.data.rect[3] - this.data.rect[1];\n let totalWidth = this.data.rect[2] - this.data.rect[0];\n if (rotation === 90 || rotation === 270) {\n [totalWidth, totalHeight] = [totalHeight, totalWidth];\n }\n if (!this._defaultAppearance) {\n this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance = \"/Helvetica 0 Tf 0 g\");\n }\n let font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources);\n let defaultAppearance, fontSize, lineHeight;\n const encodedLines = [];\n let encodingError = false;\n for (const line of lines) {\n const encodedString = font.encodeString(line);\n if (encodedString.length > 1) {\n encodingError = true;\n }\n encodedLines.push(encodedString.join(\"\"));\n }\n if (encodingError && intent & RenderingIntentFlag.SAVE) {\n return {\n needAppearances: true\n };\n }\n if (encodingError && this._isOffscreenCanvasSupported) {\n const fontFamily = this.data.comb ? \"monospace\" : \"sans-serif\";\n const fakeUnicodeFont = new FakeUnicodeFont(evaluator.xref, fontFamily);\n const resources = fakeUnicodeFont.createFontResources(lines.join(\"\"));\n const newFont = resources.getRaw(\"Font\");\n if (this._fieldResources.mergedResources.has(\"Font\")) {\n const oldFont = this._fieldResources.mergedResources.get(\"Font\");\n for (const key of newFont.getKeys()) {\n oldFont.set(key, newFont.getRaw(key));\n }\n } else {\n this._fieldResources.mergedResources.set(\"Font\", newFont);\n }\n const fontName = fakeUnicodeFont.fontName.name;\n font = await WidgetAnnotation._getFontData(evaluator, task, {\n fontName,\n fontSize: 0\n }, resources);\n for (let i = 0, ii = encodedLines.length; i < ii; i++) {\n encodedLines[i] = stringToUTF16String(lines[i]);\n }\n const savedDefaultAppearance = Object.assign(Object.create(null), this.data.defaultAppearanceData);\n this.data.defaultAppearanceData.fontSize = 0;\n this.data.defaultAppearanceData.fontName = fontName;\n [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(totalHeight - 2 * defaultPadding, totalWidth - 2 * defaultHPadding, value, font, lineCount);\n this.data.defaultAppearanceData = savedDefaultAppearance;\n } else {\n if (!this._isOffscreenCanvasSupported) {\n warn(\"_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly.\");\n }\n [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(totalHeight - 2 * defaultPadding, totalWidth - 2 * defaultHPadding, value, font, lineCount);\n }\n let descent = font.descent;\n if (isNaN(descent)) {\n descent = BASELINE_FACTOR * lineHeight;\n } else {\n descent = Math.max(BASELINE_FACTOR * lineHeight, Math.abs(descent) * fontSize);\n }\n const defaultVPadding = Math.min(Math.floor((totalHeight - fontSize) / 2), defaultPadding);\n const alignment = this.data.textAlignment;\n if (this.data.multiLine) {\n return this._getMultilineAppearance(defaultAppearance, encodedLines, font, fontSize, totalWidth, totalHeight, alignment, defaultHPadding, defaultVPadding, descent, lineHeight, annotationStorage);\n }\n if (this.data.comb) {\n return this._getCombAppearance(defaultAppearance, font, encodedLines[0], fontSize, totalWidth, totalHeight, defaultHPadding, defaultVPadding, descent, lineHeight, annotationStorage);\n }\n const bottomPadding = defaultVPadding + descent;\n if (alignment === 0 || alignment > 2) {\n return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${numberToString(defaultHPadding)} ${numberToString(bottomPadding)} Tm (${escapeString(encodedLines[0])}) Tj` + \" ET Q EMC\";\n }\n const prevInfo = {\n shift: 0\n };\n const renderedText = this._renderText(encodedLines[0], font, fontSize, totalWidth, alignment, prevInfo, defaultHPadding, bottomPadding);\n return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + \" ET Q EMC\";\n }\n static async _getFontData(evaluator, task, appearanceData, resources) {\n const operatorList = new OperatorList();\n const initialState = {\n font: null,\n clone() {\n return this;\n }\n };\n const {\n fontName,\n fontSize\n } = appearanceData;\n await evaluator.handleSetFont(resources, [fontName && Name.get(fontName), fontSize], null, operatorList, task, initialState, null);\n return initialState.font;\n }\n _getTextWidth(text, font) {\n return font.charsToGlyphs(text).reduce((width, glyph) => width + glyph.width, 0) / 1000;\n }\n _computeFontSize(height, width, text, font, lineCount) {\n let {\n fontSize\n } = this.data.defaultAppearanceData;\n let lineHeight = (fontSize || 12) * LINE_FACTOR,\n numberOfLines = Math.round(height / lineHeight);\n if (!fontSize) {\n const roundWithTwoDigits = x => Math.floor(x * 100) / 100;\n if (lineCount === -1) {\n const textWidth = this._getTextWidth(text, font);\n fontSize = roundWithTwoDigits(Math.min(height / LINE_FACTOR, width / textWidth));\n numberOfLines = 1;\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 const isTooBig = fsize => {\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 numberOfLines = Math.max(numberOfLines, lineCount);\n while (true) {\n lineHeight = height / numberOfLines;\n fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR);\n if (isTooBig(fontSize)) {\n numberOfLines++;\n continue;\n }\n break;\n }\n }\n const {\n fontName,\n fontColor\n } = this.data.defaultAppearanceData;\n this._defaultAppearance = createDefaultAppearance({\n fontSize,\n fontName,\n fontColor\n });\n }\n return [this._defaultAppearance, fontSize, height / numberOfLines];\n }\n _renderText(text, font, fontSize, totalWidth, alignment, prevInfo, hPadding, vPadding) {\n let shift;\n if (alignment === 1) {\n const width = this._getTextWidth(text, font) * fontSize;\n shift = (totalWidth - width) / 2;\n } else if (alignment === 2) {\n const width = this._getTextWidth(text, font) * fontSize;\n shift = totalWidth - width - hPadding;\n } else {\n shift = hPadding;\n }\n const shiftStr = numberToString(shift - prevInfo.shift);\n prevInfo.shift = shift;\n vPadding = numberToString(vPadding);\n return `${shiftStr} ${vPadding} Td (${escapeString(text)}) Tj`;\n }\n _getSaveFieldResources(xref) {\n const {\n localResources,\n appearanceResources,\n acroFormResources\n } = this._fieldResources;\n const fontName = this.data.defaultAppearanceData?.fontName;\n if (!fontName) {\n return localResources || Dict.empty;\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 const subResourcesDict = new Dict(xref);\n subResourcesDict.set(\"Font\", subFontDict);\n return Dict.merge({\n xref,\n dictArray: [subResourcesDict, localResources],\n mergeSubDicts: true\n });\n }\n }\n return localResources || Dict.empty;\n }\n getFieldObject() {\n return null;\n }\n}\nclass TextWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n const {\n dict\n } = params;\n if (dict.has(\"PMD\")) {\n this.flags |= AnnotationFlag.HIDDEN;\n this.data.hidden = true;\n warn(\"Barcodes are not supported\");\n }\n this.data.hasOwnCanvas = this.data.readOnly && !this.data.noHTML;\n this._hasText = true;\n if (typeof this.data.fieldValue !== \"string\") {\n this.data.fieldValue = \"\";\n }\n let alignment = getInheritableProperty({\n dict,\n key: \"Q\"\n });\n if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n alignment = null;\n }\n this.data.textAlignment = alignment;\n let maximumLength = getInheritableProperty({\n dict,\n key: \"MaxLen\"\n });\n if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n maximumLength = 0;\n }\n this.data.maxLen = maximumLength;\n this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n this.data.comb = this.hasFieldFlag(AnnotationFieldFlag.COMB) && !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) && !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) && !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== 0;\n this.data.doNotScroll = this.hasFieldFlag(AnnotationFieldFlag.DONOTSCROLL);\n }\n get hasTextContent() {\n return !!this.appearance && !this._needAppearances;\n }\n _getCombAppearance(defaultAppearance, font, text, fontSize, width, height, hPadding, vPadding, descent, lineHeight, annotationStorage) {\n const combWidth = width / this.data.maxLen;\n const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\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 const renderedComb = buf.join(` ${numberToString(combWidth)} 0 Td `);\n return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${numberToString(hPadding)} ${numberToString(vPadding + descent)} Tm ${renderedComb}` + \" ET Q EMC\";\n }\n _getMultilineAppearance(defaultAppearance, lines, font, fontSize, width, height, alignment, hPadding, vPadding, descent, lineHeight, annotationStorage) {\n const buf = [];\n const totalWidth = width - 2 * hPadding;\n const prevInfo = {\n shift: 0\n };\n for (let i = 0, ii = lines.length; i < ii; i++) {\n const line = lines[i];\n const chunks = this._splitLine(line, font, fontSize, totalWidth);\n for (let j = 0, jj = chunks.length; j < jj; j++) {\n const chunk = chunks[j];\n const vShift = i === 0 && j === 0 ? -vPadding - (lineHeight - descent) : -lineHeight;\n buf.push(this._renderText(chunk, font, fontSize, width, alignment, prevInfo, hPadding, vShift));\n }\n }\n const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n const renderedText = buf.join(\"\\n\");\n return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 ${numberToString(height)} Tm ${renderedText}` + \" ET Q EMC\";\n }\n _splitLine(line, font, fontSize, width, cache = {}) {\n line = cache.line || line;\n const glyphs = cache.glyphs || font.charsToGlyphs(line);\n if (glyphs.length <= 1) {\n return [line];\n }\n const positions = cache.positions || font.getCharPositions(line);\n const scale = fontSize / 1000;\n const chunks = [];\n let lastSpacePosInStringStart = -1,\n lastSpacePosInStringEnd = -1,\n lastSpacePos = -1,\n startChunk = 0,\n currentWidth = 0;\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 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 if (currentWidth + glyphWidth > width) {\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 chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n }\n } else {\n currentWidth += glyphWidth;\n }\n }\n if (startChunk < line.length) {\n chunks.push(line.substring(startChunk, line.length));\n }\n return chunks;\n }\n async extractTextContent(evaluator, task, viewBox) {\n await super.extractTextContent(evaluator, task, viewBox);\n const text = this.data.textContent;\n if (!text) {\n return;\n }\n const allText = text.join(\"\\n\");\n if (allText === this.data.fieldValue) {\n return;\n }\n const regex = allText.replaceAll(/([.*+?^${}()|[\\]\\\\])|(\\s+)/g, (_m, p1) => p1 ? `\\\\${p1}` : \"\\\\s+\");\n if (new RegExp(`^\\\\s*${regex}\\\\s*$`).test(this.data.fieldValue)) {\n this.data.textContent = this.data.fieldValue.split(\"\\n\");\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 rotation: this.rotation,\n type: \"text\"\n };\n }\n}\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n this.checkedAppearance = null;\n this.uncheckedAppearance = null;\n this.data.checkBox = !this.hasFieldFlag(AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.radioButton = this.hasFieldFlag(AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.isTooltipOnly = false;\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.data.noHTML = false;\n this._processPushButton(params);\n } else {\n warn(\"Invalid field flags for button widget annotation\");\n }\n }\n async getOperatorList(evaluator, task, intent, annotationStorage) {\n if (this.data.pushButton) {\n return super.getOperatorList(evaluator, task, intent, false, annotationStorage);\n }\n let value = null;\n let rotation = null;\n if (annotationStorage) {\n const storageEntry = annotationStorage.get(this.data.id);\n value = storageEntry ? storageEntry.value : null;\n rotation = storageEntry ? storageEntry.rotation : null;\n }\n if (value === null && this.appearance) {\n return super.getOperatorList(evaluator, task, intent, annotationStorage);\n }\n if (value === null || value === undefined) {\n value = this.data.checkBox ? this.data.fieldValue === this.data.exportValue : this.data.fieldValue === this.data.buttonValue;\n }\n const appearance = value ? this.checkedAppearance : this.uncheckedAppearance;\n if (appearance) {\n const savedAppearance = this.appearance;\n const savedMatrix = lookupMatrix(appearance.dict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n if (rotation) {\n appearance.dict.set(\"Matrix\", this.getRotationMatrix(annotationStorage));\n }\n this.appearance = appearance;\n const operatorList = super.getOperatorList(evaluator, task, intent, annotationStorage);\n this.appearance = savedAppearance;\n appearance.dict.set(\"Matrix\", savedMatrix);\n return operatorList;\n }\n return {\n opList: new OperatorList(),\n separateForm: false,\n separateCanvas: false\n };\n }\n async save(evaluator, task, annotationStorage, changes) {\n if (this.data.checkBox) {\n this._saveCheckbox(evaluator, task, annotationStorage, changes);\n return;\n }\n if (this.data.radioButton) {\n this._saveRadioButton(evaluator, task, annotationStorage, changes);\n }\n }\n async _saveCheckbox(evaluator, task, annotationStorage, changes) {\n if (!annotationStorage) {\n return;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n let rotation = storageEntry?.rotation,\n value = storageEntry?.value;\n if (rotation === undefined && flags === undefined) {\n if (value === undefined) {\n return;\n }\n const defaultValue = this.data.fieldValue === this.data.exportValue;\n if (defaultValue === value) {\n return;\n }\n }\n let dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return;\n }\n dict = dict.clone();\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n if (value === undefined) {\n value = this.data.fieldValue === this.data.exportValue;\n }\n const xfa = {\n path: this.data.fieldName,\n value: value ? this.data.exportValue : \"\"\n };\n const name = Name.get(value ? this.data.exportValue : \"Off\");\n this.setValue(dict, name, evaluator.xref, changes);\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n if (flags !== undefined) {\n dict.set(\"F\", flags);\n }\n const maybeMK = this._getMKDict(rotation);\n if (maybeMK) {\n dict.set(\"MK\", maybeMK);\n }\n changes.put(this.ref, {\n data: dict,\n xfa,\n needAppearances: false\n });\n }\n async _saveRadioButton(evaluator, task, annotationStorage, changes) {\n if (!annotationStorage) {\n return;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n let rotation = storageEntry?.rotation,\n value = storageEntry?.value;\n if (rotation === undefined && flags === undefined) {\n if (value === undefined) {\n return;\n }\n const defaultValue = this.data.fieldValue === this.data.buttonValue;\n if (defaultValue === value) {\n return;\n }\n }\n let dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return;\n }\n dict = dict.clone();\n if (value === undefined) {\n value = this.data.fieldValue === this.data.buttonValue;\n }\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n const xfa = {\n path: this.data.fieldName,\n value: value ? this.data.buttonValue : \"\"\n };\n const name = Name.get(value ? this.data.buttonValue : \"Off\");\n if (value) {\n this.setValue(dict, name, evaluator.xref, changes);\n }\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n if (flags !== undefined) {\n dict.set(\"F\", flags);\n }\n const maybeMK = this._getMKDict(rotation);\n if (maybeMK) {\n dict.set(\"MK\", maybeMK);\n }\n changes.put(this.ref, {\n data: dict,\n xfa,\n needAppearances: false\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 const FONT_RATIO = 0.8;\n const fontSize = Math.min(width, height) * FONT_RATIO;\n let metrics, char;\n if (type === \"check\") {\n metrics = {\n width: 0.755 * fontSize,\n height: 0.705 * fontSize\n };\n char = \"\\x33\";\n } else if (type === \"disc\") {\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 const xShift = numberToString((width - metrics.width) / 2);\n const yShift = numberToString((height - metrics.height) / 2);\n const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\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 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 appearanceStreamDict.set(\"Resources\", resources);\n this.checkedAppearance = new StringStream(appearance);\n this.checkedAppearance.dict = appearanceStreamDict;\n this._streams.push(this.checkedAppearance);\n }\n _processCheckBox(params) {\n const customAppearance = params.dict.get(\"AP\");\n if (!(customAppearance instanceof Dict)) {\n return;\n }\n const normalAppearance = customAppearance.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n if (typeof asValue === \"string\") {\n this.data.fieldValue = asValue;\n }\n const yes = this.data.fieldValue !== null && this.data.fieldValue !== \"Off\" ? this.data.fieldValue : \"Yes\";\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 if (!exportValues.includes(this.data.fieldValue)) {\n this.data.fieldValue = \"Off\";\n }\n this.data.exportValue = exportValues[1];\n const checkedAppearance = normalAppearance.get(this.data.exportValue);\n this.checkedAppearance = checkedAppearance instanceof BaseStream ? checkedAppearance : null;\n const uncheckedAppearance = normalAppearance.get(\"Off\");\n this.uncheckedAppearance = uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\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 if (this.data.defaultFieldValue === null) {\n this.data.defaultFieldValue = \"Off\";\n }\n }\n _processRadioButton(params) {\n this.data.buttonValue = null;\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 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 const checkedAppearance = normalAppearance.get(this.data.buttonValue);\n this.checkedAppearance = checkedAppearance instanceof BaseStream ? checkedAppearance : null;\n const uncheckedAppearance = normalAppearance.get(\"Off\");\n this.uncheckedAppearance = uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\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 if (this.data.defaultFieldValue === null) {\n this.data.defaultFieldValue = \"Off\";\n }\n }\n _processPushButton(params) {\n const {\n dict,\n annotationGlobals\n } = params;\n if (!dict.has(\"A\") && !dict.has(\"AA\") && !this.data.alternativeText) {\n warn(\"Push buttons without action dictionaries are not supported\");\n return;\n }\n this.data.isTooltipOnly = !dict.has(\"A\") && !dict.has(\"AA\");\n Catalog.parseDestDictionary({\n destDict: dict,\n resultObj: this.data,\n docBaseUrl: annotationGlobals.baseUrl,\n docAttachments: annotationGlobals.attachments\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 rotation: this.rotation,\n type\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 return shadow(this, \"fallbackFontDict\", dict);\n }\n}\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.indices = dict.getArray(\"I\");\n this.hasIndices = Array.isArray(this.indices) && this.indices.length > 0;\n this.data.options = [];\n const options = getInheritableProperty({\n dict,\n key: \"Opt\"\n });\n if (Array.isArray(options)) {\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 this.data.options[i] = {\n exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option),\n displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option)\n };\n }\n }\n if (!this.hasIndices) {\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 } else {\n this.data.fieldValue = [];\n const ii = this.data.options.length;\n for (const i of this.indices) {\n if (Number.isInteger(i) && i >= 0 && i < ii) {\n this.data.fieldValue.push(this.data.options[i].exportValue);\n }\n }\n }\n if (this.data.options.length === 0 && this.data.fieldValue.length > 0) {\n this.data.options = this.data.fieldValue.map(value => ({\n exportValue: value,\n displayValue: value\n }));\n }\n this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n this._hasText = true;\n }\n getFieldObject() {\n const type = this.data.combo ? \"combobox\" : \"listbox\";\n const value = 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 rotation: this.rotation,\n type\n };\n }\n amendSavedDict(annotationStorage, dict) {\n if (!this.hasIndices) {\n return;\n }\n let values = annotationStorage?.get(this.data.id)?.value;\n if (!Array.isArray(values)) {\n values = [values];\n }\n const indices = [];\n const {\n options\n } = this.data;\n for (let i = 0, j = 0, ii = options.length; i < ii; i++) {\n if (options[i].exportValue === values[j]) {\n indices.push(i);\n j += 1;\n }\n }\n dict.set(\"I\", indices);\n }\n async _getAppearance(evaluator, task, intent, annotationStorage) {\n if (this.data.combo) {\n return super._getAppearance(evaluator, task, intent, annotationStorage);\n }\n let exportedValue, rotation;\n const storageEntry = annotationStorage?.get(this.data.id);\n if (storageEntry) {\n rotation = storageEntry.rotation;\n exportedValue = storageEntry.value;\n }\n if (rotation === undefined && exportedValue === undefined && !this._needAppearances) {\n return null;\n }\n if (exportedValue === undefined) {\n exportedValue = this.data.fieldValue;\n } else if (!Array.isArray(exportedValue)) {\n exportedValue = [exportedValue];\n }\n const defaultPadding = 1;\n const defaultHPadding = 2;\n let totalHeight = this.data.rect[3] - this.data.rect[1];\n let totalWidth = this.data.rect[2] - this.data.rect[0];\n if (rotation === 90 || rotation === 270) {\n [totalWidth, totalHeight] = [totalHeight, totalWidth];\n }\n const lineCount = this.data.options.length;\n const valueIndices = [];\n for (let i = 0; i < lineCount; i++) {\n const {\n exportValue\n } = this.data.options[i];\n if (exportedValue.includes(exportValue)) {\n valueIndices.push(i);\n }\n }\n if (!this._defaultAppearance) {\n this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance = \"/Helvetica 0 Tf 0 g\");\n }\n const font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources);\n let defaultAppearance;\n let {\n fontSize\n } = this.data.defaultAppearanceData;\n if (!fontSize) {\n const lineHeight = (totalHeight - defaultPadding) / lineCount;\n let lineWidth = -1;\n let value;\n for (const {\n displayValue\n } of this.data.options) {\n const width = this._getTextWidth(displayValue, font);\n if (width > lineWidth) {\n lineWidth = width;\n value = displayValue;\n }\n }\n [defaultAppearance, fontSize] = this._computeFontSize(lineHeight, totalWidth - 2 * defaultHPadding, value, font, -1);\n } else {\n defaultAppearance = this._defaultAppearance;\n }\n const lineHeight = fontSize * LINE_FACTOR;\n const vPadding = (lineHeight - fontSize) / 2;\n const numberOfVisibleLines = Math.floor(totalHeight / lineHeight);\n let firstIndex = 0;\n if (valueIndices.length > 0) {\n const minIndex = Math.min(...valueIndices);\n const maxIndex = Math.max(...valueIndices);\n firstIndex = Math.max(0, maxIndex - numberOfVisibleLines + 1);\n if (firstIndex > minIndex) {\n firstIndex = minIndex;\n }\n }\n const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount);\n const buf = [\"/Tx BMC q\", `1 1 ${totalWidth} ${totalHeight} re W n`];\n if (valueIndices.length) {\n buf.push(\"0.600006 0.756866 0.854904 rg\");\n for (const index of valueIndices) {\n if (firstIndex <= index && index < end) {\n buf.push(`1 ${totalHeight - (index - firstIndex + 1) * lineHeight} ${totalWidth} ${lineHeight} re f`);\n }\n }\n }\n buf.push(\"BT\", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`);\n const prevInfo = {\n shift: 0\n };\n for (let i = firstIndex; i < end; i++) {\n const {\n displayValue\n } = this.data.options[i];\n const vpadding = i === firstIndex ? vPadding : 0;\n buf.push(this._renderText(displayValue, font, fontSize, totalWidth, 0, prevInfo, defaultHPadding, -lineHeight + vpadding));\n }\n buf.push(\"ET Q EMC\");\n return buf.join(\"\\n\");\n }\n}\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n this.data.fieldValue = null;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = !this.data.hasOwnCanvas;\n }\n getFieldObject() {\n return {\n id: this.data.id,\n value: null,\n page: this.data.pageIndex,\n type: \"signature\"\n };\n }\n}\nclass TextAnnotation extends MarkupAnnotation {\n constructor(params) {\n const DEFAULT_ICON_SIZE = 22;\n super(params);\n this.data.noRotate = true;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n const {\n dict\n } = params;\n this.data.annotationType = AnnotationType.TEXT;\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 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}\nclass LinkAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const {\n dict,\n annotationGlobals\n } = params;\n this.data.annotationType = AnnotationType.LINK;\n this.data.noHTML = false;\n const quadPoints = getQuadPoints(dict, this.rectangle);\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n this.data.borderColor ||= this.data.color;\n Catalog.parseDestDictionary({\n destDict: dict,\n resultObj: this.data,\n docBaseUrl: annotationGlobals.baseUrl,\n docAttachments: annotationGlobals.attachments\n });\n }\n}\nclass PopupAnnotation extends Annotation {\n constructor(params) {\n super(params);\n const {\n dict\n } = params;\n this.data.annotationType = AnnotationType.POPUP;\n this.data.noHTML = false;\n if (this.data.rect[0] === this.data.rect[2] || this.data.rect[1] === this.data.rect[3]) {\n this.data.rect = null;\n }\n let parentItem = dict.get(\"Parent\");\n if (!parentItem) {\n warn(\"Popup annotation has a missing or invalid parent annotation.\");\n return;\n }\n this.data.parentRect = lookupNormalRect(parentItem.getArray(\"Rect\"), null);\n const rt = parentItem.get(\"RT\");\n if (isName(rt, AnnotationReplyType.GROUP)) {\n parentItem = parentItem.get(\"IRT\");\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 if (!parentItem.has(\"C\")) {\n this.data.color = null;\n } else {\n this.setColor(parentItem.getArray(\"C\"));\n this.data.color = this.color;\n }\n if (!this.viewable) {\n const parentFlags = parentItem.get(\"F\");\n if (this._isViewable(parentFlags)) {\n this.setFlags(parentFlags);\n }\n }\n this.setTitle(parentItem.get(\"T\"));\n this.data.titleObj = this._title;\n this.setContents(parentItem.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n if (parentItem.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n }\n this.data.open = !!dict.get(\"Open\");\n }\n}\nclass FreeTextAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.isEditable = !this.data.noHTML;\n this.data.noHTML = false;\n const {\n evaluatorOptions,\n xref\n } = params;\n this.data.annotationType = AnnotationType.FREETEXT;\n this.setDefaultAppearance(params);\n this._hasAppearance = !!this.appearance;\n if (this._hasAppearance) {\n const {\n fontColor,\n fontSize\n } = parseAppearanceStream(this.appearance, evaluatorOptions, xref);\n this.data.defaultAppearanceData.fontColor = fontColor;\n this.data.defaultAppearanceData.fontSize = fontSize || 10;\n } else {\n this.data.defaultAppearanceData.fontSize ||= 10;\n const {\n fontColor,\n fontSize\n } = this.data.defaultAppearanceData;\n if (this._contents.str) {\n this.data.textContent = this._contents.str.split(/\\r\\n?|\\n/).map(line => line.trimEnd());\n const {\n coords,\n bbox,\n matrix\n } = FakeUnicodeFont.getFirstPositionInfo(this.rectangle, this.rotation, fontSize);\n this.data.textPosition = this._transformPoint(coords, bbox, matrix);\n }\n if (this._isOffscreenCanvasSupported) {\n const strokeAlpha = params.dict.get(\"CA\");\n const fakeUnicodeFont = new FakeUnicodeFont(xref, \"sans-serif\");\n this.appearance = fakeUnicodeFont.createAppearance(this._contents.str, this.rectangle, this.rotation, fontSize, fontColor, strokeAlpha);\n this._streams.push(this.appearance);\n } else {\n warn(\"FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.\");\n }\n }\n }\n get hasTextContent() {\n return this._hasAppearance;\n }\n static createNewDict(annotation, xref, {\n apRef,\n ap\n }) {\n const {\n color,\n fontSize,\n oldAnnotation,\n rect,\n rotation,\n user,\n value\n } = annotation;\n const freetext = oldAnnotation || new Dict(xref);\n freetext.set(\"Type\", Name.get(\"Annot\"));\n freetext.set(\"Subtype\", Name.get(\"FreeText\"));\n if (oldAnnotation) {\n freetext.set(\"M\", `D:${getModificationDate()}`);\n freetext.delete(\"RC\");\n } else {\n freetext.set(\"CreationDate\", `D:${getModificationDate()}`);\n }\n freetext.set(\"Rect\", rect);\n const da = `/Helv ${fontSize} Tf ${getPdfColor(color, true)}`;\n freetext.set(\"DA\", da);\n freetext.set(\"Contents\", stringToAsciiOrUTF16BE(value));\n freetext.set(\"F\", 4);\n freetext.set(\"Border\", [0, 0, 0]);\n freetext.set(\"Rotate\", rotation);\n if (user) {\n freetext.set(\"T\", stringToAsciiOrUTF16BE(user));\n }\n if (apRef || ap) {\n const n = new Dict(xref);\n freetext.set(\"AP\", n);\n if (apRef) {\n n.set(\"N\", apRef);\n } else {\n n.set(\"N\", ap);\n }\n }\n return freetext;\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n const {\n baseFontRef,\n evaluator,\n task\n } = params;\n const {\n color,\n fontSize,\n rect,\n rotation,\n value\n } = annotation;\n const resources = new Dict(xref);\n const font = new Dict(xref);\n if (baseFontRef) {\n font.set(\"Helv\", baseFontRef);\n } else {\n const baseFont = new Dict(xref);\n baseFont.set(\"BaseFont\", Name.get(\"Helvetica\"));\n baseFont.set(\"Type\", Name.get(\"Font\"));\n baseFont.set(\"Subtype\", Name.get(\"Type1\"));\n baseFont.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n font.set(\"Helv\", baseFont);\n }\n resources.set(\"Font\", font);\n const helv = await WidgetAnnotation._getFontData(evaluator, task, {\n fontName: \"Helv\",\n fontSize\n }, resources);\n const [x1, y1, x2, y2] = rect;\n let w = x2 - x1;\n let h = y2 - y1;\n if (rotation % 180 !== 0) {\n [w, h] = [h, w];\n }\n const lines = value.split(\"\\n\");\n const scale = fontSize / 1000;\n let totalWidth = -Infinity;\n const encodedLines = [];\n for (let line of lines) {\n const encoded = helv.encodeString(line);\n if (encoded.length > 1) {\n return null;\n }\n line = encoded.join(\"\");\n encodedLines.push(line);\n let lineWidth = 0;\n const glyphs = helv.charsToGlyphs(line);\n for (const glyph of glyphs) {\n lineWidth += glyph.width * scale;\n }\n totalWidth = Math.max(totalWidth, lineWidth);\n }\n let hscale = 1;\n if (totalWidth > w) {\n hscale = w / totalWidth;\n }\n let vscale = 1;\n const lineHeight = LINE_FACTOR * fontSize;\n const lineAscent = (LINE_FACTOR - LINE_DESCENT_FACTOR) * fontSize;\n const totalHeight = lineHeight * lines.length;\n if (totalHeight > h) {\n vscale = h / totalHeight;\n }\n const fscale = Math.min(hscale, vscale);\n const newFontSize = fontSize * fscale;\n let firstPoint, clipBox, matrix;\n switch (rotation) {\n case 0:\n matrix = [1, 0, 0, 1];\n clipBox = [rect[0], rect[1], w, h];\n firstPoint = [rect[0], rect[3] - lineAscent];\n break;\n case 90:\n matrix = [0, 1, -1, 0];\n clipBox = [rect[1], -rect[2], w, h];\n firstPoint = [rect[1], -rect[0] - lineAscent];\n break;\n case 180:\n matrix = [-1, 0, 0, -1];\n clipBox = [-rect[2], -rect[3], w, h];\n firstPoint = [-rect[2], -rect[1] - lineAscent];\n break;\n case 270:\n matrix = [0, -1, 1, 0];\n clipBox = [-rect[3], rect[0], w, h];\n firstPoint = [-rect[3], rect[2] - lineAscent];\n break;\n }\n const buffer = [\"q\", `${matrix.join(\" \")} 0 0 cm`, `${clipBox.join(\" \")} re W n`, `BT`, `${getPdfColor(color, true)}`, `0 Tc /Helv ${numberToString(newFontSize)} Tf`];\n buffer.push(`${firstPoint.join(\" \")} Td (${escapeString(encodedLines[0])}) Tj`);\n const vShift = numberToString(lineHeight);\n for (let i = 1, ii = encodedLines.length; i < ii; i++) {\n const line = encodedLines[i];\n buffer.push(`0 -${vShift} Td (${escapeString(line)}) Tj`);\n }\n buffer.push(\"ET\", \"Q\");\n const appearance = buffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Resources\", resources);\n appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, -rect[0], -rect[1]]);\n const ap = new StringStream(appearance);\n ap.dict = appearanceStreamDict;\n return ap;\n }\n}\nclass LineAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.annotationType = AnnotationType.LINE;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n const lineCoordinates = lookupRect(dict.getArray(\"L\"), [0, 0, 0, 0]);\n this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n this.setLineEndings(dict.getArray(\"LE\"));\n this.data.lineEndings = this.lineEndings;\n if (!this.appearance) {\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\n const fillAlpha = fillColor ? strokeAlpha : null;\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n const bbox = [this.data.lineCoordinates[0] - borderAdjust, this.data.lineCoordinates[1] - borderAdjust, this.data.lineCoordinates[2] + borderAdjust, this.data.lineCoordinates[3] + borderAdjust];\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n this._setDefaultAppearance({\n xref,\n extra: `${borderWidth} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`, `${lineCoordinates[2]} ${lineCoordinates[3]} l`, \"S\");\n return [points[0] - borderWidth, points[2] + borderWidth, points[7] - borderWidth, points[3] + borderWidth];\n }\n });\n }\n }\n}\nclass SquareAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.annotationType = AnnotationType.SQUARE;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n if (!this.appearance) {\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\n const fillAlpha = fillColor ? strokeAlpha : null;\n if (this.borderStyle.width === 0 && !fillColor) {\n return;\n }\n this._setDefaultAppearance({\n xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x = points[4] + this.borderStyle.width / 2;\n const y = points[5] + this.borderStyle.width / 2;\n const width = points[6] - points[4] - this.borderStyle.width;\n const height = points[3] - points[7] - 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], points[2], points[7], points[3]];\n }\n });\n }\n }\n}\nclass CircleAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.annotationType = AnnotationType.CIRCLE;\n if (!this.appearance) {\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\n const fillAlpha = fillColor ? strokeAlpha : null;\n if (this.borderStyle.width === 0 && !fillColor) {\n return;\n }\n const controlPointsDistance = 4 / 3 * Math.tan(Math.PI / (2 * 4));\n this._setDefaultAppearance({\n xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x0 = points[0] + this.borderStyle.width / 2;\n const y0 = points[1] - this.borderStyle.width / 2;\n const x1 = points[6] - this.borderStyle.width / 2;\n const y1 = points[7] + 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 buffer.push(`${xMid} ${y1} m`, `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`, `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`, `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`, `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`, \"h\");\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0], points[2], points[7], points[3]];\n }\n });\n }\n }\n}\nclass PolylineAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.annotationType = AnnotationType.POLYLINE;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n this.data.vertices = null;\n if (!(this instanceof PolygonAnnotation)) {\n this.setLineEndings(dict.getArray(\"LE\"));\n this.data.lineEndings = this.lineEndings;\n }\n const rawVertices = dict.getArray(\"Vertices\");\n if (!isNumberArray(rawVertices, null)) {\n return;\n }\n const vertices = this.data.vertices = Float32Array.from(rawVertices);\n if (!this.appearance) {\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n bbox[0] = Math.min(bbox[0], vertices[i] - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertices[i + 1] - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertices[i] + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertices[i + 1] + borderAdjust);\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n this._setDefaultAppearance({\n xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n buffer.push(`${vertices[i]} ${vertices[i + 1]} ${i === 0 ? \"m\" : \"l\"}`);\n }\n buffer.push(\"S\");\n return [points[0], points[2], points[7], points[3]];\n }\n });\n }\n }\n}\nclass PolygonAnnotation extends PolylineAnnotation {\n constructor(params) {\n super(params);\n this.data.annotationType = AnnotationType.POLYGON;\n }\n}\nclass CaretAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n this.data.annotationType = AnnotationType.CARET;\n }\n}\nclass InkAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n const {\n dict,\n xref\n } = params;\n this.data.annotationType = AnnotationType.INK;\n this.data.inkLists = [];\n this.data.isEditable = !this.data.noHTML;\n this.data.noHTML = false;\n this.data.opacity = dict.get(\"CA\") || 1;\n const rawInkLists = dict.getArray(\"InkList\");\n if (!Array.isArray(rawInkLists)) {\n return;\n }\n for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {\n if (!Array.isArray(rawInkLists[i])) {\n continue;\n }\n const inkList = new Float32Array(rawInkLists[i].length);\n this.data.inkLists.push(inkList);\n for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {\n const x = xref.fetchIfRef(rawInkLists[i][j]),\n y = xref.fetchIfRef(rawInkLists[i][j + 1]);\n if (typeof x === \"number\" && typeof y === \"number\") {\n inkList[j] = x;\n inkList[j + 1] = y;\n }\n }\n }\n if (!this.appearance) {\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n bbox[0] = Math.min(bbox[0], inkList[i] - borderAdjust);\n bbox[1] = Math.min(bbox[1], inkList[i + 1] - borderAdjust);\n bbox[2] = Math.max(bbox[2], inkList[i] + borderAdjust);\n bbox[3] = Math.max(bbox[3], inkList[i + 1] + borderAdjust);\n }\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n this._setDefaultAppearance({\n xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n buffer.push(`${inkList[i]} ${inkList[i + 1]} ${i === 0 ? \"m\" : \"l\"}`);\n }\n buffer.push(\"S\");\n }\n return [points[0], points[2], points[7], points[3]];\n }\n });\n }\n }\n static createNewDict(annotation, xref, {\n apRef,\n ap\n }) {\n const {\n oldAnnotation,\n color,\n opacity,\n paths,\n outlines,\n rect,\n rotation,\n thickness,\n user\n } = annotation;\n const ink = oldAnnotation || new Dict(xref);\n ink.set(\"Type\", Name.get(\"Annot\"));\n ink.set(\"Subtype\", Name.get(\"Ink\"));\n ink.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate()}`);\n ink.set(\"Rect\", rect);\n ink.set(\"InkList\", outlines?.points || paths.points);\n ink.set(\"F\", 4);\n ink.set(\"Rotate\", rotation);\n if (user) {\n ink.set(\"T\", stringToAsciiOrUTF16BE(user));\n }\n if (outlines) {\n ink.set(\"IT\", Name.get(\"InkHighlight\"));\n }\n const bs = new Dict(xref);\n ink.set(\"BS\", bs);\n bs.set(\"W\", thickness);\n ink.set(\"C\", Array.from(color, c => c / 255));\n ink.set(\"CA\", opacity);\n const n = new Dict(xref);\n ink.set(\"AP\", n);\n if (apRef) {\n n.set(\"N\", apRef);\n } else {\n n.set(\"N\", ap);\n }\n return ink;\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n if (annotation.outlines) {\n return this.createNewAppearanceStreamForHighlight(annotation, xref, params);\n }\n const {\n color,\n rect,\n paths,\n thickness,\n opacity\n } = annotation;\n const appearanceBuffer = [`${thickness} w 1 J 1 j`, `${getPdfColor(color, false)}`];\n if (opacity !== 1) {\n appearanceBuffer.push(\"/R0 gs\");\n }\n for (const outline of paths.lines) {\n appearanceBuffer.push(`${numberToString(outline[4])} ${numberToString(outline[5])} m`);\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n if (isNaN(outline[i])) {\n appearanceBuffer.push(`${numberToString(outline[i + 4])} ${numberToString(outline[i + 5])} l`);\n } else {\n const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6);\n appearanceBuffer.push([c1x, c1y, c2x, c2y, x, y].map(numberToString).join(\" \") + \" c\");\n }\n }\n if (outline.length === 6) {\n appearanceBuffer.push(`${numberToString(outline[4])} ${numberToString(outline[5])} l`);\n }\n }\n appearanceBuffer.push(\"S\");\n const appearance = appearanceBuffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Length\", appearance.length);\n if (opacity !== 1) {\n const resources = new Dict(xref);\n const extGState = new Dict(xref);\n const r0 = new Dict(xref);\n r0.set(\"CA\", opacity);\n r0.set(\"Type\", Name.get(\"ExtGState\"));\n extGState.set(\"R0\", r0);\n resources.set(\"ExtGState\", extGState);\n appearanceStreamDict.set(\"Resources\", resources);\n }\n const ap = new StringStream(appearance);\n ap.dict = appearanceStreamDict;\n return ap;\n }\n static async createNewAppearanceStreamForHighlight(annotation, xref, params) {\n const {\n color,\n rect,\n outlines: {\n outline\n },\n opacity\n } = annotation;\n const appearanceBuffer = [`${getPdfColor(color, true)}`, \"/R0 gs\"];\n appearanceBuffer.push(`${numberToString(outline[4])} ${numberToString(outline[5])} m`);\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n if (isNaN(outline[i])) {\n appearanceBuffer.push(`${numberToString(outline[i + 4])} ${numberToString(outline[i + 5])} l`);\n } else {\n const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6);\n appearanceBuffer.push([c1x, c1y, c2x, c2y, x, y].map(numberToString).join(\" \") + \" c\");\n }\n }\n appearanceBuffer.push(\"h f\");\n const appearance = appearanceBuffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Length\", appearance.length);\n const resources = new Dict(xref);\n const extGState = new Dict(xref);\n resources.set(\"ExtGState\", extGState);\n appearanceStreamDict.set(\"Resources\", resources);\n const r0 = new Dict(xref);\n extGState.set(\"R0\", r0);\n r0.set(\"BM\", Name.get(\"Multiply\"));\n if (opacity !== 1) {\n r0.set(\"ca\", opacity);\n r0.set(\"Type\", Name.get(\"ExtGState\"));\n }\n const ap = new StringStream(appearance);\n ap.dict = appearanceStreamDict;\n return ap;\n }\n}\nclass HighlightAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.annotationType = AnnotationType.HIGHLIGHT;\n this.data.isEditable = !this.data.noHTML;\n this.data.noHTML = false;\n this.data.opacity = dict.get(\"CA\") || 1;\n const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n if (quadPoints) {\n const resources = this.appearance?.dict.get(\"Resources\");\n if (!this.appearance || !resources?.has(\"ExtGState\")) {\n if (this.appearance) {\n warn(\"HighlightAnnotation - ignoring built-in appearance stream.\");\n }\n const fillColor = this.color ? getPdfColorArray(this.color) : [1, 1, 0];\n const fillAlpha = dict.get(\"CA\");\n this._setDefaultAppearance({\n xref,\n fillColor,\n blendMode: \"Multiply\",\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(`${points[0]} ${points[1]} m`, `${points[2]} ${points[3]} l`, `${points[6]} ${points[7]} l`, `${points[4]} ${points[5]} l`, \"f\");\n return [points[0], points[2], points[7], points[3]];\n }\n });\n }\n } else {\n this.data.popupRef = null;\n }\n }\n static createNewDict(annotation, xref, {\n apRef,\n ap\n }) {\n const {\n color,\n oldAnnotation,\n opacity,\n rect,\n rotation,\n user,\n quadPoints\n } = annotation;\n const highlight = oldAnnotation || new Dict(xref);\n highlight.set(\"Type\", Name.get(\"Annot\"));\n highlight.set(\"Subtype\", Name.get(\"Highlight\"));\n highlight.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate()}`);\n highlight.set(\"CreationDate\", `D:${getModificationDate()}`);\n highlight.set(\"Rect\", rect);\n highlight.set(\"F\", 4);\n highlight.set(\"Border\", [0, 0, 0]);\n highlight.set(\"Rotate\", rotation);\n highlight.set(\"QuadPoints\", quadPoints);\n highlight.set(\"C\", Array.from(color, c => c / 255));\n highlight.set(\"CA\", opacity);\n if (user) {\n highlight.set(\"T\", stringToAsciiOrUTF16BE(user));\n }\n if (apRef || ap) {\n const n = new Dict(xref);\n highlight.set(\"AP\", n);\n n.set(\"N\", apRef || ap);\n }\n return highlight;\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n const {\n color,\n rect,\n outlines,\n opacity\n } = annotation;\n const appearanceBuffer = [`${getPdfColor(color, true)}`, \"/R0 gs\"];\n const buffer = [];\n for (const outline of outlines) {\n buffer.length = 0;\n buffer.push(`${numberToString(outline[0])} ${numberToString(outline[1])} m`);\n for (let i = 2, ii = outline.length; i < ii; i += 2) {\n buffer.push(`${numberToString(outline[i])} ${numberToString(outline[i + 1])} l`);\n }\n buffer.push(\"h\");\n appearanceBuffer.push(buffer.join(\"\\n\"));\n }\n appearanceBuffer.push(\"f*\");\n const appearance = appearanceBuffer.join(\"\\n\");\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", rect);\n appearanceStreamDict.set(\"Length\", appearance.length);\n const resources = new Dict(xref);\n const extGState = new Dict(xref);\n resources.set(\"ExtGState\", extGState);\n appearanceStreamDict.set(\"Resources\", resources);\n const r0 = new Dict(xref);\n extGState.set(\"R0\", r0);\n r0.set(\"BM\", Name.get(\"Multiply\"));\n if (opacity !== 1) {\n r0.set(\"ca\", opacity);\n r0.set(\"Type\", Name.get(\"ExtGState\"));\n }\n const ap = new StringStream(appearance);\n ap.dict = appearanceStreamDict;\n return ap;\n }\n}\nclass UnderlineAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.annotationType = AnnotationType.UNDERLINE;\n const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n if (quadPoints) {\n if (!this.appearance) {\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n this._setDefaultAppearance({\n xref,\n extra: \"[] 0 d 0.571 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(`${points[4]} ${points[5] + 1.3} m`, `${points[6]} ${points[7] + 1.3} l`, \"S\");\n return [points[0], points[2], points[7], points[3]];\n }\n });\n }\n } else {\n this.data.popupRef = null;\n }\n }\n}\nclass SquigglyAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.annotationType = AnnotationType.SQUIGGLY;\n const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n if (quadPoints) {\n if (!this.appearance) {\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n this._setDefaultAppearance({\n xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const dy = (points[1] - points[5]) / 6;\n let shift = dy;\n let x = points[4];\n const y = points[5];\n const xEnd = points[6];\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[4], xEnd, y - 2 * dy, y + 2 * dy];\n }\n });\n }\n } else {\n this.data.popupRef = null;\n }\n }\n}\nclass StrikeOutAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n this.data.annotationType = AnnotationType.STRIKEOUT;\n const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n if (quadPoints) {\n if (!this.appearance) {\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n this._setDefaultAppearance({\n xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(`${(points[0] + points[4]) / 2} ` + `${(points[1] + points[5]) / 2} m`, `${(points[2] + points[6]) / 2} ` + `${(points[3] + points[7]) / 2} l`, \"S\");\n return [points[0], points[2], points[7], points[3]];\n }\n });\n }\n } else {\n this.data.popupRef = null;\n }\n }\n}\nclass StampAnnotation extends MarkupAnnotation {\n #savedHasOwnCanvas;\n constructor(params) {\n super(params);\n this.data.annotationType = AnnotationType.STAMP;\n this.#savedHasOwnCanvas = this.data.hasOwnCanvas = this.data.noRotate;\n this.data.isEditable = !this.data.noHTML;\n this.data.noHTML = false;\n }\n mustBeViewedWhenEditing(isEditing, modifiedIds = null) {\n if (isEditing) {\n if (!this.data.isEditable) {\n return false;\n }\n this.#savedHasOwnCanvas = this.data.hasOwnCanvas;\n this.data.hasOwnCanvas = true;\n return true;\n }\n this.data.hasOwnCanvas = this.#savedHasOwnCanvas;\n return !modifiedIds?.has(this.data.id);\n }\n static async createImage(bitmap, xref) {\n const {\n width,\n height\n } = bitmap;\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\", {\n alpha: true\n });\n ctx.drawImage(bitmap, 0, 0);\n const data = ctx.getImageData(0, 0, width, height).data;\n const buf32 = new Uint32Array(data.buffer);\n const hasAlpha = buf32.some(FeatureTest.isLittleEndian ? x => x >>> 24 !== 0xff : x => (x & 0xff) !== 0xff);\n if (hasAlpha) {\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, width, height);\n ctx.drawImage(bitmap, 0, 0);\n }\n const jpegBufferPromise = canvas.convertToBlob({\n type: \"image/jpeg\",\n quality: 1\n }).then(blob => blob.arrayBuffer());\n const xobjectName = Name.get(\"XObject\");\n const imageName = Name.get(\"Image\");\n const image = new Dict(xref);\n image.set(\"Type\", xobjectName);\n image.set(\"Subtype\", imageName);\n image.set(\"BitsPerComponent\", 8);\n image.set(\"ColorSpace\", Name.get(\"DeviceRGB\"));\n image.set(\"Filter\", Name.get(\"DCTDecode\"));\n image.set(\"BBox\", [0, 0, width, height]);\n image.set(\"Width\", width);\n image.set(\"Height\", height);\n let smaskStream = null;\n if (hasAlpha) {\n const alphaBuffer = new Uint8Array(buf32.length);\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = buf32.length; i < ii; i++) {\n alphaBuffer[i] = buf32[i] >>> 24;\n }\n } else {\n for (let i = 0, ii = buf32.length; i < ii; i++) {\n alphaBuffer[i] = buf32[i] & 0xff;\n }\n }\n const smask = new Dict(xref);\n smask.set(\"Type\", xobjectName);\n smask.set(\"Subtype\", imageName);\n smask.set(\"BitsPerComponent\", 8);\n smask.set(\"ColorSpace\", Name.get(\"DeviceGray\"));\n smask.set(\"Width\", width);\n smask.set(\"Height\", height);\n smaskStream = new Stream(alphaBuffer, 0, 0, smask);\n }\n const imageStream = new Stream(await jpegBufferPromise, 0, 0, image);\n return {\n imageStream,\n smaskStream,\n width,\n height\n };\n }\n static createNewDict(annotation, xref, {\n apRef,\n ap\n }) {\n const {\n oldAnnotation,\n rect,\n rotation,\n user\n } = annotation;\n const stamp = oldAnnotation || new Dict(xref);\n stamp.set(\"Type\", Name.get(\"Annot\"));\n stamp.set(\"Subtype\", Name.get(\"Stamp\"));\n stamp.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate()}`);\n stamp.set(\"Rect\", rect);\n stamp.set(\"F\", 4);\n stamp.set(\"Border\", [0, 0, 0]);\n stamp.set(\"Rotate\", rotation);\n if (user) {\n stamp.set(\"T\", stringToAsciiOrUTF16BE(user));\n }\n if (apRef || ap) {\n const n = new Dict(xref);\n stamp.set(\"AP\", n);\n if (apRef) {\n n.set(\"N\", apRef);\n } else {\n n.set(\"N\", ap);\n }\n }\n return stamp;\n }\n static async createNewAppearanceStream(annotation, xref, params) {\n if (annotation.oldAnnotation) {\n return null;\n }\n const {\n rotation\n } = annotation;\n const {\n imageRef,\n width,\n height\n } = params.image;\n const resources = new Dict(xref);\n const xobject = new Dict(xref);\n resources.set(\"XObject\", xobject);\n xobject.set(\"Im0\", imageRef);\n const appearance = `q ${width} 0 0 ${height} 0 0 cm /Im0 Do Q`;\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", [0, 0, width, height]);\n appearanceStreamDict.set(\"Resources\", resources);\n if (rotation) {\n const matrix = getRotationMatrix(rotation, width, height);\n appearanceStreamDict.set(\"Matrix\", matrix);\n }\n const ap = new StringStream(appearance);\n ap.dict = appearanceStreamDict;\n return ap;\n }\n}\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n const {\n dict,\n xref\n } = params;\n const file = new FileSpec(dict.get(\"FS\"), xref);\n this.data.annotationType = AnnotationType.FILEATTACHMENT;\n this.data.hasOwnCanvas = this.data.noRotate;\n this.data.noHTML = false;\n this.data.file = file.serializable;\n const name = dict.get(\"Name\");\n this.data.name = name instanceof Name ? stringToPDFString(name.name) : \"PushPin\";\n const fillAlpha = dict.get(\"ca\");\n this.data.fillAlpha = typeof fillAlpha === \"number\" && fillAlpha >= 0 && fillAlpha <= 1 ? fillAlpha : null;\n }\n}\n\n;// ./src/core/decrypt_stream.js\n\nconst chunkSize = 512;\nclass DecryptStream extends DecodeStream {\n constructor(str, maybeLength, decrypt) {\n super(maybeLength);\n this.str = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n this.nextChunk = null;\n this.initialized = false;\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?.length) {\n this.eof = true;\n return;\n }\n this.nextChunk = this.str.getBytes(chunkSize);\n const hasMoreData = this.nextChunk?.length > 0;\n const decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n const bufferLength = this.bufferLength,\n newLength = bufferLength + chunk.length,\n buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n}\n\n;// ./src/core/crypto.js\n\n\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 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 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 decryptBlock(data) {\n return this.encryptBlock(data);\n }\n encrypt(data) {\n return this.encryptBlock(data);\n }\n}\nconst calculateMD5 = function calculateMD5Closure() {\n const r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n const k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]);\n function hash(data, offset, length) {\n let h0 = 1732584193,\n h1 = -271733879,\n h2 = -1732584194,\n h3 = 271733878;\n const paddedLength = length + 72 & ~63;\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] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | 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 return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);\n }\n return hash;\n}();\nclass Word64 {\n constructor(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n and(word) {\n this.high &= word.high;\n this.low &= word.low;\n }\n xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n }\n or(word) {\n this.high |= word.high;\n this.low |= word.low;\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 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 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 not() {\n this.high = ~this.high;\n this.low = ~this.low;\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 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 assign(word) {\n this.high = word.high;\n this.low = word.low;\n }\n}\nconst calculateSHA256 = function calculateSHA256Closure() {\n function rotr(x, n) {\n return x >>> n | x << 32 - n;\n }\n function ch(x, y, z) {\n return x & y ^ ~x & z;\n }\n function maj(x, y, z) {\n return x & y ^ x & z ^ y & z;\n }\n function sigma(x) {\n return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n }\n function sigmaPrime(x) {\n return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n }\n function littleSigma(x) {\n return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;\n }\n function littleSigmaPrime(x) {\n return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;\n }\n const k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n function hash(data, offset, length) {\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 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 (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n i += 4;\n }\n for (j = 16; j < 64; ++j) {\n w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 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 return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);\n }\n return hash;\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 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 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 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 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 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 const k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n function hash(data, offset, length, mode384 = false) {\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 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 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 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 for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | 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 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 sigma(t2, a, tmp2);\n maj(tmp1, a, b, c, tmp2);\n t2.add(tmp1);\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 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 return hash;\n}();\nfunction calculateSHA384(data, offset, length) {\n return calculateSHA512(data, offset, length, true);\n}\nclass NullCipher {\n decryptBlock(data) {\n return data;\n }\n encrypt(data) {\n return data;\n }\n}\nclass AESBaseCipher {\n constructor() {\n this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);\n this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);\n this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);\n this._mixCol = new Uint8Array(256);\n for (let i = 0; i < 256; i++) {\n this._mixCol[i] = i < 128 ? i << 1 : i << 1 ^ 0x1b;\n }\n this.buffer = new Uint8Array(16);\n this.bufferPosition = 0;\n }\n _expandKey(cipherKey) {\n unreachable(\"Cannot call `_expandKey` on the base class\");\n }\n _decrypt(input, key) {\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\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 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 state[j] = this._inv_s[state[j]];\n }\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\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 = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ 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 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 state[j] = this._inv_s[state[j]];\n state[j] ^= key[j];\n }\n return state;\n }\n _encrypt(input, key) {\n const s = this._s;\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n for (let j = 0; j < 16; ++j) {\n state[j] ^= key[j];\n }\n for (let i = 1; i < this._cyclesOfRepetition; i++) {\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\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 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 for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n }\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\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 for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n return state;\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 for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n const plain = this._decrypt(buffer, this._key);\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 this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n let outputLength = 16 * result.length;\n if (finalize) {\n const lastBlock = result.at(-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 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 decryptBlock(data, finalize, iv = null) {\n const sourceLength = data.length;\n const buffer = this.buffer;\n let bufferLength = this.bufferPosition;\n if (iv) {\n this.iv = iv;\n } else {\n for (let i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {\n buffer[bufferLength] = data[i];\n }\n if (bufferLength < 16) {\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 this.decryptBlock = this._decryptBlock2;\n return this.decryptBlock(data, finalize);\n }\n encrypt(data, iv) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\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 for (let j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\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 this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\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}\nclass AES128Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n this._cyclesOfRepetition = 10;\n this._keySize = 160;\n this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);\n this._key = this._expandKey(key);\n }\n _expandKey(cipherKey) {\n const b = 176;\n const s = this._s;\n const rcon = this._rcon;\n const result = new Uint8Array(b);\n result.set(cipherKey);\n for (let j = 16, i = 1; j < b; ++i) {\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 t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\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}\nclass AES256Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n this._cyclesOfRepetition = 14;\n this._keySize = 224;\n this._key = this._expandKey(key);\n }\n _expandKey(cipherKey) {\n const b = 240;\n const s = this._s;\n const result = new Uint8Array(b);\n result.set(cipherKey);\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 t1 = result[j - 3];\n t2 = result[j - 2];\n t3 = result[j - 1];\n t4 = result[j - 4];\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n t1 ^= r;\n if ((r <<= 1) >= 256) {\n r = (r ^ 0x1b) & 0xff;\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}\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 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 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 getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\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}\nclass PDF20 {\n _hash(password, input, userBytes) {\n let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n let e = [0];\n let i = 0;\n while (i < 64 || e.at(-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 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 const cipher = new AES128Cipher(k.subarray(0, 16));\n e = cipher.encrypt(k1, k.subarray(16, 32));\n const remainder = e.slice(0, 16).reduce((a, b) => a + b, 0) % 3;\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 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 = this._hash(password, hashData, userBytes);\n return isArrayEqual(result, ownerPassword);\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 = this._hash(password, hashData, []);\n return isArrayEqual(result, userPassword);\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 = this._hash(password, hashData, userBytes);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\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 const key = this._hash(password, hashData, []);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n}\nclass CipherTransform {\n constructor(stringCipherConstructor, streamCipherConstructor) {\n this.StringCipherConstructor = stringCipherConstructor;\n this.StreamCipherConstructor = streamCipherConstructor;\n }\n createStream(stream, length) {\n const cipher = new this.StreamCipherConstructor();\n return new DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {\n return cipher.decryptBlock(data, finalize);\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 encryptString(s) {\n const cipher = new this.StringCipherConstructor();\n if (cipher instanceof AESBaseCipher) {\n const strLen = s.length;\n const pad = 16 - strLen % 16;\n s += String.fromCharCode(pad).repeat(pad);\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 let data = stringToBytes(s);\n data = cipher.encrypt(data, iv);\n const buf = new Uint8Array(16 + data.length);\n buf.set(iv);\n buf.set(data, 16);\n return bytesToString(buf);\n }\n let data = stringToBytes(s);\n data = cipher.encrypt(data);\n return bytesToString(data);\n }\n}\nclass CipherTransformFactory {\n static #defaultPasswordBytes = new Uint8Array([0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a]);\n #createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {\n if (password) {\n const passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n const pdfAlgorithm = revision === 6 ? new PDF20() : new PDF17();\n if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {\n return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {\n return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);\n }\n return null;\n }\n #prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {\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++] = CipherTransformFactory.#defaultPasswordBytes[j++];\n }\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 if (revision >= 3) {\n for (i = 0; i < 32; ++i) {\n hashData[i] = CipherTransformFactory.#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(CipherTransformFactory.#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 #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++] = CipherTransformFactory.#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 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 #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 #buildCipherConstructor(cf, name, num, gen, key) {\n if (!(name instanceof Name)) {\n throw new FormatError(\"Invalid crypt filter name.\");\n }\n const self = this;\n const cryptFilter = cf.get(name.name);\n const cfm = cryptFilter?.get(\"CFM\");\n if (!cfm || cfm.name === \"None\") {\n return function () {\n return new NullCipher();\n };\n }\n if (cfm.name === \"V2\") {\n return function () {\n return new ARCFourCipher(self.#buildObjectKey(num, gen, key, false));\n };\n }\n if (cfm.name === \"AESV2\") {\n return function () {\n return new AES128Cipher(self.#buildObjectKey(num, gen, key, true));\n };\n }\n if (cfm.name === \"AESV3\") {\n return function () {\n return new AES256Cipher(key);\n };\n }\n throw new FormatError(\"Unknown crypto method\");\n }\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 (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {\n throw new FormatError(\"unsupported encryption algorithm\");\n }\n this.algorithm = algorithm;\n let keyLength = dict.get(\"Length\");\n if (!keyLength) {\n if (algorithm <= 3) {\n keyLength = 40;\n } else {\n const cfDict = dict.get(\"CF\");\n const streamCryptoName = dict.get(\"StmF\");\n if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\n cfDict.suppressEncryption = true;\n const handlerDict = cfDict.get(streamCryptoName.name);\n keyLength = handlerDict?.get(\"Length\") || 128;\n if (keyLength < 40) {\n keyLength <<= 3;\n }\n }\n }\n }\n if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n throw new FormatError(\"invalid key length\");\n }\n const ownerBytes = stringToBytes(dict.get(\"O\")),\n userBytes = stringToBytes(dict.get(\"U\"));\n const ownerPassword = ownerBytes.subarray(0, 32);\n const userPassword = userBytes.subarray(0, 32);\n const flags = dict.get(\"P\");\n const revision = dict.get(\"R\");\n const encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get(\"EncryptMetadata\") !== false;\n this.encryptMetadata = encryptMetadata;\n const fileIdBytes = stringToBytes(fileId);\n let passwordBytes;\n if (password) {\n if (revision === 6) {\n try {\n password = utf8StringToString(password);\n } catch {\n warn(\"CipherTransformFactory: Unable to convert UTF8 encoded password.\");\n }\n }\n passwordBytes = stringToBytes(password);\n }\n let encryptionKey;\n if (algorithm !== 5) {\n encryptionKey = this.#prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n } else {\n const ownerValidationSalt = ownerBytes.subarray(32, 40);\n const ownerKeySalt = ownerBytes.subarray(40, 48);\n const uBytes = userBytes.subarray(0, 48);\n const userValidationSalt = userBytes.subarray(32, 40);\n const userKeySalt = userBytes.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 = this.#createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);\n }\n if (!encryptionKey && !password) {\n throw new PasswordException(\"No password given\", PasswordResponses.NEED_PASSWORD);\n } else if (!encryptionKey && password) {\n const decodedPassword = this.#decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);\n encryptionKey = this.#prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n }\n if (!encryptionKey) {\n throw new PasswordException(\"Incorrect Password\", PasswordResponses.INCORRECT_PASSWORD);\n }\n this.encryptionKey = encryptionKey;\n if (algorithm >= 4) {\n const cf = dict.get(\"CF\");\n if (cf instanceof Dict) {\n cf.suppressEncryption = true;\n }\n this.cf = cf;\n this.stmf = dict.get(\"StmF\") || Name.get(\"Identity\");\n this.strf = dict.get(\"StrF\") || Name.get(\"Identity\");\n this.eff = dict.get(\"EFF\") || this.stmf;\n }\n }\n createCipherTransform(num, gen) {\n if (this.algorithm === 4 || this.algorithm === 5) {\n return new CipherTransform(this.#buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey), this.#buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey));\n }\n const key = this.#buildObjectKey(num, gen, this.encryptionKey, false);\n const cipherConstructor = function () {\n return new ARCFourCipher(key);\n };\n return new CipherTransform(cipherConstructor, cipherConstructor);\n }\n}\n\n;// ./src/core/dataset_reader.js\n\n\n\nfunction decodeString(str) {\n try {\n return stringToUTF8String(str);\n } catch (ex) {\n warn(`UTF-8 decoding failed: \"${ex}\".`);\n return str;\n }\n}\nclass DatasetXMLParser extends SimpleXMLParser {\n constructor(options) {\n super(options);\n this.node = null;\n }\n onEndElement(name) {\n const node = super.onEndElement(name);\n if (node && name === \"xfa:datasets\") {\n this.node = node;\n throw new Error(\"Aborting DatasetXMLParser.\");\n }\n }\n}\nclass DatasetReader {\n constructor(data) {\n if (data.datasets) {\n this.node = new SimpleXMLParser({\n hasAttributes: true\n }).parseFromString(data.datasets).documentElement;\n } else {\n const parser = new DatasetXMLParser({\n hasAttributes: true\n });\n try {\n parser.parseFromString(data[\"xdp:xdp\"]);\n } catch {}\n this.node = parser.node;\n }\n }\n getValue(path) {\n if (!this.node || !path) {\n return \"\";\n }\n const node = this.node.searchNode(parseXFAPath(path), 0);\n if (!node) {\n return \"\";\n }\n const first = node.firstChild;\n if (first?.nodeName === \"value\") {\n return node.children.map(child => decodeString(child.textContent));\n }\n return decodeString(node.textContent);\n }\n}\n\n;// ./src/core/xref.js\n\n\n\n\n\n\nclass XRef {\n #firstXRefStmPos = null;\n constructor(stream, pdfManager) {\n this.stream = stream;\n this.pdfManager = pdfManager;\n this.entries = [];\n this._xrefStms = new Set();\n this._cacheMap = new Map();\n this._pendingRefs = new RefSet();\n this._newPersistentRefNum = null;\n this._newTemporaryRefNum = null;\n this._persistentRefsCache = null;\n }\n getNewPersistentRef(obj) {\n if (this._newPersistentRefNum === null) {\n this._newPersistentRefNum = this.entries.length || 1;\n }\n const num = this._newPersistentRefNum++;\n this._cacheMap.set(num, obj);\n return Ref.get(num, 0);\n }\n getNewTemporaryRef() {\n if (this._newTemporaryRefNum === null) {\n this._newTemporaryRefNum = this.entries.length || 1;\n if (this._newPersistentRefNum) {\n this._persistentRefsCache = new Map();\n for (let i = this._newTemporaryRefNum; i < this._newPersistentRefNum; i++) {\n this._persistentRefsCache.set(i, this._cacheMap.get(i));\n this._cacheMap.delete(i);\n }\n }\n }\n return Ref.get(this._newTemporaryRefNum++, 0);\n }\n resetNewTemporaryRef() {\n this._newTemporaryRefNum = null;\n if (this._persistentRefsCache) {\n for (const [num, obj] of this._persistentRefsCache) {\n this._cacheMap.set(num, obj);\n }\n }\n this._persistentRefsCache = null;\n }\n setStartXRef(startXRef) {\n this.startXRefQueue = [startXRef];\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 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?.length ? ids[0] : \"\";\n encrypt.suppressEncryption = true;\n this.encrypt = new CipherTransformFactory(encrypt, fileId, this.pdfManager.password);\n }\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 if (!recoveryMode) {\n throw new XRefParseException();\n }\n throw new InvalidPDFException(\"Invalid Root reference.\");\n }\n processXRefTable(parser) {\n if (!(\"tableState\" in this)) {\n this.tableState = {\n entryNum: 0,\n streamPos: parser.lexer.stream.pos,\n parserBuf1: parser.buf1,\n parserBuf2: parser.buf2\n };\n }\n const obj = this.readXRefTable(parser);\n if (!isCmd(obj, \"trailer\")) {\n throw new FormatError(\"Invalid XRef table: could not find trailer dictionary\");\n }\n let dict = parser.getObj();\n if (!(dict instanceof Dict) && dict.dict) {\n dict = dict.dict;\n }\n if (!(dict instanceof Dict)) {\n throw new FormatError(\"Invalid XRef table: could not parse trailer dictionary\");\n }\n delete this.tableState;\n return dict;\n }\n readXRefTable(parser) {\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 let obj;\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 let first = tableState.firstEntryNum;\n const count = tableState.entryCount;\n if (!Number.isInteger(first) || !Number.isInteger(count)) {\n throw new FormatError(\"Invalid XRef table: wrong types in subsection header\");\n }\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 const entry = {};\n entry.offset = parser.getObj();\n entry.gen = parser.getObj();\n const type = parser.getObj();\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 if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) {\n throw new FormatError(`Invalid entry in XRef subsection: ${first}, ${count}`);\n }\n if (i === 0 && entry.free && first === 1) {\n first = 0;\n }\n if (!this.entries[i + first]) {\n this.entries[i + first] = entry;\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 if (this.entries[0] && !this.entries[0].free) {\n throw new FormatError(\"Invalid XRef table: unexpected first object\");\n }\n return obj;\n }\n processXRefStream(stream) {\n if (!(\"streamState\" in this)) {\n const {\n dict,\n pos\n } = stream;\n const byteWidths = dict.get(\"W\");\n const range = dict.get(\"Index\") || [0, dict.get(\"Size\")];\n this.streamState = {\n entryRanges: range,\n byteWidths,\n entryNum: 0,\n streamPos: pos\n };\n }\n this.readXRefStream(stream);\n delete this.streamState;\n return stream.dict;\n }\n readXRefStream(stream) {\n const streamState = this.streamState;\n stream.pos = streamState.streamPos;\n const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] = streamState.byteWidths;\n const entryRanges = streamState.entryRanges;\n while (entryRanges.length > 0) {\n const [first, n] = entryRanges;\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n }\n if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) {\n throw new FormatError(`Invalid XRef entry fields length: ${first}, ${n}`);\n }\n for (let i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\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 (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 streamState.entryNum = 0;\n streamState.streamPos = stream.pos;\n entryRanges.splice(0, 2);\n }\n }\n indexObjects() {\n const TAB = 0x9,\n LF = 0xa,\n CR = 0xd,\n SPACE = 0x20;\n const PERCENT = 0x25,\n LT = 0x3c;\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 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;\n }\n offset++;\n skipped++;\n }\n return skipped;\n }\n const gEndobjRegExp = /\\b(endobj|\\d+\\s+\\d+\\s+obj|xref|trailer\\s*<<)\\b/g;\n const gStartxrefRegExp = /\\b(startxref|\\d+\\s+\\d+\\s+obj)\\b/g;\n const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n const startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]);\n const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n this.entries.length = 0;\n this._cacheMap.clear();\n const stream = this.stream;\n stream.pos = 0;\n const buffer = stream.getBytes(),\n bufferStr = bytesToString(buffer),\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 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 (token.startsWith(\"xref\") && (token.length === 4 || /\\s/.test(token[4]))) {\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 const startPos = position + token.length;\n let contentLength,\n updateEntries = false;\n if (!this.entries[num]) {\n updateEntries = true;\n } else if (this.entries[num].gen === gen) {\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 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 gEndobjRegExp.lastIndex = startPos;\n const match = gEndobjRegExp.exec(bufferStr);\n if (match) {\n const endPos = gEndobjRegExp.lastIndex + 1;\n contentLength = endPos - position;\n if (match[1] !== \"endobj\") {\n warn(`indexObjects: Found \"${match[1]}\" inside of another \"obj\", ` + 'caused by missing \"endobj\" -- trying to recover.');\n contentLength -= match[1].length + 1;\n }\n } else {\n contentLength = length - position;\n }\n const content = buffer.subarray(position, position + contentLength);\n const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n xrefStms.push(position - stream.start);\n this._xrefStms.add(position - stream.start);\n }\n position += contentLength;\n } else if (token.startsWith(\"trailer\") && (token.length === 7 || /\\s/.test(token[7]))) {\n trailers.push(position);\n const startPos = position + token.length;\n let contentLength;\n gStartxrefRegExp.lastIndex = startPos;\n const match = gStartxrefRegExp.exec(bufferStr);\n if (match) {\n const endPos = gStartxrefRegExp.lastIndex + 1;\n contentLength = endPos - position;\n if (match[1] !== \"startxref\") {\n warn(`indexObjects: Found \"${match[1]}\" after \"trailer\", ` + 'caused by missing \"startxref\" -- trying to recover.');\n contentLength -= match[1].length + 1;\n }\n } else {\n contentLength = length - position;\n }\n position += contentLength;\n } else {\n position += token.length + 1;\n }\n }\n for (const xrefStm of xrefStms) {\n this.startXRefQueue.push(xrefStm);\n this.readXRef(true);\n }\n const trailerDicts = [];\n let isEncrypted = false;\n for (const trailer of trailers) {\n stream.pos = trailer;\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 const dict = parser.getObj();\n if (!(dict instanceof Dict)) {\n continue;\n }\n trailerDicts.push(dict);\n if (dict.has(\"Encrypt\")) {\n isEncrypted = true;\n }\n }\n let trailerDict, trailerError;\n for (const dict of [...trailerDicts, \"genFallback\", ...trailerDicts]) {\n if (dict === \"genFallback\") {\n if (!trailerError) {\n break;\n }\n this._generationFallback = true;\n continue;\n }\n let validPagesDict = false;\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 validPagesDict = true;\n }\n } catch (ex) {\n trailerError = ex;\n continue;\n }\n if (validPagesDict && (!isEncrypted || dict.has(\"Encrypt\")) && dict.has(\"ID\")) {\n return dict;\n }\n trailerDict = dict;\n }\n if (trailerDict) {\n return trailerDict;\n }\n if (this.topDict) {\n return this.topDict;\n }\n if (!trailerDicts.length) {\n for (const [num, entry] of this.entries.entries()) {\n if (!entry) {\n continue;\n }\n const ref = Ref.get(num, entry.gen);\n let obj;\n try {\n obj = this.fetch(ref);\n } catch {\n continue;\n }\n if (obj instanceof BaseStream) {\n obj = obj.dict;\n }\n if (obj instanceof Dict && obj.has(\"Root\")) {\n return obj;\n }\n }\n }\n throw new InvalidPDFException(\"Invalid PDF structure.\");\n }\n readXRef(recoveryMode = false) {\n const stream = this.stream;\n const startXRefParsedCache = new Set();\n while (this.startXRefQueue.length) {\n try {\n const startXRef = this.startXRefQueue[0];\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 stream.pos = startXRef + stream.start;\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 if (isCmd(obj, \"xref\")) {\n dict = this.processXRefTable(parser);\n if (!this.topDict) {\n this.topDict = dict;\n }\n obj = dict.get(\"XRefStm\");\n if (Number.isInteger(obj) && !this._xrefStms.has(obj)) {\n this._xrefStms.add(obj);\n this.startXRefQueue.push(obj);\n this.#firstXRefStmPos ??= obj;\n }\n } else if (Number.isInteger(obj)) {\n if (!Number.isInteger(parser.getObj()) || !isCmd(parser.getObj(), \"obj\") || !((obj = parser.getObj()) instanceof BaseStream)) {\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 obj = dict.get(\"Prev\");\n if (Number.isInteger(obj)) {\n this.startXRefQueue.push(obj);\n } else if (obj instanceof Ref) {\n this.startXRefQueue.push(obj.num);\n }\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 if (this.topDict) {\n return this.topDict;\n }\n if (recoveryMode) {\n return undefined;\n }\n throw new XRefParseException();\n }\n get lastXRefStreamPos() {\n return this.#firstXRefStmPos ?? (this._xrefStms.size > 0 ? Math.max(...this._xrefStms) : null);\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 fetchIfRef(obj, suppressEncryption = false) {\n if (obj instanceof Ref) {\n return this.fetch(obj, suppressEncryption);\n }\n return obj;\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 const cacheEntry = this._cacheMap.get(num);\n if (cacheEntry !== undefined) {\n if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n cacheEntry.objId = ref.toString();\n }\n return cacheEntry;\n }\n let xrefEntry = this.getEntry(num);\n if (xrefEntry === null) {\n this._cacheMap.set(num, xrefEntry);\n return xrefEntry;\n }\n if (this._pendingRefs.has(ref)) {\n this._pendingRefs.remove(ref);\n warn(`Ignoring circular reference: ${ref}.`);\n return CIRCULAR_REF;\n }\n this._pendingRefs.put(ref);\n try {\n xrefEntry = xrefEntry.uncompressed ? this.fetchUncompressed(ref, xrefEntry, suppressEncryption) : this.fetchCompressed(ref, xrefEntry, suppressEncryption);\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 fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n const gen = ref.gen;\n let num = ref.num;\n if (xrefEntry.gen !== gen) {\n const msg = `Inconsistent generation in XRef: ${ref}`;\n if (this._generationFallback && xrefEntry.gen < gen) {\n warn(msg);\n return this.fetchUncompressed(Ref.get(num, xrefEntry.gen), xrefEntry, suppressEncryption);\n }\n throw new XRefEntryException(msg);\n }\n const stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start);\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 if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (obj3.cmd !== \"obj\") {\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 xrefEntry = this.encrypt && !suppressEncryption ? parser.getObj(this.encrypt.createCipherTransform(num, gen)) : parser.getObj();\n if (!(xrefEntry instanceof BaseStream)) {\n this._cacheMap.set(num, xrefEntry);\n }\n return xrefEntry;\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 for (let i = 0; i < n; ++i) {\n const num = parser.getObj();\n if (!Number.isInteger(num)) {\n throw new FormatError(`invalid object number in the ObjStm stream: ${num}`);\n }\n const offset = parser.getObj();\n if (!Number.isInteger(offset)) {\n throw new FormatError(`invalid object offset in the ObjStm stream: ${offset}`);\n }\n nums[i] = num;\n offsets[i] = offset;\n }\n const start = (stream.start || 0) + first;\n const entries = new Array(n);\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(stream.makeSubStream(start + offsets[i], length, stream.dict)),\n xref: this,\n allowStreams: true\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 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 async fetchIfRefAsync(obj, suppressEncryption) {\n if (obj instanceof Ref) {\n return this.fetchAsync(obj, suppressEncryption);\n }\n return obj;\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 getCatalogObj() {\n return this.root;\n }\n}\n\n;// ./src/core/document.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\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 systemFontCache,\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.systemFontCache = systemFontCache;\n this.nonBlendModesSet = nonBlendModesSet;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.resourcesPromise = null;\n this.xfaFactory = xfaFactory;\n const idCounters = {\n obj: 0\n };\n this._localIdFactory = class extends globalIdFactory {\n static createObjId() {\n return `p${pageIndex}_${++idCounters.obj}`;\n }\n static getPageObjId() {\n return `p${ref.toString()}`;\n }\n };\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({\n xref: this.xref,\n dictArray: value\n });\n }\n get content() {\n return this.pageDict.getArray(\"Contents\");\n }\n get resources() {\n const resources = this._getInheritableProperty(\"Resources\");\n return shadow(this, \"resources\", resources instanceof Dict ? resources : Dict.empty);\n }\n _getBoundingBox(name) {\n if (this.xfaData) {\n return this.xfaData.bbox;\n }\n const box = lookupNormalRect(this._getInheritableProperty(name, true), null);\n if (box) {\n if (box[2] - box[0] > 0 && box[3] - box[1] > 0) {\n return box;\n }\n warn(`Empty, or invalid, /${name} entry.`);\n }\n return null;\n }\n get mediaBox() {\n return shadow(this, \"mediaBox\", this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX);\n }\n get cropBox() {\n return shadow(this, \"cropBox\", this._getBoundingBox(\"CropBox\") || this.mediaBox);\n }\n get userUnit() {\n const obj = this.pageDict.get(\"UserUnit\");\n return shadow(this, \"userUnit\", typeof obj === \"number\" && obj > 0 ? obj : 1.0);\n }\n get view() {\n const {\n cropBox,\n mediaBox\n } = this;\n if (cropBox !== mediaBox && !isArrayEqual(cropBox, mediaBox)) {\n const box = Util.intersect(cropBox, mediaBox);\n if (box && box[2] - box[0] > 0 && box[3] - box[1] > 0) {\n return shadow(this, \"view\", box);\n }\n warn(\"Empty /CropBox and /MediaBox intersection.\");\n }\n return shadow(this, \"view\", mediaBox);\n }\n get rotate() {\n let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n if (rotate % 90 !== 0) {\n rotate = 0;\n } else if (rotate >= 360) {\n rotate %= 360;\n } else if (rotate < 0) {\n rotate = (rotate % 360 + 360) % 360;\n }\n return shadow(this, \"rotate\", rotate);\n }\n _onSubStreamError(reason, objId) {\n if (this.evaluatorOptions.ignoreErrors) {\n warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n return;\n }\n throw reason;\n }\n getContentStream() {\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(content, this._onSubStreamError.bind(this));\n }\n return new NullStream();\n });\n }\n get xfaData() {\n return shadow(this, \"xfaData\", this.xfaFactory ? {\n bbox: this.xfaFactory.getBoundingBox(this.pageIndex)\n } : null);\n }\n async #replaceIdByRef(annotations, deletedAnnotations, existingAnnotations) {\n const promises = [];\n for (const annotation of annotations) {\n if (annotation.id) {\n const ref = Ref.fromString(annotation.id);\n if (!ref) {\n warn(`A non-linked annotation cannot be modified: ${annotation.id}`);\n continue;\n }\n if (annotation.deleted) {\n deletedAnnotations.put(ref, ref);\n if (annotation.popupRef) {\n const popupRef = Ref.fromString(annotation.popupRef);\n if (popupRef) {\n deletedAnnotations.put(popupRef, popupRef);\n }\n }\n continue;\n }\n existingAnnotations?.put(ref);\n annotation.ref = ref;\n promises.push(this.xref.fetchAsync(ref).then(obj => {\n if (obj instanceof Dict) {\n annotation.oldAnnotation = obj.clone();\n }\n }, () => {\n warn(`Cannot fetch \\`oldAnnotation\\` for: ${ref}.`);\n }));\n delete annotation.id;\n }\n }\n await Promise.all(promises);\n }\n async saveNewAnnotations(handler, task, annotations, imagePromises, changes) {\n if (this.xfaFactory) {\n throw new Error(\"XFA: Cannot save new annotations.\");\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 systemFontCache: this.systemFontCache,\n options: this.evaluatorOptions\n });\n const deletedAnnotations = new RefSetCache();\n const existingAnnotations = new RefSet();\n await this.#replaceIdByRef(annotations, deletedAnnotations, existingAnnotations);\n const pageDict = this.pageDict;\n const annotationsArray = this.annotations.filter(a => !(a instanceof Ref && deletedAnnotations.has(a)));\n const newData = await AnnotationFactory.saveNewAnnotations(partialEvaluator, task, annotations, imagePromises, changes);\n for (const {\n ref\n } of newData.annotations) {\n if (ref instanceof Ref && !existingAnnotations.has(ref)) {\n annotationsArray.push(ref);\n }\n }\n const dict = pageDict.clone();\n dict.set(\"Annots\", annotationsArray);\n changes.put(this.ref, {\n data: dict\n });\n for (const deletedRef of deletedAnnotations) {\n changes.put(deletedRef, {\n data: null\n });\n }\n }\n save(handler, task, annotationStorage, changes) {\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 systemFontCache: this.systemFontCache,\n options: this.evaluatorOptions\n });\n return this._parsedAnnotations.then(function (annotations) {\n const promises = [];\n for (const annotation of annotations) {\n promises.push(annotation.save(partialEvaluator, task, annotationStorage, changes).catch(function (reason) {\n warn(\"save - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n return null;\n }));\n }\n return Promise.all(promises);\n });\n }\n loadResources(keys) {\n this.resourcesPromise ||= this.pdfManager.ensure(this, \"resources\");\n return this.resourcesPromise.then(() => {\n const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n return objectLoader.load();\n });\n }\n getOperatorList({\n handler,\n sink,\n task,\n intent,\n cacheKey,\n annotationStorage = null,\n modifiedIds = null\n }) {\n const contentStreamPromise = this.getContentStream();\n const resourcesPromise = this.loadResources([\"ColorSpace\", \"ExtGState\", \"Font\", \"Pattern\", \"Properties\", \"Shading\", \"XObject\"]);\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 systemFontCache: this.systemFontCache,\n options: this.evaluatorOptions\n });\n const newAnnotsByPage = !this.xfaFactory ? getNewAnnotationsMap(annotationStorage) : null;\n const newAnnots = newAnnotsByPage?.get(this.pageIndex);\n let newAnnotationsPromise = Promise.resolve(null);\n let deletedAnnotations = null;\n if (newAnnots) {\n const annotationGlobalsPromise = this.pdfManager.ensureDoc(\"annotationGlobals\");\n let imagePromises;\n const missingBitmaps = new Set();\n for (const {\n bitmapId,\n bitmap\n } of newAnnots) {\n if (bitmapId && !bitmap && !missingBitmaps.has(bitmapId)) {\n missingBitmaps.add(bitmapId);\n }\n }\n const {\n isOffscreenCanvasSupported\n } = this.evaluatorOptions;\n if (missingBitmaps.size > 0) {\n const annotationWithBitmaps = newAnnots.slice();\n for (const [key, annotation] of annotationStorage) {\n if (!key.startsWith(AnnotationEditorPrefix)) {\n continue;\n }\n if (annotation.bitmap && missingBitmaps.has(annotation.bitmapId)) {\n annotationWithBitmaps.push(annotation);\n }\n }\n imagePromises = AnnotationFactory.generateImages(annotationWithBitmaps, this.xref, isOffscreenCanvasSupported);\n } else {\n imagePromises = AnnotationFactory.generateImages(newAnnots, this.xref, isOffscreenCanvasSupported);\n }\n deletedAnnotations = new RefSet();\n newAnnotationsPromise = Promise.all([annotationGlobalsPromise, this.#replaceIdByRef(newAnnots, deletedAnnotations, null)]).then(([annotationGlobals]) => {\n if (!annotationGlobals) {\n return null;\n }\n return AnnotationFactory.printNewAnnotations(annotationGlobals, partialEvaluator, task, newAnnots, imagePromises);\n });\n }\n const pageListPromise = Promise.all([contentStreamPromise, resourcesPromise]).then(([contentStream]) => {\n const opList = new OperatorList(intent, sink);\n handler.send(\"StartRenderPage\", {\n transparency: partialEvaluator.hasBlendModes(this.resources, this.nonBlendModesSet),\n pageIndex: this.pageIndex,\n cacheKey\n });\n return partialEvaluator.getOperatorList({\n stream: contentStream,\n task,\n resources: this.resources,\n operatorList: opList\n }).then(function () {\n return opList;\n });\n });\n return Promise.all([pageListPromise, this._parsedAnnotations, newAnnotationsPromise]).then(function ([pageOpList, annotations, newAnnotations]) {\n if (newAnnotations) {\n annotations = annotations.filter(a => !(a.ref && deletedAnnotations.has(a.ref)));\n for (let i = 0, ii = newAnnotations.length; i < ii; i++) {\n const newAnnotation = newAnnotations[i];\n if (newAnnotation.refToReplace) {\n const j = annotations.findIndex(a => a.ref && isRefsEqual(a.ref, newAnnotation.refToReplace));\n if (j >= 0) {\n annotations.splice(j, 1, newAnnotation);\n newAnnotations.splice(i--, 1);\n ii--;\n }\n }\n }\n annotations = annotations.concat(newAnnotations);\n }\n if (annotations.length === 0 || intent & RenderingIntentFlag.ANNOTATIONS_DISABLE) {\n pageOpList.flush(true);\n return {\n length: pageOpList.totalLength\n };\n }\n const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n isEditing = !!(intent & RenderingIntentFlag.IS_EDITING),\n intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n const opListPromises = [];\n for (const annotation of annotations) {\n if (intentAny || intentDisplay && annotation.mustBeViewed(annotationStorage, renderForms) && annotation.mustBeViewedWhenEditing(isEditing, modifiedIds) || intentPrint && annotation.mustBePrinted(annotationStorage)) {\n opListPromises.push(annotation.getOperatorList(partialEvaluator, task, intent, annotationStorage).catch(function (reason) {\n warn(\"getOperatorList - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n return {\n opList: null,\n separateForm: false,\n separateCanvas: false\n };\n }));\n }\n }\n return Promise.all(opListPromises).then(function (opLists) {\n let form = false,\n canvas = false;\n for (const {\n opList,\n separateForm,\n separateCanvas\n } of opLists) {\n pageOpList.addOpList(opList);\n form ||= separateForm;\n canvas ||= separateCanvas;\n }\n pageOpList.flush(true, {\n form,\n canvas\n });\n return {\n length: pageOpList.totalLength\n };\n });\n });\n }\n async extractTextContent({\n handler,\n task,\n includeMarkedContent,\n disableNormalization,\n sink\n }) {\n const contentStreamPromise = this.getContentStream();\n const resourcesPromise = this.loadResources([\"ExtGState\", \"Font\", \"Properties\", \"XObject\"]);\n const langPromise = this.pdfManager.ensureCatalog(\"lang\");\n const [contentStream,, lang] = await Promise.all([contentStreamPromise, resourcesPromise, langPromise]);\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 systemFontCache: this.systemFontCache,\n options: this.evaluatorOptions\n });\n return partialEvaluator.getTextContent({\n stream: contentStream,\n task,\n resources: this.resources,\n includeMarkedContent,\n disableNormalization,\n sink,\n viewBox: this.view,\n lang\n });\n }\n async getStructTree() {\n const structTreeRoot = await this.pdfManager.ensureCatalog(\"structTreeRoot\");\n if (!structTreeRoot) {\n return null;\n }\n await this._parsedAnnotations;\n const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [structTreeRoot]);\n return this.pdfManager.ensure(structTree, \"serializable\");\n }\n _parseStructTree(structTreeRoot) {\n const tree = new StructTreePage(structTreeRoot, this.pageDict);\n tree.parse(this.ref);\n return tree;\n }\n async getAnnotationsData(handler, task, intent) {\n const annotations = await this._parsedAnnotations;\n if (annotations.length === 0) {\n return annotations;\n }\n const annotationsData = [],\n textContentPromises = [];\n let partialEvaluator;\n const intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n for (const annotation of annotations) {\n const isVisible = intentAny || intentDisplay && annotation.viewable;\n if (isVisible || intentPrint && annotation.printable) {\n annotationsData.push(annotation.data);\n }\n if (annotation.hasTextContent && isVisible) {\n 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 systemFontCache: this.systemFontCache,\n options: this.evaluatorOptions\n });\n textContentPromises.push(annotation.extractTextContent(partialEvaluator, task, [-Infinity, -Infinity, Infinity, Infinity]).catch(function (reason) {\n warn(`getAnnotationsData - ignoring textContent during \"${task.name}\" task: \"${reason}\".`);\n }));\n }\n }\n await Promise.all(textContentPromises);\n return annotationsData;\n }\n get annotations() {\n const annots = this._getInheritableProperty(\"Annots\");\n return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n }\n get _parsedAnnotations() {\n const promise = this.pdfManager.ensure(this, \"annotations\").then(async annots => {\n if (annots.length === 0) {\n return annots;\n }\n const [annotationGlobals, fieldObjects] = await Promise.all([this.pdfManager.ensureDoc(\"annotationGlobals\"), this.pdfManager.ensureDoc(\"fieldObjects\")]);\n if (!annotationGlobals) {\n return [];\n }\n const orphanFields = fieldObjects?.orphanFields;\n const annotationPromises = [];\n for (const annotationRef of annots) {\n annotationPromises.push(AnnotationFactory.create(this.xref, annotationRef, annotationGlobals, this._localIdFactory, false, orphanFields, this.ref).catch(function (reason) {\n warn(`_parsedAnnotations: \"${reason}\".`);\n return null;\n }));\n }\n const sortedAnnotations = [];\n let popupAnnotations, widgetAnnotations;\n for (const annotation of await Promise.all(annotationPromises)) {\n if (!annotation) {\n continue;\n }\n if (annotation instanceof WidgetAnnotation) {\n (widgetAnnotations ||= []).push(annotation);\n continue;\n }\n if (annotation instanceof PopupAnnotation) {\n (popupAnnotations ||= []).push(annotation);\n continue;\n }\n sortedAnnotations.push(annotation);\n }\n if (widgetAnnotations) {\n sortedAnnotations.push(...widgetAnnotations);\n }\n if (popupAnnotations) {\n sortedAnnotations.push(...popupAnnotations);\n }\n return sortedAnnotations;\n });\n return shadow(this, \"_parsedAnnotations\", promise);\n }\n get jsActions() {\n const actions = collectActions(this.xref, this.pageDict, PageActionEventType);\n return shadow(this, \"jsActions\", actions);\n }\n}\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\nfunction find(stream, signature, limit = 1024, backwards = false) {\n const signatureLength = signature.length;\n const scanBytes = stream.peekBytes(limit);\n const scanLength = scanBytes.length - signatureLength;\n if (scanLength <= 0) {\n return false;\n }\n if (backwards) {\n const signatureEnd = signatureLength - 1;\n let pos = scanBytes.length - 1;\n while (pos >= signatureEnd) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos - j] === signature[signatureEnd - j]) {\n j++;\n }\n if (j >= signatureLength) {\n stream.pos += pos - signatureEnd;\n return true;\n }\n pos--;\n }\n } else {\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 stream.pos += pos;\n return true;\n }\n pos++;\n }\n }\n return false;\n}\nclass PDFDocument {\n constructor(pdfManager, stream) {\n if (stream.length <= 0) {\n throw new InvalidPDFException(\"The PDF file is empty, i.e. its size is zero bytes.\");\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 const idCounters = {\n font: 0\n };\n this._globalIdFactory = class {\n static getDocId() {\n return `g_${pdfManager.docId}`;\n }\n static createFontId() {\n return `f${++idCounters.font}`;\n }\n static createObjId() {\n unreachable(\"Abstract method `createObjId` called.\");\n }\n static getPageObjId() {\n unreachable(\"Abstract method `getPageObjId` called.\");\n }\n };\n }\n parse(recoveryMode) {\n this.xref.parse(recoveryMode);\n this.catalog = new Catalog(this.pdfManager, this.xref);\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 get startXRef() {\n const stream = this.stream;\n let startXRef = 0;\n if (this.linearization) {\n stream.reset();\n if (find(stream, ENDOBJ_SIGNATURE)) {\n stream.skip(6);\n let ch = stream.peekByte();\n while (isWhiteSpace(ch)) {\n stream.pos++;\n ch = stream.peekByte();\n }\n startXRef = stream.pos - stream.start;\n }\n } else {\n const step = 1024;\n const startXRefLength = STARTXREF_SIGNATURE.length;\n let found = false,\n pos = stream.end;\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 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 >= 0x20 && ch <= 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 checkHeader() {\n const stream = this.stream;\n stream.reset();\n if (!find(stream, PDF_HEADER_SIGNATURE)) {\n return;\n }\n stream.moveStart();\n stream.skip(PDF_HEADER_SIGNATURE.length);\n let version = \"\",\n ch;\n while ((ch = stream.getByte()) > 0x20 && version.length < 7) {\n version += String.fromCharCode(ch);\n }\n if (PDF_VERSION_REGEXP.test(version)) {\n this._version = version;\n } else {\n warn(`Invalid PDF header version: ${version}`);\n }\n }\n parseStartXRef() {\n this.xref.setStartXRef(this.startXRef);\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 = 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 _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n const RECURSION_LIMIT = 10;\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(field.get(\"Kids\"), recursionDepth);\n }\n const isSignature = isName(field.get(\"FT\"), \"Sig\");\n const rectangle = field.get(\"Rect\");\n const isInvisible = Array.isArray(rectangle) && rectangle.every(value => value === 0);\n return isSignature && isInvisible;\n });\n }\n get _xfaStreams() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return null;\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 entries[\"xdp:xdp\"] = xfa;\n return entries;\n }\n if (!Array.isArray(xfa) || xfa.length === 0) {\n return null;\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 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 entries[name] = data;\n }\n return entries;\n }\n get xfaDatasets() {\n const streams = this._xfaStreams;\n if (!streams) {\n return shadow(this, \"xfaDatasets\", null);\n }\n for (const key of [\"datasets\", \"xdp:xdp\"]) {\n const stream = streams[key];\n if (!stream) {\n continue;\n }\n try {\n const str = stringToUTF8String(stream.getString());\n const data = {\n [key]: str\n };\n return shadow(this, \"xfaDatasets\", new DatasetReader(data));\n } catch {\n warn(\"XFA - Invalid utf-8 string.\");\n break;\n }\n }\n return shadow(this, \"xfaDatasets\", null);\n }\n get xfaData() {\n const streams = this._xfaStreams;\n if (!streams) {\n return null;\n }\n const data = Object.create(null);\n for (const [key, stream] of Object.entries(streams)) {\n if (!stream) {\n continue;\n }\n try {\n data[key] = stringToUTF8String(stream.getString());\n } catch {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n return data;\n }\n get xfaFactory() {\n let data;\n if (this.pdfManager.enableXfa && this.catalog.needsRendering && this.formInfo.hasXfa && !this.formInfo.hasAcroForm) {\n data = this.xfaData;\n }\n return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n }\n get isPureXfa() {\n return this.xfaFactory ? this.xfaFactory.isValid() : false;\n }\n get htmlForXfa() {\n return this.xfaFactory ? this.xfaFactory.getPages() : null;\n }\n async loadXfaImages() {\n const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n if (!xfaImagesDict) {\n return;\n }\n const keys = xfaImagesDict.getKeys();\n const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\n await objectLoader.load();\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 this.xfaFactory.setImages(xfaImages);\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 const fontRes = resources.get(\"Font\");\n if (!(fontRes instanceof Dict)) {\n return;\n }\n const options = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions);\n options.useSystemFonts = false;\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.at(-1);\n },\n set font(font) {\n pdfFonts.push(font);\n },\n clone() {\n return this;\n }\n };\n const promises = [];\n for (const [fontName, font] of fontRes) {\n const descriptor = font.get(\"FontDescriptor\");\n if (!(descriptor instanceof Dict)) {\n continue;\n }\n let fontFamily = descriptor.get(\"FontFamily\");\n fontFamily = fontFamily.replaceAll(/[ ]+(\\d)/g, \"$1\");\n const fontWeight = descriptor.get(\"FontWeight\");\n const italicAngle = -descriptor.get(\"ItalicAngle\");\n const cssFontInfo = {\n fontFamily,\n fontWeight,\n italicAngle\n };\n if (!validateCSSFont(cssFontInfo)) {\n continue;\n }\n promises.push(partialEvaluator.handleSetFont(resources, [Name.get(fontName), 1], null, operatorList, task, initialState, null, cssFontInfo).catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n }));\n }\n await Promise.all(promises);\n const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n if (!missingFonts) {\n return;\n }\n options.ignoreErrors = true;\n promises.length = 0;\n pdfFonts.length = 0;\n const reallyMissingFonts = new Set();\n for (const missing of missingFonts) {\n if (!getXfaFontName(`${missing}-Regular`)) {\n reallyMissingFonts.add(missing);\n }\n }\n if (reallyMissingFonts.size) {\n missingFonts.push(\"PdfJS-Fallback\");\n }\n for (const missing of missingFonts) {\n if (reallyMissingFonts.has(missing)) {\n continue;\n }\n for (const fontInfo of [{\n name: \"Regular\",\n fontWeight: 400,\n italicAngle: 0\n }, {\n name: \"Bold\",\n fontWeight: 700,\n italicAngle: 0\n }, {\n name: \"Italic\",\n fontWeight: 400,\n italicAngle: 12\n }, {\n name: \"BoldItalic\",\n fontWeight: 700,\n italicAngle: 12\n }]) {\n const name = `${missing}-${fontInfo.name}`;\n const dict = getXfaFontDict(name);\n promises.push(partialEvaluator.handleSetFont(resources, [Name.get(name), 1], null, operatorList, task, initialState, dict, {\n fontFamily: missing,\n fontWeight: fontInfo.fontWeight,\n italicAngle: fontInfo.italicAngle\n }).catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n }));\n }\n }\n await Promise.all(promises);\n this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n }\n async serializeXfaData(annotationStorage) {\n return this.xfaFactory ? this.xfaFactory.serializeData(annotationStorage) : null;\n }\n get version() {\n return this.catalog.version || this._version;\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 try {\n const fields = acroForm.get(\"Fields\");\n const hasFields = Array.isArray(fields) && fields.length > 0;\n formInfo.hasFields = hasFields;\n const xfa = acroForm.get(\"XFA\");\n formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || xfa instanceof BaseStream && !xfa.isEmpty;\n const sigFlags = acroForm.get(\"SigFlags\");\n const hasSignatures = !!(sigFlags & 0x1);\n const hasOnlyDocumentSignatures = 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 get documentInfo() {\n const docInfo = {\n PDFFormatVersion: this.version,\n Language: this.catalog.lang,\n EncryptFilterName: this.xref.encrypt ? this.xref.encrypt.filterName : 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 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 for (const key of infoDict.getKeys()) {\n const value = infoDict.get(key);\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 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 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 get fingerprints() {\n const FINGERPRINT_FIRST_BYTES = 1024;\n const EMPTY_FINGERPRINT = \"\\x00\".repeat(16);\n function validate(data) {\n return typeof data === \"string\" && data.length === 16 && data !== EMPTY_FINGERPRINT;\n }\n const id = this.xref.trailer.get(\"ID\");\n let hashOriginal, hashModified;\n if (Array.isArray(id) && validate(id[0])) {\n hashOriginal = stringToBytes(id[0]);\n if (id[1] !== id[0] && validate(id[1])) {\n hashModified = stringToBytes(id[1]);\n }\n } else {\n hashOriginal = calculateMD5(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);\n }\n return shadow(this, \"fingerprints\", [toHexUtil(hashOriginal), hashModified ? toHexUtil(hashModified) : null]);\n }\n async _getLinearizationPage(pageIndex) {\n const {\n catalog,\n linearization,\n xref\n } = this;\n const ref = Ref.get(linearization.objectNumberFirst, 0);\n try {\n const obj = await xref.fetchAsync(ref);\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\") && obj.has(\"Contents\")) {\n if (!catalog.pageKidsCountCache.has(ref)) {\n catalog.pageKidsCountCache.put(ref, 1);\n }\n if (!catalog.pageIndexCache.has(ref)) {\n catalog.pageIndexCache.put(ref, 0);\n }\n return [obj, ref];\n }\n }\n throw new FormatError(\"The Linearization dictionary doesn't point to a valid Page dictionary.\");\n } catch (reason) {\n warn(`_getLinearizationPage: \"${reason.message}\".`);\n return catalog.getPageDict(pageIndex);\n }\n }\n getPage(pageIndex) {\n const cachedPromise = this._pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const {\n catalog,\n linearization,\n xfaFactory\n } = this;\n let promise;\n if (xfaFactory) {\n promise = Promise.resolve([Dict.empty, null]);\n } else if (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 systemFontCache: catalog.systemFontCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory\n });\n });\n this._pagePromises.set(pageIndex, promise);\n return promise;\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 this._pagePromises.delete(0);\n await this.cleanup();\n throw new XRefParseException();\n }\n }\n }\n async checkLastPage(recoveryMode = false) {\n const {\n catalog,\n pdfManager\n } = this;\n catalog.setActualNumPages();\n let numPages;\n try {\n await Promise.all([pdfManager.ensureDoc(\"xfaFactory\"), pdfManager.ensureDoc(\"linearization\"), pdfManager.ensureCatalog(\"numPages\")]);\n if (this.xfaFactory) {\n return;\n } else if (this.linearization) {\n numPages = this.linearization.numPages;\n } else {\n numPages = catalog.numPages;\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 this._pagePromises.delete(numPages - 1);\n await this.cleanup();\n if (reason instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\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 for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n let promise;\n if (pageDict instanceof Error) {\n promise = Promise.reject(pageDict);\n promise.catch(() => {});\n } else {\n promise = Promise.resolve(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 systemFontCache: catalog.systemFontCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory: null\n }));\n }\n this._pagePromises.set(pageIndex, promise);\n }\n catalog.setActualNumPages(pagesTree.size);\n }\n }\n fontFallback(id, handler) {\n return this.catalog.fontFallback(id, handler);\n }\n async cleanup(manuallyTriggered = false) {\n return this.catalog ? this.catalog.cleanup(manuallyTriggered) : clearGlobalCaches();\n }\n async #collectFieldObjects(name, parentRef, fieldRef, promises, annotationGlobals, visitedRefs, orphanFields) {\n const {\n xref\n } = this;\n if (!(fieldRef instanceof Ref) || visitedRefs.has(fieldRef)) {\n return;\n }\n visitedRefs.put(fieldRef);\n const field = await xref.fetchAsync(fieldRef);\n if (!(field instanceof Dict)) {\n return;\n }\n if (field.has(\"T\")) {\n const partName = stringToPDFString(await field.getAsync(\"T\"));\n name = name === \"\" ? partName : `${name}.${partName}`;\n } else {\n let obj = field;\n while (true) {\n obj = obj.getRaw(\"Parent\") || parentRef;\n if (obj instanceof Ref) {\n if (visitedRefs.has(obj)) {\n break;\n }\n obj = await xref.fetchAsync(obj);\n }\n if (!(obj instanceof Dict)) {\n break;\n }\n if (obj.has(\"T\")) {\n const partName = stringToPDFString(await obj.getAsync(\"T\"));\n name = name === \"\" ? partName : `${name}.${partName}`;\n break;\n }\n }\n }\n if (parentRef && !field.has(\"Parent\") && isName(field.get(\"Subtype\"), \"Widget\")) {\n orphanFields.put(fieldRef, parentRef);\n }\n if (!promises.has(name)) {\n promises.set(name, []);\n }\n promises.get(name).push(AnnotationFactory.create(xref, fieldRef, annotationGlobals, null, true, orphanFields, null).then(annotation => annotation?.getFieldObject()).catch(function (reason) {\n warn(`#collectFieldObjects: \"${reason}\".`);\n return null;\n }));\n if (!field.has(\"Kids\")) {\n return;\n }\n const kids = await field.getAsync(\"Kids\");\n if (Array.isArray(kids)) {\n for (const kid of kids) {\n await this.#collectFieldObjects(name, fieldRef, kid, promises, annotationGlobals, visitedRefs, orphanFields);\n }\n }\n }\n get fieldObjects() {\n const promise = this.pdfManager.ensureDoc(\"formInfo\").then(async formInfo => {\n if (!formInfo.hasFields) {\n return null;\n }\n const [annotationGlobals, acroForm] = await Promise.all([this.pdfManager.ensureDoc(\"annotationGlobals\"), this.pdfManager.ensureCatalog(\"acroForm\")]);\n if (!annotationGlobals) {\n return null;\n }\n const visitedRefs = new RefSet();\n const allFields = Object.create(null);\n const fieldPromises = new Map();\n const orphanFields = new RefSetCache();\n for (const fieldRef of await acroForm.getAsync(\"Fields\")) {\n await this.#collectFieldObjects(\"\", null, fieldRef, fieldPromises, annotationGlobals, visitedRefs, orphanFields);\n }\n const allPromises = [];\n for (const [name, promises] of fieldPromises) {\n allPromises.push(Promise.all(promises).then(fields => {\n fields = fields.filter(field => !!field);\n if (fields.length > 0) {\n allFields[name] = fields;\n }\n }));\n }\n await Promise.all(allPromises);\n return {\n allFields,\n orphanFields\n };\n });\n return shadow(this, \"fieldObjects\", promise);\n }\n get hasJSActions() {\n const promise = this.pdfManager.ensureDoc(\"_parseHasJSActions\");\n return shadow(this, \"hasJSActions\", promise);\n }\n async _parseHasJSActions() {\n const [catalogJsActions, fieldObjects] = await Promise.all([this.pdfManager.ensureCatalog(\"jsActions\"), this.pdfManager.ensureDoc(\"fieldObjects\")]);\n if (catalogJsActions) {\n return true;\n }\n if (fieldObjects) {\n return Object.values(fieldObjects.allFields).some(fieldObject => fieldObject.some(object => object.actions !== null));\n }\n return false;\n }\n get calculationOrderIds() {\n const calculationOrder = this.catalog.acroForm?.get(\"CO\");\n if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n const ids = [];\n for (const id of calculationOrder) {\n if (id instanceof Ref) {\n ids.push(id.toString());\n }\n }\n return shadow(this, \"calculationOrderIds\", ids.length ? ids : null);\n }\n get annotationGlobals() {\n return shadow(this, \"annotationGlobals\", AnnotationFactory.createGlobals(this.pdfManager));\n }\n}\n\n;// ./src/core/pdf_manager.js\n\n\n\n\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}\nclass BasePdfManager {\n constructor(args) {\n this._docBaseUrl = parseDocBaseUrl(args.docBaseUrl);\n this._docId = args.docId;\n this._password = args.password;\n this.enableXfa = args.enableXfa;\n args.evaluatorOptions.isOffscreenCanvasSupported &&= FeatureTest.isOffscreenCanvasSupported;\n args.evaluatorOptions.isImageDecoderSupported &&= FeatureTest.isImageDecoderSupported;\n this.evaluatorOptions = Object.freeze(args.evaluatorOptions);\n }\n get docId() {\n return this._docId;\n }\n get password() {\n return this._password;\n }\n get docBaseUrl() {\n return this._docBaseUrl;\n }\n get catalog() {\n return this.pdfDocument.catalog;\n }\n ensureDoc(prop, args) {\n return this.ensure(this.pdfDocument, prop, args);\n }\n ensureXRef(prop, args) {\n return this.ensure(this.pdfDocument.xref, prop, args);\n }\n ensureCatalog(prop, args) {\n return this.ensure(this.pdfDocument.catalog, prop, args);\n }\n getPage(pageIndex) {\n return this.pdfDocument.getPage(pageIndex);\n }\n fontFallback(id, handler) {\n return this.pdfDocument.fontFallback(id, handler);\n }\n loadXfaFonts(handler, task) {\n return this.pdfDocument.loadXfaFonts(handler, task);\n }\n loadXfaImages() {\n return this.pdfDocument.loadXfaImages();\n }\n serializeXfaData(annotationStorage) {\n return this.pdfDocument.serializeXfaData(annotationStorage);\n }\n cleanup(manuallyTriggered = false) {\n return this.pdfDocument.cleanup(manuallyTriggered);\n }\n async ensure(obj, prop, args) {\n unreachable(\"Abstract method `ensure` called\");\n }\n requestRange(begin, end) {\n unreachable(\"Abstract method `requestRange` called\");\n }\n requestLoadedStream(noFetch = false) {\n unreachable(\"Abstract method `requestLoadedStream` called\");\n }\n sendProgressiveData(chunk) {\n unreachable(\"Abstract method `sendProgressiveData` called\");\n }\n updatePassword(password) {\n this._password = password;\n }\n terminate(reason) {\n unreachable(\"Abstract method `terminate` called\");\n }\n}\nclass LocalPdfManager extends BasePdfManager {\n constructor(args) {\n super(args);\n const stream = new Stream(args.source);\n this.pdfDocument = new PDFDocument(this, stream);\n this._loadedStreamPromise = Promise.resolve(stream);\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 requestRange(begin, end) {\n return Promise.resolve();\n }\n requestLoadedStream(noFetch = false) {\n return this._loadedStreamPromise;\n }\n terminate(reason) {}\n}\nclass NetworkPdfManager extends BasePdfManager {\n constructor(args) {\n super(args);\n this.streamManager = new ChunkedStreamManager(args.source, {\n msgHandler: args.handler,\n length: args.length,\n disableAutoFetch: args.disableAutoFetch,\n rangeChunkSize: args.rangeChunkSize\n });\n this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\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 requestRange(begin, end) {\n return this.streamManager.requestRange(begin, end);\n }\n requestLoadedStream(noFetch = false) {\n return this.streamManager.requestAllChunks(noFetch);\n }\n sendProgressiveData(chunk) {\n this.streamManager.onReceiveData({\n chunk\n });\n }\n terminate(reason) {\n this.streamManager.abort(reason);\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\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};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof MissingPDFException || ex instanceof PasswordException || ex instanceof UnexpectedResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"MissingPDFException\":\n return new MissingPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(ex.message, ex.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\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 comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\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 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 sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\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 send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\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 return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\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 return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\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 cancelCapability.promise;\n }\n }, queueingStrategy);\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 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 if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\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 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 sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\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 #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 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 if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\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 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 const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\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 streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/core/writer.js\n\n\n\n\n\n\n\nasync function writeObject(ref, obj, buffer, {\n encrypt = null\n}) {\n const transform = encrypt?.createCipherTransform(ref.num, ref.gen);\n buffer.push(`${ref.num} ${ref.gen} obj\\n`);\n if (obj instanceof Dict) {\n await writeDict(obj, buffer, transform);\n } else if (obj instanceof BaseStream) {\n await writeStream(obj, buffer, transform);\n } else if (Array.isArray(obj) || ArrayBuffer.isView(obj)) {\n await writeArray(obj, buffer, transform);\n }\n buffer.push(\"\\nendobj\\n\");\n}\nasync function writeDict(dict, buffer, transform) {\n buffer.push(\"<<\");\n for (const key of dict.getKeys()) {\n buffer.push(` /${escapePDFName(key)} `);\n await writeValue(dict.getRaw(key), buffer, transform);\n }\n buffer.push(\">>\");\n}\nasync function writeStream(stream, buffer, transform) {\n let bytes = stream.getBytes();\n const {\n dict\n } = stream;\n const [filter, params] = await Promise.all([dict.getAsync(\"Filter\"), dict.getAsync(\"DecodeParms\")]);\n const filterZero = Array.isArray(filter) ? await dict.xref.fetchIfRefAsync(filter[0]) : filter;\n const isFilterZeroFlateDecode = isName(filterZero, \"FlateDecode\");\n const MIN_LENGTH_FOR_COMPRESSING = 256;\n if (bytes.length >= MIN_LENGTH_FOR_COMPRESSING || isFilterZeroFlateDecode) {\n try {\n const cs = new CompressionStream(\"deflate\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n const buf = await new Response(cs.readable).arrayBuffer();\n bytes = new Uint8Array(buf);\n let newFilter, newParams;\n if (!filter) {\n newFilter = Name.get(\"FlateDecode\");\n } else if (!isFilterZeroFlateDecode) {\n newFilter = Array.isArray(filter) ? [Name.get(\"FlateDecode\"), ...filter] : [Name.get(\"FlateDecode\"), filter];\n if (params) {\n newParams = Array.isArray(params) ? [null, ...params] : [null, params];\n }\n }\n if (newFilter) {\n dict.set(\"Filter\", newFilter);\n }\n if (newParams) {\n dict.set(\"DecodeParms\", newParams);\n }\n } catch (ex) {\n info(`writeStream - cannot compress data: \"${ex}\".`);\n }\n }\n let string = bytesToString(bytes);\n if (transform) {\n string = transform.encryptString(string);\n }\n dict.set(\"Length\", string.length);\n await writeDict(dict, buffer, transform);\n buffer.push(\" stream\\n\", string, \"\\nendstream\");\n}\nasync function 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 await writeValue(val, buffer, transform);\n }\n buffer.push(\"]\");\n}\nasync function 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) || ArrayBuffer.isView(value)) {\n await writeArray(value, buffer, transform);\n } else if (typeof value === \"string\") {\n if (transform) {\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 await writeDict(value, buffer, transform);\n } else if (value instanceof BaseStream) {\n await 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}\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}\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}\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 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}\nfunction writeXFADataForAcroform(str, changes) {\n const xml = new SimpleXMLParser({\n hasAttributes: true\n }).parseFromString(str);\n for (const {\n xfa\n } of changes) {\n if (!xfa) {\n continue;\n }\n const {\n path,\n value\n } = xfa;\n if (!path) {\n continue;\n }\n const nodePath = parseXFAPath(path);\n let node = xml.documentElement.searchNode(nodePath, 0);\n if (!node && nodePath.length > 1) {\n node = xml.documentElement.searchNode([nodePath.at(-1)], 0);\n }\n if (node) {\n node.childNodes = Array.isArray(value) ? value.map(val => new SimpleDOMNode(\"value\", val)) : [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}\nasync function updateAcroform({\n xref,\n acroForm,\n acroFormRef,\n hasXfa,\n hasXfaDatasetsEntry,\n xfaDatasetsRef,\n needAppearances,\n changes\n}) {\n if (hasXfa && !hasXfaDatasetsEntry && !xfaDatasetsRef) {\n warn(\"XFA - Cannot save it\");\n }\n if (!needAppearances && (!hasXfa || !xfaDatasetsRef || hasXfaDatasetsEntry)) {\n return;\n }\n const dict = acroForm.clone();\n if (hasXfa && !hasXfaDatasetsEntry) {\n const newXfa = acroForm.get(\"XFA\").slice();\n newXfa.splice(2, 0, \"datasets\");\n newXfa.splice(3, 0, xfaDatasetsRef);\n dict.set(\"XFA\", newXfa);\n }\n if (needAppearances) {\n dict.set(\"NeedAppearances\", true);\n }\n changes.put(acroFormRef, {\n data: dict\n });\n}\nfunction updateXFA({\n xfaData,\n xfaDatasetsRef,\n changes,\n xref\n}) {\n if (xfaData === null) {\n const datasets = xref.fetchIfRef(xfaDatasetsRef);\n xfaData = writeXFADataForAcroform(datasets.getString(), changes);\n }\n const xfaDataStream = new StringStream(xfaData);\n xfaDataStream.dict = new Dict(xref);\n xfaDataStream.dict.set(\"Type\", Name.get(\"EmbeddedFile\"));\n changes.put(xfaDatasetsRef, {\n data: xfaDataStream\n });\n}\nasync function getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\n buffer.push(\"xref\\n\");\n const indexes = getIndexes(newRefs);\n let indexesPosition = 0;\n for (const {\n ref,\n data\n } of newRefs) {\n if (ref.num === indexes[indexesPosition]) {\n buffer.push(`${indexes[indexesPosition]} ${indexes[indexesPosition + 1]}\\n`);\n indexesPosition += 2;\n }\n if (data !== null) {\n buffer.push(`${baseOffset.toString().padStart(10, \"0\")} ${Math.min(ref.gen, 0xffff).toString().padStart(5, \"0\")} n\\r\\n`);\n baseOffset += data.length;\n } else {\n buffer.push(`0000000000 ${Math.min(ref.gen + 1, 0xffff).toString().padStart(5, \"0\")} f\\r\\n`);\n }\n }\n computeIDs(baseOffset, xrefInfo, newXref);\n buffer.push(\"trailer\\n\");\n await writeDict(newXref, buffer);\n buffer.push(\"\\nstartxref\\n\", baseOffset.toString(), \"\\n%%EOF\\n\");\n}\nfunction getIndexes(newRefs) {\n const indexes = [];\n for (const {\n ref\n } of newRefs) {\n if (ref.num === indexes.at(-2) + indexes.at(-1)) {\n indexes[indexes.length - 1] += 1;\n } else {\n indexes.push(ref.num, 1);\n }\n }\n return indexes;\n}\nasync function getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\n const xrefTableData = [];\n let maxOffset = 0;\n let maxGen = 0;\n for (const {\n ref,\n data\n } of newRefs) {\n let gen;\n maxOffset = Math.max(maxOffset, baseOffset);\n if (data !== null) {\n gen = Math.min(ref.gen, 0xffff);\n xrefTableData.push([1, baseOffset, gen]);\n baseOffset += data.length;\n } else {\n gen = Math.min(ref.gen + 1, 0xffff);\n xrefTableData.push([0, 0, gen]);\n }\n maxGen = Math.max(maxGen, gen);\n }\n newXref.set(\"Index\", getIndexes(newRefs));\n const offsetSize = getSizeInBytes(maxOffset);\n const maxGenSize = getSizeInBytes(maxGen);\n const sizes = [1, offsetSize, maxGenSize];\n newXref.set(\"W\", sizes);\n computeIDs(baseOffset, xrefInfo, newXref);\n const structSize = sizes.reduce((a, x) => a + x, 0);\n const data = new Uint8Array(structSize * xrefTableData.length);\n const stream = new Stream(data);\n stream.dict = newXref;\n let offset = 0;\n for (const [type, objOffset, gen] of xrefTableData) {\n offset = writeInt(type, sizes[0], offset, data);\n offset = writeInt(objOffset, sizes[1], offset, data);\n offset = writeInt(gen, sizes[2], offset, data);\n }\n await writeObject(xrefInfo.newRef, stream, buffer, {});\n buffer.push(\"startxref\\n\", baseOffset.toString(), \"\\n%%EOF\\n\");\n}\nfunction computeIDs(baseOffset, xrefInfo, newXref) {\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}\nfunction getTrailerDict(xrefInfo, changes, useXrefStream) {\n const newXref = new Dict(null);\n newXref.set(\"Prev\", xrefInfo.startXRef);\n const refForXrefTable = xrefInfo.newRef;\n if (useXrefStream) {\n changes.put(refForXrefTable, {\n data: \"\"\n });\n newXref.set(\"Size\", refForXrefTable.num + 1);\n newXref.set(\"Type\", Name.get(\"XRef\"));\n } else {\n newXref.set(\"Size\", refForXrefTable.num);\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 return newXref;\n}\nasync function writeChanges(changes, xref, buffer = []) {\n const newRefs = [];\n for (const [ref, {\n data\n }] of changes.items()) {\n if (data === null || typeof data === \"string\") {\n newRefs.push({\n ref,\n data\n });\n continue;\n }\n await writeObject(ref, data, buffer, xref);\n newRefs.push({\n ref,\n data: buffer.join(\"\")\n });\n buffer.length = 0;\n }\n return newRefs.sort((a, b) => a.ref.num - b.ref.num);\n}\nasync function incrementalUpdate({\n originalData,\n xrefInfo,\n changes,\n xref = null,\n hasXfa = false,\n xfaDatasetsRef = null,\n hasXfaDatasetsEntry = false,\n needAppearances,\n acroFormRef = null,\n acroForm = null,\n xfaData = null,\n useXrefStream = false\n}) {\n await updateAcroform({\n xref,\n acroForm,\n acroFormRef,\n hasXfa,\n hasXfaDatasetsEntry,\n xfaDatasetsRef,\n needAppearances,\n changes\n });\n if (hasXfa) {\n updateXFA({\n xfaData,\n xfaDatasetsRef,\n changes,\n xref\n });\n }\n const newXref = getTrailerDict(xrefInfo, changes, useXrefStream);\n const buffer = [];\n const newRefs = await writeChanges(changes, xref, buffer);\n let baseOffset = originalData.length;\n const lastByte = originalData.at(-1);\n if (lastByte !== 0x0a && lastByte !== 0x0d) {\n buffer.push(\"\\n\");\n baseOffset += 1;\n }\n for (const {\n data\n } of newRefs) {\n if (data !== null) {\n buffer.push(data);\n }\n }\n await (useXrefStream ? getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) : getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer));\n const totalLength = buffer.reduce((a, str) => a + str.length, originalData.length);\n const array = new Uint8Array(totalLength);\n array.set(originalData);\n let offset = originalData.length;\n for (const str of buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n return array;\n}\n\n;// ./src/core/worker_stream.js\n\nclass PDFWorkerStream {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this._contentLength = null;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFWorkerStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFWorkerStreamReader {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n this._contentLength = null;\n this._isRangeSupported = false;\n this._isStreamingSupported = false;\n const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n this._reader = readableStream.getReader();\n this._headersReady = this._msgHandler.sendWithPromise(\"ReaderHeadersReady\").then(data => {\n this._isStreamingSupported = data.isStreamingSupported;\n this._isRangeSupported = data.isRangeSupported;\n this._contentLength = data.contentLength;\n });\n }\n get headersReady() {\n return this._headersReady;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n async read() {\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value: undefined,\n done: true\n };\n }\n return {\n value: value.buffer,\n done: false\n };\n }\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\nclass PDFWorkerStreamRangeReader {\n constructor(begin, end, msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n begin,\n end\n });\n this._reader = readableStream.getReader();\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value: undefined,\n done: true\n };\n }\n return {\n value: value.buffer,\n done: false\n };\n }\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\n;// ./src/core/worker.js\n\n\n\n\n\n\n\n\n\n\nclass WorkerTask {\n constructor(name) {\n this.name = name;\n this.terminated = false;\n this._capability = Promise.withResolvers();\n }\n get finished() {\n return this._capability.promise;\n }\n finish() {\n this._capability.resolve();\n }\n terminate() {\n this.terminated = true;\n }\n ensureNotTerminated() {\n if (this.terminated) {\n throw new Error(\"Worker task was terminated\");\n }\n }\n}\nclass WorkerMessageHandler {\n static {\n if (typeof window === \"undefined\" && !isNodeJS && typeof self !== \"undefined\" && typeof self.postMessage === \"function\" && \"onmessage\" in self) {\n this.initializeFromPort(self);\n }\n }\n static setup(handler, port) {\n let testMessageProcessed = false;\n handler.on(\"test\", data => {\n if (testMessageProcessed) {\n return;\n }\n testMessageProcessed = true;\n handler.send(\"test\", data instanceof Uint8Array);\n });\n handler.on(\"configure\", data => {\n setVerbosityLevel(data.verbosity);\n });\n handler.on(\"GetDocRequest\", data => this.createDocumentHandler(data, port));\n }\n static createDocumentHandler(docParams, port) {\n let pdfManager;\n let terminated = false;\n let cancelXHRs = null;\n const WorkerTasks = new Set();\n const verbosity = getVerbosityLevel();\n const {\n docId,\n apiVersion\n } = docParams;\n const workerVersion = \"4.10.38\";\n if (apiVersion !== workerVersion) {\n throw new Error(`The API version \"${apiVersion}\" does not match ` + `the Worker version \"${workerVersion}\".`);\n }\n const enumerableProperties = [];\n for (const property in []) {\n enumerableProperties.push(property);\n }\n if (enumerableProperties.length) {\n throw new Error(\"The `Array.prototype` contains unexpected enumerable properties: \" + enumerableProperties.join(\", \") + \"; thus breaking e.g. `for...in` iteration of `Array`s.\");\n }\n const workerHandlerName = docId + \"_worker\";\n let handler = new MessageHandler(workerHandlerName, docId, port);\n function ensureNotTerminated() {\n if (terminated) {\n throw new Error(\"Worker was terminated\");\n }\n }\n function startWorkerTask(task) {\n WorkerTasks.add(task);\n }\n function finishWorkerTask(task) {\n task.finish();\n WorkerTasks.delete(task);\n }\n async function loadDocument(recoveryMode) {\n await pdfManager.ensureDoc(\"checkHeader\");\n await pdfManager.ensureDoc(\"parseStartXRef\");\n await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n await pdfManager.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n if (isPureXfa) {\n const task = new WorkerTask(\"loadXfaFonts\");\n startWorkerTask(task);\n await Promise.all([pdfManager.loadXfaFonts(handler, task).catch(reason => {}).then(() => finishWorkerTask(task)), pdfManager.loadXfaImages()]);\n }\n const [numPages, fingerprints] = await Promise.all([pdfManager.ensureDoc(\"numPages\"), pdfManager.ensureDoc(\"fingerprints\")]);\n const htmlForXfa = isPureXfa ? await pdfManager.ensureDoc(\"htmlForXfa\") : null;\n return {\n numPages,\n fingerprints,\n htmlForXfa\n };\n }\n async function getPdfManager({\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions\n }) {\n const pdfManagerArgs = {\n source: null,\n disableAutoFetch,\n docBaseUrl,\n docId,\n enableXfa,\n evaluatorOptions,\n handler,\n length,\n password,\n rangeChunkSize\n };\n if (data) {\n pdfManagerArgs.source = data;\n return new LocalPdfManager(pdfManagerArgs);\n }\n const pdfStream = new PDFWorkerStream(handler),\n fullRequest = pdfStream.getFullReader();\n const pdfManagerCapability = Promise.withResolvers();\n let newPdfManager,\n cachedChunks = [],\n loaded = 0;\n fullRequest.headersReady.then(function () {\n if (!fullRequest.isRangeSupported) {\n return;\n }\n pdfManagerArgs.source = pdfStream;\n pdfManagerArgs.length = fullRequest.contentLength;\n pdfManagerArgs.disableAutoFetch ||= fullRequest.isStreamingSupported;\n newPdfManager = new NetworkPdfManager(pdfManagerArgs);\n for (const chunk of cachedChunks) {\n newPdfManager.sendProgressiveData(chunk);\n }\n cachedChunks = [];\n pdfManagerCapability.resolve(newPdfManager);\n cancelXHRs = null;\n }).catch(function (reason) {\n pdfManagerCapability.reject(reason);\n cancelXHRs = null;\n });\n new Promise(function (resolve, reject) {\n const readChunk = function ({\n value,\n done\n }) {\n try {\n ensureNotTerminated();\n if (done) {\n if (!newPdfManager) {\n const pdfFile = arrayBuffersToBytes(cachedChunks);\n cachedChunks = [];\n if (length && pdfFile.length !== length) {\n warn(\"reported HTTP length is different from actual\");\n }\n pdfManagerArgs.source = pdfFile;\n newPdfManager = new LocalPdfManager(pdfManagerArgs);\n pdfManagerCapability.resolve(newPdfManager);\n }\n cancelXHRs = null;\n return;\n }\n loaded += value.byteLength;\n if (!fullRequest.isStreamingSupported) {\n handler.send(\"DocProgress\", {\n loaded,\n total: Math.max(loaded, fullRequest.contentLength || 0)\n });\n }\n if (newPdfManager) {\n newPdfManager.sendProgressiveData(value);\n } else {\n cachedChunks.push(value);\n }\n fullRequest.read().then(readChunk, reject);\n } catch (e) {\n reject(e);\n }\n };\n fullRequest.read().then(readChunk, reject);\n }).catch(function (e) {\n pdfManagerCapability.reject(e);\n cancelXHRs = null;\n });\n cancelXHRs = reason => {\n pdfStream.cancelAllRequests(reason);\n };\n return pdfManagerCapability.promise;\n }\n function setupDoc(data) {\n function onSuccess(doc) {\n ensureNotTerminated();\n handler.send(\"GetDoc\", {\n pdfInfo: doc\n });\n }\n function onFailure(ex) {\n ensureNotTerminated();\n if (ex instanceof PasswordException) {\n const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n startWorkerTask(task);\n handler.sendWithPromise(\"PasswordRequest\", ex).then(function ({\n password\n }) {\n finishWorkerTask(task);\n pdfManager.updatePassword(password);\n pdfManagerReady();\n }).catch(function () {\n finishWorkerTask(task);\n handler.send(\"DocException\", ex);\n });\n } else {\n handler.send(\"DocException\", wrapReason(ex));\n }\n }\n function pdfManagerReady() {\n ensureNotTerminated();\n loadDocument(false).then(onSuccess, function (reason) {\n ensureNotTerminated();\n if (!(reason instanceof XRefParseException)) {\n onFailure(reason);\n return;\n }\n pdfManager.requestLoadedStream().then(function () {\n ensureNotTerminated();\n loadDocument(true).then(onSuccess, onFailure);\n });\n });\n }\n ensureNotTerminated();\n getPdfManager(data).then(function (newPdfManager) {\n if (terminated) {\n newPdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n throw new Error(\"Worker was terminated\");\n }\n pdfManager = newPdfManager;\n pdfManager.requestLoadedStream(true).then(stream => {\n handler.send(\"DataLoaded\", {\n length: stream.bytes.byteLength\n });\n });\n }).then(pdfManagerReady, onFailure);\n }\n handler.on(\"GetPage\", function (data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return Promise.all([pdfManager.ensure(page, \"rotate\"), pdfManager.ensure(page, \"ref\"), pdfManager.ensure(page, \"userUnit\"), pdfManager.ensure(page, \"view\")]).then(function ([rotate, ref, userUnit, view]) {\n return {\n rotate,\n ref,\n refStr: ref?.toString() ?? null,\n userUnit,\n view\n };\n });\n });\n });\n handler.on(\"GetPageIndex\", function (data) {\n const pageRef = Ref.get(data.num, data.gen);\n return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n });\n handler.on(\"GetDestinations\", function (data) {\n return pdfManager.ensureCatalog(\"destinations\");\n });\n handler.on(\"GetDestination\", function (data) {\n return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n });\n handler.on(\"GetPageLabels\", function (data) {\n return pdfManager.ensureCatalog(\"pageLabels\");\n });\n handler.on(\"GetPageLayout\", function (data) {\n return pdfManager.ensureCatalog(\"pageLayout\");\n });\n handler.on(\"GetPageMode\", function (data) {\n return pdfManager.ensureCatalog(\"pageMode\");\n });\n handler.on(\"GetViewerPreferences\", function (data) {\n return pdfManager.ensureCatalog(\"viewerPreferences\");\n });\n handler.on(\"GetOpenAction\", function (data) {\n return pdfManager.ensureCatalog(\"openAction\");\n });\n handler.on(\"GetAttachments\", function (data) {\n return pdfManager.ensureCatalog(\"attachments\");\n });\n handler.on(\"GetDocJSActions\", function (data) {\n return pdfManager.ensureCatalog(\"jsActions\");\n });\n handler.on(\"GetPageJSActions\", function ({\n pageIndex\n }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"jsActions\");\n });\n });\n handler.on(\"GetOutline\", function (data) {\n return pdfManager.ensureCatalog(\"documentOutline\");\n });\n handler.on(\"GetOptionalContentConfig\", function (data) {\n return pdfManager.ensureCatalog(\"optionalContentConfig\");\n });\n handler.on(\"GetPermissions\", function (data) {\n return pdfManager.ensureCatalog(\"permissions\");\n });\n handler.on(\"GetMetadata\", function (data) {\n return Promise.all([pdfManager.ensureDoc(\"documentInfo\"), pdfManager.ensureCatalog(\"metadata\")]);\n });\n handler.on(\"GetMarkInfo\", function (data) {\n return pdfManager.ensureCatalog(\"markInfo\");\n });\n handler.on(\"GetData\", function (data) {\n return pdfManager.requestLoadedStream().then(function (stream) {\n return stream.bytes;\n });\n });\n handler.on(\"GetAnnotations\", function ({\n pageIndex,\n intent\n }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`GetAnnotations: page ${pageIndex}`);\n startWorkerTask(task);\n return page.getAnnotationsData(handler, task, intent).then(data => {\n finishWorkerTask(task);\n return data;\n }, reason => {\n finishWorkerTask(task);\n throw reason;\n });\n });\n });\n handler.on(\"GetFieldObjects\", function (data) {\n return pdfManager.ensureDoc(\"fieldObjects\").then(fieldObjects => fieldObjects?.allFields || null);\n });\n handler.on(\"HasJSActions\", function (data) {\n return pdfManager.ensureDoc(\"hasJSActions\");\n });\n handler.on(\"GetCalculationOrderIds\", function (data) {\n return pdfManager.ensureDoc(\"calculationOrderIds\");\n });\n handler.on(\"SaveDocument\", async function ({\n isPureXfa,\n numPages,\n annotationStorage,\n filename\n }) {\n const globalPromises = [pdfManager.requestLoadedStream(), pdfManager.ensureCatalog(\"acroForm\"), pdfManager.ensureCatalog(\"acroFormRef\"), pdfManager.ensureDoc(\"startXRef\"), pdfManager.ensureDoc(\"xref\"), pdfManager.ensureDoc(\"linearization\"), pdfManager.ensureCatalog(\"structTreeRoot\")];\n const changes = new RefSetCache();\n const promises = [];\n const newAnnotationsByPage = !isPureXfa ? getNewAnnotationsMap(annotationStorage) : null;\n const [stream, acroForm, acroFormRef, startXRef, xref, linearization, _structTreeRoot] = await Promise.all(globalPromises);\n const catalogRef = xref.trailer.getRaw(\"Root\") || null;\n let structTreeRoot;\n if (newAnnotationsByPage) {\n if (!_structTreeRoot) {\n if (await StructTreeRoot.canCreateStructureTree({\n catalogRef,\n pdfManager,\n newAnnotationsByPage\n })) {\n structTreeRoot = null;\n }\n } else if (await _structTreeRoot.canUpdateStructTree({\n pdfManager,\n xref,\n newAnnotationsByPage\n })) {\n structTreeRoot = _structTreeRoot;\n }\n const imagePromises = AnnotationFactory.generateImages(annotationStorage.values(), xref, pdfManager.evaluatorOptions.isOffscreenCanvasSupported);\n const newAnnotationPromises = structTreeRoot === undefined ? promises : [];\n for (const [pageIndex, annotations] of newAnnotationsByPage) {\n newAnnotationPromises.push(pdfManager.getPage(pageIndex).then(page => {\n const task = new WorkerTask(`Save (editor): page ${pageIndex}`);\n startWorkerTask(task);\n return page.saveNewAnnotations(handler, task, annotations, imagePromises, changes).finally(function () {\n finishWorkerTask(task);\n });\n }));\n }\n if (structTreeRoot === null) {\n promises.push(Promise.all(newAnnotationPromises).then(async () => {\n await StructTreeRoot.createStructureTree({\n newAnnotationsByPage,\n xref,\n catalogRef,\n pdfManager,\n changes\n });\n }));\n } else if (structTreeRoot) {\n promises.push(Promise.all(newAnnotationPromises).then(async () => {\n await structTreeRoot.updateStructureTree({\n newAnnotationsByPage,\n pdfManager,\n changes\n });\n }));\n }\n }\n if (isPureXfa) {\n promises.push(pdfManager.serializeXfaData(annotationStorage));\n } else {\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n promises.push(pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`Save: page ${pageIndex}`);\n startWorkerTask(task);\n return page.save(handler, task, annotationStorage, changes).finally(function () {\n finishWorkerTask(task);\n });\n }));\n }\n }\n const refs = await Promise.all(promises);\n let xfaData = null;\n if (isPureXfa) {\n xfaData = refs[0];\n if (!xfaData) {\n return stream.bytes;\n }\n } else if (changes.size === 0) {\n return stream.bytes;\n }\n const needAppearances = acroFormRef && acroForm instanceof Dict && changes.values().some(ref => ref.needAppearances);\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 hasXfaDatasetsEntry = true;\n }\n }\n if (xfaDatasetsRef === null) {\n xfaDatasetsRef = xref.getNewTemporaryRef();\n }\n } else if (xfa) {\n warn(\"Unsupported XFA type.\");\n }\n let newXrefInfo = Object.create(null);\n if (xref.trailer) {\n const infoObj = Object.create(null);\n const xrefInfo = xref.trailer.get(\"Info\") || null;\n if (xrefInfo instanceof Dict) {\n for (const [key, value] of xrefInfo) {\n if (typeof value === \"string\") {\n infoObj[key] = stringToPDFString(value);\n }\n }\n }\n newXrefInfo = {\n rootRef: catalogRef,\n encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n newRef: xref.getNewTemporaryRef(),\n infoRef: xref.trailer.getRaw(\"Info\") || null,\n info: infoObj,\n fileIds: xref.trailer.get(\"ID\") || null,\n startXRef: linearization ? startXRef : xref.lastXRefStreamPos ?? startXRef,\n filename\n };\n }\n return incrementalUpdate({\n originalData: stream.bytes,\n xrefInfo: newXrefInfo,\n changes,\n xref,\n hasXfa: !!xfa,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n needAppearances,\n acroFormRef,\n acroForm,\n xfaData,\n useXrefStream: isDict(xref.topDict, \"XRef\")\n }).finally(() => {\n xref.resetNewTemporaryRef();\n });\n });\n handler.on(\"GetOperatorList\", function (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 const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n page.getOperatorList({\n handler,\n sink,\n task,\n intent: data.intent,\n cacheKey: data.cacheKey,\n annotationStorage: data.annotationStorage,\n modifiedIds: data.modifiedIds\n }).then(function (operatorListInfo) {\n finishWorkerTask(task);\n if (start) {\n info(`page=${pageIndex + 1} - getOperatorList: time=` + `${Date.now() - start}ms, len=${operatorListInfo.length}`);\n }\n sink.close();\n }, function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return;\n }\n sink.error(reason);\n });\n });\n });\n handler.on(\"GetTextContent\", function (data, sink) {\n const {\n pageIndex,\n includeMarkedContent,\n disableNormalization\n } = data;\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n startWorkerTask(task);\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n page.extractTextContent({\n handler,\n task,\n sink,\n includeMarkedContent,\n disableNormalization\n }).then(function () {\n finishWorkerTask(task);\n if (start) {\n info(`page=${pageIndex + 1} - getTextContent: time=` + `${Date.now() - start}ms`);\n }\n sink.close();\n }, function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return;\n }\n sink.error(reason);\n });\n });\n });\n handler.on(\"GetStructTree\", function (data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"getStructTree\");\n });\n });\n handler.on(\"FontFallback\", function (data) {\n return pdfManager.fontFallback(data.id, handler);\n });\n handler.on(\"Cleanup\", function (data) {\n return pdfManager.cleanup(true);\n });\n handler.on(\"Terminate\", function (data) {\n terminated = true;\n const waitOn = [];\n if (pdfManager) {\n pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n const cleanupPromise = pdfManager.cleanup();\n waitOn.push(cleanupPromise);\n pdfManager = null;\n } else {\n clearGlobalCaches();\n }\n cancelXHRs?.(new AbortException(\"Worker was terminated.\"));\n for (const task of WorkerTasks) {\n waitOn.push(task.finished);\n task.terminate();\n }\n return Promise.all(waitOn).then(function () {\n handler.destroy();\n handler = null;\n });\n });\n handler.on(\"Ready\", function (data) {\n setupDoc(docParams);\n docParams = null;\n });\n return workerHandlerName;\n }\n static initializeFromPort(port) {\n const handler = new MessageHandler(\"worker\", \"main\", port);\n this.setup(handler, port);\n handler.send(\"ready\", null);\n }\n}\n\n;// ./src/pdf.worker.js\n\nconst pdfjsVersion = \"4.10.38\";\nconst pdfjsBuild = \"f9bea397f\";\n\nvar __webpack_exports__WorkerMessageHandler = __webpack_exports__.WorkerMessageHandler;\nexport { __webpack_exports__WorkerMessageHandler as WorkerMessageHandler };\n\n//# sourceMappingURL=pdf.worker.mjs.map"],"names":["cachedSetTimeout","cachedClearTimeout","process","module","exports","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","e","call","this","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","length","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","nextTick","args","Array","arguments","i","push","prototype","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","hasOwnProperty","globalThis","pdfjsWorker","WorkerMessageHandler","isNodeJS","nw","electron","type","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","LINE_FACTOR","BASELINE_FACTOR","LINE_DESCENT_FACTOR","AnnotationEditorPrefix","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","AnnotationReplyType","AnnotationFlag","AnnotationFieldFlag","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","OPS","verbosity","getVerbosityLevel","info","msg","console","log","warn","unreachable","assert","cond","createValidAbsoluteUrl","url","baseUrl","options","addDefaultProtocol","startsWith","dots","match","tryConvertEncoding","stringToUTF8String","absoluteUrl","URL","protocol","_isValidProtocol","shadow","value","nonSerializable","configurable","writable","BaseException","message","constructor","PasswordException","code","super","UnknownErrorException","details","InvalidPDFException","MissingPDFException","UnexpectedResponseException","status","FormatError","AbortException","bytesToString","bytes","MAX_ARGUMENT_COUNT","String","fromCharCode","strBuf","chunkEnd","Math","min","chunk","subarray","join","stringToBytes","str","Uint8Array","charCodeAt","string32","objectSize","keys","FeatureTest","isLittleEndian","buffer8","Uint32Array","buffer","isEvalSupported","Function","isOffscreenCanvasSupported","OffscreenCanvas","isImageDecoderSupported","ImageDecoder","platform","navigator","isMac","includes","isWindows","isFirefox","userAgent","isCSSRoundSupported","CSS","supports","hexNumbers","from","n","toString","padStart","Util","makeHexColor","r","g","b","scaleMinMax","transform","minMax","temp","m1","m2","applyTransform","p","m","applyInverseTransform","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","max","inverseTransform","singularValueDecompose2dScale","transpose","a","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","x0","x1","x2","x3","y0","y1","y2","y3","t","mt","tt","ttt","x","y","abs","delta","sqrtDelta","a2","bezierBoundingBox","PDFStringTranslateTable","stringToPDFString","encoding","decoder","TextDecoder","fatal","decoded","decode","replaceAll","ex","ii","charCode","charAt","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayEqual","arr1","arr2","getModificationDate","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","NormalizeRegex","NormalizationMap","toHexUtil","arr","toHex","num","Promise","try","fn","resolve","CIRCULAR_REF","Symbol","EOF","CmdCache","create","NameCache","RefCache","Name","Cmd","cmd","Dict","xref","_map","Map","objId","suppressEncryption","__nonSerializable__","assignXref","newXref","size","key1","key2","key3","Ref","fetch","getAsync","fetchAsync","getArray","isArray","getRaw","getKeys","getRawValues","values","set","has","iterator","empty","emptyDict","merge","dictArray","mergeSubDicts","mergedDict","properties","dict","property","subDict","clear","clone","gen","fromString","ref","exec","parseInt","RefSet","parent","_set","Set","put","add","remove","delete","RefSetCache","putAlias","aliasRef","items","isName","v","isCmd","isDict","isRefsEqual","v1","v2","BaseStream","isEmpty","isDataLoaded","getByte","getBytes","getImageData","decoderOptions","asyncGetBytes","isAsync","canAsyncDecodeImageFromBuffer","getTransferableImage","peekByte","peekedByte","pos","peekBytes","getUint16","b0","b1","getInt32","getByteRange","begin","end","getString","skip","reset","moveStart","makeSubStream","start","getBaseStreams","PDF_VERSION_REGEXP","MAX_INT_32","getLookupTableFactory","initializer","lookup","MissingDataException","ParserEOFException","XRefEntryException","XRefParseException","arrayBuffersToBytes","dataLength","byteLength","data","item","getInheritableProperty","stopWhenFound","visited","ROMAN_NUMBER_MAP","toRomanNumerals","number","lowerCase","Number","isInteger","roman","repeat","toLowerCase","log2","ceil","readInt8","offset","readUint16","readUint32","isWhiteSpace","ch","isNumberArray","every","ArrayBuffer","isView","lookupMatrix","fallback","lookupRect","lookupNormalRect","parseXFAPath","path","positionPattern","split","map","component","escapePDFName","char","substring","escapeString","_collectJS","entry","list","parents","element","js","collectActions","eventType","actions","additionalActionsDicts","additionalActions","action","Action","XMLEntities","codePointIter","codePointAt","encodeToXmlString","entity","toUpperCase","validateFontName","fontFamily","mustWarn","RegExp","test","ident","validateCSSFont","cssFontInfo","CSS_FONT_WEIGHT_VALUES","fontWeight","italicAngle","weight","angle","parseFloat","isNaN","recoverJsURL","jsUrl","newWindow","numberToString","roundedValue","round","toFixed","getNewAnnotationsMap","annotationStorage","newAnnotationsByPage","annotations","pageIndex","stringToAsciiOrUTF16BE","isAscii","stringToUTF16String","stringToUTF16HexString","buf","bigEndian","getRotationMatrix","rotation","width","height","getSizeInBytes","Stream","arrayBuffer","strEnd","StringStream","NullStream","ChunkedStream","chunkSize","manager","_loadedChunks","numChunks","progressiveDataLength","lastSuccessfulEnsureByteChunk","getMissingChunks","chunks","numChunksLoaded","onReceiveData","beginChunk","floor","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","hasChunk","ChunkedStreamSubstream","missingChunks","subStream","ChunkedStreamManager","pdfNetworkStream","rangeChunkSize","stream","disableAutoFetch","msgHandler","currRequestId","_chunksNeededByRequest","_requestsByChunk","_promisesByRequest","aborted","_loadedStreamCapability","withResolvers","sendRequest","rangeReader","getRangeReader","isStreamingSupported","onProgress","bind","loaded","reject","readChunk","done","chunkData","read","then","requestAllChunks","noFetch","_requestChunks","promise","requestId","chunksNeeded","capability","chunksToRequest","requestIds","groupedChunksToRequest","groupChunks","groupedChunk","catch","reason","getStream","requestRange","getBeginChunk","getEndChunk","requestRanges","ranges","range","sort","groupedChunks","prevChunk","send","total","isProgressive","loadedRequests","lastChunk","onError","err","abort","cancelAllRequests","ColorSpace","numComps","getRgb","src","srcOffset","rgb","Uint8ClampedArray","getRgbItem","dest","destOffset","getRgbBuffer","count","bits","alpha01","getOutputLength","inputLength","isPassthrough","isDefaultDecode","decodeMap","bpc","fillRgb","originalWidth","originalHeight","actualHeight","comps","rgbBuf","numComponentColors","needsResizing","allColors","Uint16Array","colorMap","rgbPos","destPos","w1","h1","w2","h2","xRatio","yRatio","oldIndex","newIndex","xScaled","w1Scanline","py","j","resizeRgbImage","usesZeroToOneRange","_cache","cacheKey","localColorSpaceCache","parsedColorSpace","csName","csRef","getCached","localColorSpace","getByRef","getByName","parseAsync","cs","resources","pdfFunctionFactory","_parse","parse","cachedColorSpace","fetchIfRef","singletons","gray","rgba","cmyk","PatternCS","colorSpaces","resourcesCS","mode","params","baseCS","whitePoint","blackPoint","gamma","CalGrayCS","matrix","CalRGBCS","alt","altCS","hiVal","IndexedCS","tintFn","AlternateCS","LabCS","DeviceGrayCS","DeviceRgbCS","DeviceRgbaCS","DeviceCmykCS","base","tmpBuf","Float32Array","scale","baseNumComps","baseBuf","scaled","tinted","highVal","outputDelta","lookupPos","q","_alpha01","src32","dest32","rgbMask","COMPONENTS","resizeRgbaImage","copyRgbaImage","srcScale","k","XW","YW","ZW","XB","YB","ZB","G","AG","L","val","static","GR","GG","GB","MXA","MYA","MZA","MXB","MYB","MZB","MXC","MYC","MZC","result","sourceWhitePoint","LMS","color","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","XYZ_In","LMS_Flat","LMS_D65","A","B","AGR","BGG","CGB","Y","Z","XYZ","XYZ_Black","XYZ_D65","SRGB","amin","amax","bmin","bmax","high1","low2","high2","maxVal","Ls","as","bs","M","N","hexToInt","hexToStr","addHex","incHex","MAX_NUM_SIZE","BinaryCMapStream","readByte","readNumber","last","readSigned","readHex","readHexNumber","stack","sp","bufferSize","readHexSigned","sign","readString","BinaryCMapReader","cMap","extend","header","vertical","useCMap","tmp","sequence","dataSize","ucs2DataSize","subitemsCount","addCodespaceRange","mapOne","mapCidRange","mapBfRange","emptyBuffer","DecodeStream","maybeMinBufferLength","_rawMinBufferLength","bufferLength","eof","minBufferLength","readBlock","ensureBuffer","requested","buffer2","bufEnd","decodeImage","StreamsSequenceStream","streams","filter","s","maybeLength","_onError","shift","newLength","baseStreamsBuf","baseStreams","Ascii85Stream","input","AsciiHexStream","firstDigit","maxDecodeLength","digit","ccittEOF","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","CCITTFaxDecoder","source","next","code1","eoline","EndOfLine","byteAlign","EncodedByteAlign","columns","Columns","rows","Rows","eoblock","EndOfBlock","black","BlackIs1","codingLine","refLine","codingPos","row","nextLine2D","inputBits","inputBuf","outputBits","rowsDone","_lookBits","_eatBits","readNextChar","refPos","blackPixels","code2","code3","_getTwoDimCode","_addPixels","_getBlackCode","_getWhiteCode","_addPixelsNeg","gotEOL","a1","_findTableCode","table","limit","limitValue","CCITTFaxStream","ccittFaxDecoder","codeLenCodeMap","Int32Array","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","FlateStream","cmf","flg","codeSize","codeBuf","_decoderOptions","readable","DecompressionStream","writer","getWriter","ready","write","async","close","totalLength","getBits","getCode","codes","maxLen","codeLen","codeVal","generateHuffmanTable","lengths","hdr","blockLen","check","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","what","repeatLength","dist","QeTable","qe","nmps","nlps","switchFlag","ArithmeticDecoder","bp","dataEnd","chigh","clow","byteIn","ct","readBit","contexts","cx_index","cx_mps","qeTableIcx","qeIcx","Jbig2Error","ContextCache","getContexts","id","Int8Array","DecodingContext","contextCache","decodeInteger","procedure","prev","readBits","bit","signedValue","decodeIAID","codeLength","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodeBitmap","mmr","templateIndex","prediction","at","decodingContext","decodeMMRBitmap","Reader","bitmap","contextLabel","pixel","row1","row2","decodeBitmapTemplate0","useskip","template","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","minX","maxX","minY","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","pseudoPixelContext","i0","j0","ltp","decodeRefinement","referenceBitmap","offsetX","offsetY","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceHeight","decodeTextRegion","huffman","refinement","defaultPixelValue","numberOfSymbolInstances","stripSize","inputSymbols","symbolCodeLength","transposed","dsOffset","referenceCorner","combinationOperator","huffmanTables","refinementTemplateIndex","refinementAt","logStripSize","huffmanInput","stripT","tableDeltaT","firstS","tableFirstS","currentS","currentT","symbolId","symbolIDTable","applyRefinement","symbolBitmap","symbolWidth","symbolHeight","rdw","rdh","increment","offsetT","offsetS","s2","t2","symbolRow","maxWidth","deltaS","tableDeltaS","readSegmentHeader","segmentHeader","flags","segmentType","typeName","deferredNonRetain","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","pageAssociation","genericRegionInfo","readRegionSegmentInformation","genericRegionMmr","RegionSegmentInformationFieldLength","searchPatternLength","searchPattern","headerEnd","readSegments","segments","segment","randomAccess","processSegment","visitor","atLength","dictionary","dictionaryFlags","huffmanDHSelector","huffmanDWSelector","bitmapSizeSelector","aggregationInstancesSelector","bitmapCodingContextUsed","bitmapCodingContextRetained","refinementTemplate","numberOfExportedSymbols","numberOfNewSymbols","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","huffmanFS","huffmanDS","huffmanDT","huffmanRefinementDW","huffmanRefinementDH","huffmanRefinementDX","huffmanRefinementDY","huffmanRefinementSizeSelector","patternDictionary","patternDictionaryFlags","patternWidth","patternHeight","maxPatternIndex","halftoneRegion","halftoneRegionFlags","enableSkip","gridWidth","gridHeight","gridOffsetX","gridOffsetY","gridVectorX","gridVectorY","genericRegion","genericRegionSegmentFlags","pageInfo","resolutionX","resolutionY","pageSegmentFlags","lossless","requiresBuffer","combinationOperatorOverride","callbackName","processSegments","SimpleSegmentVisitor","onPageInformation","currentPageInfo","rowSize","fill","drawBitmap","regionInfo","mask0","mask","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","onSymbolDictionary","currentSegment","referredSegments","customTables","tableDeltaHeight","tableDeltaWidth","tableBitmapSize","tableAggregateInstances","customIndex","getStandardTable","getCustomHuffmanTable","getSymbolDictionaryHuffmanTables","symbols","referredSegment","referredSymbols","newSymbols","currentHeight","tableB1","symbolWidths","currentWidth","totalWidth","firstSymbol","deltaWidth","numberOfInstances","rdx","rdy","bitmapSize","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMax","bitmapWidth","xMin","exportedSymbols","currentFlag","totalSymbolsLength","runLength","decodeSymbolDictionary","onImmediateTextRegion","numberOfSymbols","reader","HuffmanLine","runCodesTable","HuffmanTable","repeatedLength","numberOfRepeats","prefixLength","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","patterns","patternBitmap","decodePatternDictionary","onImmediateHalftoneRegion","regionWidth","regionHeight","regionBitmap","numberOfPatterns","pattern0","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","patternRow","regionRow","regionX","regionY","decodeHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","lines","rangeLength","currentRangeLow","decodeTablesSegment","lineData","isOOB","rangeLow","prefixCode","isLowerRange","HuffmanTreeNode","line","children","isLeaf","buildTree","node","decodeNode","htOffset","prefixCodesDone","assignPrefixCodes","rootNode","linesLength","prefixLengthMax","histogram","currentCode","currentTemp","currentLength","firstCode","standardTablesCache","currentByte","numBits","index","currentIndex","endOfBlock","lookForEOFLimit","Jbig2Image","parseChunks","parseJbig2Chunks","Jbig2Stream","jbig2Image","globalsStream","globals","convertToRGBA","kind","convertBlackAndWhiteToRGBA","srcPos","len32","s1","s3","jj","convertRGBToRGBA","nonBlackColor","inverseDecode","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","elem","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","pop","getBlockBufferOffset","col","blocksPerLine","decodeScan","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","nextByte","maybeScanLines","blockRow","precision","decodeHuffman","tree","receive","receiveAndExtend","successiveACNextValue","eobrun","successiveACState","decodeMcu","mcu","mcuCol","blockCol","h","decodeBlock","componentsLength","decodeFn","blockOffset","huffmanTableDC","diff","blockData","pred","rs","huffmanTableAC","z","offsetZ","fileMarker","mcuExpected","blocksPerColumn","mcusPerColumn","mcuToRead","findNextFileMarker","invalid","quantizeAndInverse","blockBufferOffset","qt","quantizationTable","v0","v3","v4","v5","v6","v7","p0","p5","p6","p7","buildComponentData","computationBuffer","Int16Array","currentPos","startPos","maxPos","newPos","currentMarker","newMarker","prepareComponents","samplesPerLine","maxH","maxV","blocksPerLineForMcu","blocksBufferSize","readDataBlock","endOffset","appData","newOffset","skipData","JpegImage","decodeTransform","colorTransform","_decodeTransform","_colorTransform","canUseImageDecoder","numComponents","markerLoop","dnlScanLines","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","l","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","_getLinearizedBlockData","isSourcePDF","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","_isColorConversionNeeded","_convertYccToRgb","Cb","Cr","_convertYccToRgba","out","_convertYcckToRgb","_convertYcckToRgba","_convertYcckToCmyk","_convertCmykToRgb","_convertCmykToRgba","getData","forceRGBA","forceRGB","rgbaData","grayToRGBA","grayColor","JpegStream","isTypeSupported","setOptions","jpegOptions","decodeArr","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","drawWidth","drawHeight","preferAnimation","image","_scriptName","OpenJPEG","document","currentScript","moduleArg","readyPromiseResolve","readyPromiseReject","Module","isIndexedColormap","smaskInData","ptr","_malloc","HEAPU8","ret","_jp2_decode","_free","errorMessages","imageData","moduleOverrides","assign","thisProgram","quit_","toThrow","scriptDirectory","substr","replace","lastIndexOf","error","wasmMemory","wasmBinary","EXITSTATUS","HEAP8","HEAPU32","ABORT","updateMemoryViews","Float64Array","wasmBinaryFile","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","runDependencies","runDependencyWatcher","dependenciesFulfilled","dataURIPrefix","isDataURI","filename","instantiateSync","file","binary","atob","intArrayFromBase64","tryParseAsDataURI","getBinarySync","WebAssembly","Instance","ExitStatus","calledRun","callRuntimeCallbacks","callbacks","noExitRuntime","runtimeKeepaliveCounter","timers","handleException","keepRuntimeAlive","_proc_exit","callUserCallback","func","maybeExit","growMemory","pages","grow","ENV","getEnvStrings","strings","USER","LOGNAME","PATH","PWD","HOME","LANG","languages","_","printCharBuffers","UTF8Decoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","NaN","endIdx","endPtr","u0","u1","u2","UTF8ToString","wasmImports","RuntimeError","copyWithin","which","timeout_ms","__emscripten_timeout","performance","now","compG_ptr","nb_pixels","compG","HEAP32","f","compR_ptr","compB_ptr","compR","compB","compA_ptr","compA","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","newSize","__environ","environ_buf","bufSize","forEach","string","stringToAscii","penviron_count","penviron_buf_size","fd","offset_low","offset_high","whence","iov","iovcnt","pnum","curr","message_ptr","wasmExports","receiveInstance","instance","cb","unshift","clearInterval","callback","removeRunDependency","createWasm","doRun","postRun","preRun","runCaller","openjpeg","JpxError","JpxImage","cleanup","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","JpxStream","LZWStream","earlyChange","cachedData","bitsCached","maxLzwDictionarySize","lzwState","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","lastCode","estimatedDecodedSize","blockSize","prevCode","decodedLength","currentBufferLength","hasPrev","PredictorStream","predictor","readBlockTiff","readBlockPng","colors","pixBytes","rowBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","kk","prevRow","up","upLeft","left","pa","pb","pc","RunLengthStream","repeatHeader","Parser","lexer","allowStreams","recoveryMode","imageCache","_imageId","refill","buf1","getObj","buf2","tryShift","cipherTransform","makeInlineImage","makeStream","decryptString","findDefaultInlineStreamEnd","knownCommands","maybeEIPos","state","followingBytes","tmpLexer","Lexer","_hexStringWarn","numArgs","nextObj","knownCommand","variableArgs","findDCTDecodeInlineStreamEnd","markerLength","foundEOI","inlineStreamSkipEI","findASCII85DecodeInlineStreamEnd","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","dictMap","dictLength","beginInlineImagePos","Filter","filterName","filterZero","initialStreamPos","getInlineImageCacheKey","cacheEntry","imageStream","createStream","END_SIGNATURE","endLength","PARTIAL_SIGNATURE","normalLength","scanBytes","scanLength","found","part","partLen","skipToNextLine","nextChar","makeFilter","filterArray","paramsArray","specialChars","toHexDigit","_hexStringNumWarn","currentChar","peekChar","getNumber","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","numParen","charBuffered","getName","previousCh","getHexString","comment","nextCh","knownCommandFound","possibleCommand","Linearization","getInt","linDict","allowZeroValue","parser","obj1","obj2","obj3","hints","hintsLength","hint","getHints","objectNumberFirst","endFirst","numPages","mainXRefEntriesOffset","pageFirst","BUILT_IN_CMAPS","MAX_MAP_RANGE","CMap","builtInCMap","codespaceRanges","numCodespaceRanges","low","high","dstLow","lastByte","nextCharCode","mapBfRangeToArray","dst","contains","charCodeOf","indexOf","getMap","readCharCode","nn","codespaceRange","charcode","getCharCodeLength","isIdentityCMap","IdentityCMap","strToInt","expectString","expectInt","parseBfChar","parseBfRange","parseCidChar","parseCidRange","parseCodespaceRange","parseWMode","parseCMapName","parseCMap","fetchBuiltInCMap","previous","embeddedUseCMap","objLoop","extendCMap","createBuiltInCMap","useCodespaceRanges","cMapData","isCompressed","CMapFactory","parsedCMap","ISOAdobeCharset","ExpertCharset","ExpertSubsetCharset","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","StandardEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","getEncoding","encodingName","CFFStandardStrings","CharstringValidationData","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackDelta","stackFn","CFFParser","seacAnalysisEnabled","cff","CFF","parseHeader","nameIndex","parseIndex","endPos","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","parseDict","topDict","createDict","CFFTopDict","names","parseNameIndex","parseStringIndex","parsePrivateDict","isCIDFont","hasName","charStringOffset","charStringIndex","fontMatrix","fontBBox","charset","ascent","descent","ascentScaled","fdArrayIndex","dictRaw","fontDict","fdArray","parseCharsets","fdSelect","parseFDSelect","parseEncoding","charStringsAndSeacs","parseCharStrings","charStrings","localSubrIndex","privateDict","subrsIndex","seacs","widths","bytesLength","hdrSize","offSize","CFFHeader","parseOperand","b2","parseFloatOperand","operands","entries","cffIndex","CFFIndex","offsets","offsetSize","offsetStart","offsetEnd","CFFStrings","Type","cffDict","setByKey","parseCharString","callDepth","stackSize","validationCommand","seac","bias","subrNumber","hasVStems","firstStackClearing","charstring","valid","localSubrToUse","privateDictToUse","fdIndex","getFDIndex","nominalWidth","defaultWidth","emptyPrivateDictionary","parentDict","CFFPrivateDict","privateOffset","removeByName","privateDictEnd","dictData","setByName","subrsOffset","relativeOffset","cid","CFFCharset","CFFCharsetPredefinedTypes","ISO_ADOBE","EXPERT","EXPERT_SUBSET","format","raw","predefined","baseEncoding","dataStart","glyphsCount","rangesCount","gid","supplementsCount","sid","readSupplement","CFFEncoding","CFFFDSelect","duplicateFirstGlyph","glyphZero","hasGlyphId","NUM_STANDARD_CFF_STRINGS","getSID","objects","CFFDict","tables","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","createTables","layout","CFFTopDictLayout","CFFPrivateDictLayout","glyphIndex","CFFOffsetTracker","isTracking","track","location","setEntryLocation","dataOffset","offset1","offset2","offset3","offset4","CFFCompiler","compile","compileHeader","compileNameIndex","xuid","compiled","compileTopDicts","topDictTracker","trackers","compileStringIndex","compileIndex","compileEncoding","compileCharset","compileCharStrings","compileFDSelect","fontDictTrackers","compilePrivateDicts","encodeNumber","encodeInteger","encodeFloat","EncodeFloatRegExp","epsilon","nibbles","sanitizedName","dicts","removeCidKeys","fontDictTracker","fontDictData","compileDict","privateDictTracker","privateDictData","outputLength","subrs","offsetTracker","charStringsIndex","glyph","numGlyphs","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileTypedArray","lastFD","currentFD","numRanges","lastOffset","getGlyphsUnicode","AE","AEacute","AEmacron","AEsmall","Aacute","Aacutesmall","Abreve","Abreveacute","Abrevecyrillic","Abrevedotbelow","Abrevegrave","Abrevehookabove","Abrevetilde","Acaron","Acircle","Acircumflex","Acircumflexacute","Acircumflexdotbelow","Acircumflexgrave","Acircumflexhookabove","Acircumflexsmall","Acircumflextilde","Acute","Acutesmall","Acyrillic","Adblgrave","Adieresis","Adieresiscyrillic","Adieresismacron","Adieresissmall","Adotbelow","Adotmacron","Agrave","Agravesmall","Ahookabove","Aiecyrillic","Ainvertedbreve","Alpha","Alphatonos","Amacron","Amonospace","Aogonek","Aring","Aringacute","Aringbelow","Aringsmall","Asmall","Atilde","Atildesmall","Aybarmenian","Bcircle","Bdotaccent","Bdotbelow","Becyrillic","Benarmenian","Beta","Bhook","Blinebelow","Bmonospace","Brevesmall","Bsmall","Btopbar","Caarmenian","Cacute","Caron","Caronsmall","Ccaron","Ccedilla","Ccedillaacute","Ccedillasmall","Ccircle","Ccircumflex","Cdot","Cdotaccent","Cedillasmall","Chaarmenian","Cheabkhasiancyrillic","Checyrillic","Chedescenderabkhasiancyrillic","Chedescendercyrillic","Chedieresiscyrillic","Cheharmenian","Chekhakassiancyrillic","Cheverticalstrokecyrillic","Chi","Chook","Circumflexsmall","Cmonospace","Coarmenian","Csmall","DZ","DZcaron","Daarmenian","Dafrican","Dcaron","Dcedilla","Dcircle","Dcircumflexbelow","Dcroat","Ddotaccent","Ddotbelow","Decyrillic","Deicoptic","Delta","Deltagreek","Dhook","Dieresis","DieresisAcute","DieresisGrave","Dieresissmall","Digammagreek","Djecyrillic","Dlinebelow","Dmonospace","Dotaccentsmall","Dslash","Dsmall","Dtopbar","Dz","Dzcaron","Dzeabkhasiancyrillic","Dzecyrillic","Dzhecyrillic","Eacute","Eacutesmall","Ebreve","Ecaron","Ecedillabreve","Echarmenian","Ecircle","Ecircumflex","Ecircumflexacute","Ecircumflexbelow","Ecircumflexdotbelow","Ecircumflexgrave","Ecircumflexhookabove","Ecircumflexsmall","Ecircumflextilde","Ecyrillic","Edblgrave","Edieresis","Edieresissmall","Edot","Edotaccent","Edotbelow","Efcyrillic","Egrave","Egravesmall","Eharmenian","Ehookabove","Eightroman","Einvertedbreve","Eiotifiedcyrillic","Elcyrillic","Elevenroman","Emacron","Emacronacute","Emacrongrave","Emcyrillic","Emonospace","Encyrillic","Endescendercyrillic","Eng","Enghecyrillic","Enhookcyrillic","Eogonek","Eopen","Epsilon","Epsilontonos","Ercyrillic","Ereversed","Ereversedcyrillic","Escyrillic","Esdescendercyrillic","Esh","Esmall","Eta","Etarmenian","Etatonos","Eth","Ethsmall","Etilde","Etildebelow","Euro","Ezh","Ezhcaron","Ezhreversed","Fcircle","Fdotaccent","Feharmenian","Feicoptic","Fhook","Fitacyrillic","Fiveroman","Fmonospace","Fourroman","Fsmall","GBsquare","Gacute","Gamma","Gammaafrican","Gangiacoptic","Gbreve","Gcaron","Gcedilla","Gcircle","Gcircumflex","Gcommaaccent","Gdot","Gdotaccent","Gecyrillic","Ghadarmenian","Ghemiddlehookcyrillic","Ghestrokecyrillic","Gheupturncyrillic","Ghook","Gimarmenian","Gjecyrillic","Gmacron","Gmonospace","Grave","Gravesmall","Gsmall","Gsmallhook","Gstroke","H","H18533","H18543","H18551","H22073","HPsquare","Haabkhasiancyrillic","Hadescendercyrillic","Hardsigncyrillic","Hbar","Hbrevebelow","Hcedilla","Hcircle","Hcircumflex","Hdieresis","Hdotaccent","Hdotbelow","Hmonospace","Hoarmenian","Horicoptic","Hsmall","Hungarumlaut","Hungarumlautsmall","Hzsquare","I","IAcyrillic","IJ","IUcyrillic","Iacute","Iacutesmall","Ibreve","Icaron","Icircle","Icircumflex","Icircumflexsmall","Icyrillic","Idblgrave","Idieresis","Idieresisacute","Idieresiscyrillic","Idieresissmall","Idot","Idotaccent","Idotbelow","Iebrevecyrillic","Iecyrillic","Ifraktur","Igrave","Igravesmall","Ihookabove","Iicyrillic","Iinvertedbreve","Iishortcyrillic","Imacron","Imacroncyrillic","Imonospace","Iniarmenian","Iocyrillic","Iogonek","Iota","Iotaafrican","Iotadieresis","Iotatonos","Ismall","Istroke","Itilde","Itildebelow","Izhitsacyrillic","Izhitsadblgravecyrillic","J","Jaarmenian","Jcircle","Jcircumflex","Jecyrillic","Jheharmenian","Jmonospace","Jsmall","KBsquare","KKsquare","Kabashkircyrillic","Kacute","Kacyrillic","Kadescendercyrillic","Kahookcyrillic","Kappa","Kastrokecyrillic","Kaverticalstrokecyrillic","Kcaron","Kcedilla","Kcircle","Kcommaaccent","Kdotbelow","Keharmenian","Kenarmenian","Khacyrillic","Kheicoptic","Khook","Kjecyrillic","Klinebelow","Kmonospace","Koppacyrillic","Koppagreek","Ksicyrillic","Ksmall","LJ","LL","Lacute","Lambda","Lcaron","Lcedilla","Lcircle","Lcircumflexbelow","Lcommaaccent","Ldot","Ldotaccent","Ldotbelow","Ldotbelowmacron","Liwnarmenian","Lj","Ljecyrillic","Llinebelow","Lmonospace","Lslash","Lslashsmall","Lsmall","MBsquare","Macron","Macronsmall","Macute","Mcircle","Mdotaccent","Mdotbelow","Menarmenian","Mmonospace","Msmall","Mturned","Mu","NJ","Nacute","Ncaron","Ncedilla","Ncircle","Ncircumflexbelow","Ncommaaccent","Ndotaccent","Ndotbelow","Nhookleft","Nineroman","Nj","Njecyrillic","Nlinebelow","Nmonospace","Nowarmenian","Nsmall","Ntilde","Ntildesmall","Nu","OE","OEsmall","Oacute","Oacutesmall","Obarredcyrillic","Obarreddieresiscyrillic","Obreve","Ocaron","Ocenteredtilde","Ocircle","Ocircumflex","Ocircumflexacute","Ocircumflexdotbelow","Ocircumflexgrave","Ocircumflexhookabove","Ocircumflexsmall","Ocircumflextilde","Ocyrillic","Odblacute","Odblgrave","Odieresis","Odieresiscyrillic","Odieresissmall","Odotbelow","Ogoneksmall","Ograve","Ogravesmall","Oharmenian","Ohm","Ohookabove","Ohorn","Ohornacute","Ohorndotbelow","Ohorngrave","Ohornhookabove","Ohorntilde","Ohungarumlaut","Oi","Oinvertedbreve","Omacron","Omacronacute","Omacrongrave","Omega","Omegacyrillic","Omegagreek","Omegaroundcyrillic","Omegatitlocyrillic","Omegatonos","Omicron","Omicrontonos","Omonospace","Oneroman","Oogonek","Oogonekmacron","Oopen","Oslash","Oslashacute","Oslashsmall","Osmall","Ostrokeacute","Otcyrillic","Otilde","Otildeacute","Otildedieresis","Otildesmall","P","Pacute","Pcircle","Pdotaccent","Pecyrillic","Peharmenian","Pemiddlehookcyrillic","Phi","Phook","Pi","Piwrarmenian","Pmonospace","Psi","Psicyrillic","Psmall","Q","Qcircle","Qmonospace","Qsmall","R","Raarmenian","Racute","Rcaron","Rcedilla","Rcircle","Rcommaaccent","Rdblgrave","Rdotaccent","Rdotbelow","Rdotbelowmacron","Reharmenian","Rfraktur","Rho","Ringsmall","Rinvertedbreve","Rlinebelow","Rmonospace","Rsmall","Rsmallinverted","Rsmallinvertedsuperior","S","SF010000","SF020000","SF030000","SF040000","SF050000","SF060000","SF070000","SF080000","SF090000","SF100000","SF110000","SF190000","SF200000","SF210000","SF220000","SF230000","SF240000","SF250000","SF260000","SF270000","SF280000","SF360000","SF370000","SF380000","SF390000","SF400000","SF410000","SF420000","SF430000","SF440000","SF450000","SF460000","SF470000","SF480000","SF490000","SF500000","SF510000","SF520000","SF530000","SF540000","Sacute","Sacutedotaccent","Sampigreek","Scaron","Scarondotaccent","Scaronsmall","Scedilla","Schwa","Schwacyrillic","Schwadieresiscyrillic","Scircle","Scircumflex","Scommaaccent","Sdotaccent","Sdotbelow","Sdotbelowdotaccent","Seharmenian","Sevenroman","Shaarmenian","Shacyrillic","Shchacyrillic","Sheicoptic","Shhacyrillic","Shimacoptic","Sigma","Sixroman","Smonospace","Softsigncyrillic","Ssmall","Stigmagreek","T","Tau","Tbar","Tcaron","Tcedilla","Tcircle","Tcircumflexbelow","Tcommaaccent","Tdotaccent","Tdotbelow","Tecyrillic","Tedescendercyrillic","Tenroman","Tetsecyrillic","Theta","Thook","Thorn","Thornsmall","Threeroman","Tildesmall","Tiwnarmenian","Tlinebelow","Tmonospace","Toarmenian","Tonefive","Tonesix","Tonetwo","Tretroflexhook","Tsecyrillic","Tshecyrillic","Tsmall","Twelveroman","Tworoman","Uacute","Uacutesmall","Ubreve","Ucaron","Ucircle","Ucircumflex","Ucircumflexbelow","Ucircumflexsmall","Ucyrillic","Udblacute","Udblgrave","Udieresis","Udieresisacute","Udieresisbelow","Udieresiscaron","Udieresiscyrillic","Udieresisgrave","Udieresismacron","Udieresissmall","Udotbelow","Ugrave","Ugravesmall","Uhookabove","Uhorn","Uhornacute","Uhorndotbelow","Uhorngrave","Uhornhookabove","Uhorntilde","Uhungarumlaut","Uhungarumlautcyrillic","Uinvertedbreve","Ukcyrillic","Umacron","Umacroncyrillic","Umacrondieresis","Umonospace","Uogonek","Upsilon","Upsilon1","Upsilonacutehooksymbolgreek","Upsilonafrican","Upsilondieresis","Upsilondieresishooksymbolgreek","Upsilonhooksymbol","Upsilontonos","Uring","Ushortcyrillic","Usmall","Ustraightcyrillic","Ustraightstrokecyrillic","Utilde","Utildeacute","Utildebelow","Vcircle","Vdotbelow","Vecyrillic","Vewarmenian","Vhook","Vmonospace","Voarmenian","Vsmall","Vtilde","W","Wacute","Wcircle","Wcircumflex","Wdieresis","Wdotaccent","Wdotbelow","Wgrave","Wmonospace","Wsmall","Xcircle","Xdieresis","Xdotaccent","Xeharmenian","Xi","Xmonospace","Xsmall","Yacute","Yacutesmall","Yatcyrillic","Ycircle","Ycircumflex","Ydieresis","Ydieresissmall","Ydotaccent","Ydotbelow","Yericyrillic","Yerudieresiscyrillic","Ygrave","Yhook","Yhookabove","Yiarmenian","Yicyrillic","Yiwnarmenian","Ymonospace","Ysmall","Ytilde","Yusbigcyrillic","Yusbigiotifiedcyrillic","Yuslittlecyrillic","Yuslittleiotifiedcyrillic","Zaarmenian","Zacute","Zcaron","Zcaronsmall","Zcircle","Zcircumflex","Zdot","Zdotaccent","Zdotbelow","Zecyrillic","Zedescendercyrillic","Zedieresiscyrillic","Zeta","Zhearmenian","Zhebrevecyrillic","Zhecyrillic","Zhedescendercyrillic","Zhedieresiscyrillic","Zlinebelow","Zmonospace","Zsmall","Zstroke","aabengali","aacute","aadeva","aagujarati","aagurmukhi","aamatragurmukhi","aarusquare","aavowelsignbengali","aavowelsigndeva","aavowelsigngujarati","abbreviationmarkarmenian","abbreviationsigndeva","abengali","abopomofo","abreve","abreveacute","abrevecyrillic","abrevedotbelow","abrevegrave","abrevehookabove","abrevetilde","acaron","acircle","acircumflex","acircumflexacute","acircumflexdotbelow","acircumflexgrave","acircumflexhookabove","acircumflextilde","acute","acutebelowcmb","acutecmb","acutecomb","acutedeva","acutelowmod","acutetonecmb","acyrillic","adblgrave","addakgurmukhi","adeva","adieresis","adieresiscyrillic","adieresismacron","adotbelow","adotmacron","ae","aeacute","aekorean","aemacron","afii00208","afii08941","afii10017","afii10018","afii10019","afii10020","afii10021","afii10022","afii10023","afii10024","afii10025","afii10026","afii10027","afii10028","afii10029","afii10030","afii10031","afii10032","afii10033","afii10034","afii10035","afii10036","afii10037","afii10038","afii10039","afii10040","afii10041","afii10042","afii10043","afii10044","afii10045","afii10046","afii10047","afii10048","afii10049","afii10050","afii10051","afii10052","afii10053","afii10054","afii10055","afii10056","afii10057","afii10058","afii10059","afii10060","afii10061","afii10062","afii10063","afii10064","afii10065","afii10066","afii10067","afii10068","afii10069","afii10070","afii10071","afii10072","afii10073","afii10074","afii10075","afii10076","afii10077","afii10078","afii10079","afii10080","afii10081","afii10082","afii10083","afii10084","afii10085","afii10086","afii10087","afii10088","afii10089","afii10090","afii10091","afii10092","afii10093","afii10094","afii10095","afii10096","afii10097","afii10098","afii10099","afii10100","afii10101","afii10102","afii10103","afii10104","afii10105","afii10106","afii10107","afii10108","afii10109","afii10110","afii10145","afii10146","afii10147","afii10148","afii10192","afii10193","afii10194","afii10195","afii10196","afii10831","afii10832","afii10846","afii299","afii300","afii301","afii57381","afii57388","afii57392","afii57393","afii57394","afii57395","afii57396","afii57397","afii57398","afii57399","afii57400","afii57401","afii57403","afii57407","afii57409","afii57410","afii57411","afii57412","afii57413","afii57414","afii57415","afii57416","afii57417","afii57418","afii57419","afii57420","afii57421","afii57422","afii57423","afii57424","afii57425","afii57426","afii57427","afii57428","afii57429","afii57430","afii57431","afii57432","afii57433","afii57434","afii57440","afii57441","afii57442","afii57443","afii57444","afii57445","afii57446","afii57448","afii57449","afii57450","afii57451","afii57452","afii57453","afii57454","afii57455","afii57456","afii57457","afii57458","afii57470","afii57505","afii57506","afii57507","afii57508","afii57509","afii57511","afii57512","afii57513","afii57514","afii57519","afii57534","afii57636","afii57645","afii57658","afii57664","afii57665","afii57666","afii57667","afii57668","afii57669","afii57670","afii57671","afii57672","afii57673","afii57674","afii57675","afii57676","afii57677","afii57678","afii57679","afii57680","afii57681","afii57682","afii57683","afii57684","afii57685","afii57686","afii57687","afii57688","afii57689","afii57690","afii57694","afii57695","afii57700","afii57705","afii57716","afii57717","afii57718","afii57723","afii57793","afii57794","afii57795","afii57796","afii57797","afii57798","afii57799","afii57800","afii57801","afii57802","afii57803","afii57804","afii57806","afii57807","afii57839","afii57841","afii57842","afii57929","afii61248","afii61289","afii61352","afii61573","afii61574","afii61575","afii61664","afii63167","afii64937","agrave","agujarati","agurmukhi","ahiragana","ahookabove","aibengali","aibopomofo","aideva","aiecyrillic","aigujarati","aigurmukhi","aimatragurmukhi","ainarabic","ainfinalarabic","aininitialarabic","ainmedialarabic","ainvertedbreve","aivowelsignbengali","aivowelsigndeva","aivowelsigngujarati","akatakana","akatakanahalfwidth","akorean","alef","alefarabic","alefdageshhebrew","aleffinalarabic","alefhamzaabovearabic","alefhamzaabovefinalarabic","alefhamzabelowarabic","alefhamzabelowfinalarabic","alefhebrew","aleflamedhebrew","alefmaddaabovearabic","alefmaddaabovefinalarabic","alefmaksuraarabic","alefmaksurafinalarabic","alefmaksurainitialarabic","alefmaksuramedialarabic","alefpatahhebrew","alefqamatshebrew","aleph","allequal","alpha","alphatonos","amacron","amonospace","ampersand","ampersandmonospace","ampersandsmall","amsquare","anbopomofo","angbopomofo","angbracketleft","angbracketright","angkhankhuthai","anglebracketleft","anglebracketleftvertical","anglebracketright","anglebracketrightvertical","angleleft","angleright","angstrom","anoteleia","anudattadeva","anusvarabengali","anusvaradeva","anusvaragujarati","aogonek","apaatosquare","aparen","apostrophearmenian","apostrophemod","apple","approaches","approxequal","approxequalorimage","approximatelyequal","araeaekorean","araeakorean","arc","arighthalfring","aring","aringacute","aringbelow","arrowboth","arrowdashdown","arrowdashleft","arrowdashright","arrowdashup","arrowdblboth","arrowdbldown","arrowdblleft","arrowdblright","arrowdblup","arrowdown","arrowdownleft","arrowdownright","arrowdownwhite","arrowheaddownmod","arrowheadleftmod","arrowheadrightmod","arrowheadupmod","arrowhorizex","arrowleft","arrowleftdbl","arrowleftdblstroke","arrowleftoverright","arrowleftwhite","arrowright","arrowrightdblstroke","arrowrightheavy","arrowrightoverleft","arrowrightwhite","arrowtableft","arrowtabright","arrowup","arrowupdn","arrowupdnbse","arrowupdownbase","arrowupleft","arrowupleftofdown","arrowupright","arrowupwhite","arrowvertex","asciicircum","asciicircummonospace","asciitilde","asciitildemonospace","ascript","ascriptturned","asmallhiragana","asmallkatakana","asmallkatakanahalfwidth","asterisk","asteriskaltonearabic","asteriskarabic","asteriskmath","asteriskmonospace","asterisksmall","asterism","asuperior","asymptoticallyequal","atilde","atmonospace","atsmall","aturned","aubengali","aubopomofo","audeva","augujarati","augurmukhi","aulengthmarkbengali","aumatragurmukhi","auvowelsignbengali","auvowelsigndeva","auvowelsigngujarati","avagrahadeva","aybarmenian","ayin","ayinaltonehebrew","ayinhebrew","babengali","backslash","backslashmonospace","badeva","bagujarati","bagurmukhi","bahiragana","bahtthai","bakatakana","bar","barmonospace","bbopomofo","bcircle","bdotaccent","bdotbelow","beamedsixteenthnotes","because","becyrillic","beharabic","behfinalarabic","behinitialarabic","behiragana","behmedialarabic","behmeeminitialarabic","behmeemisolatedarabic","behnoonfinalarabic","bekatakana","benarmenian","bet","beta","betasymbolgreek","betdagesh","betdageshhebrew","bethebrew","betrafehebrew","bhabengali","bhadeva","bhagujarati","bhagurmukhi","bhook","bihiragana","bikatakana","bilabialclick","bindigurmukhi","birusquare","blackcircle","blackdiamond","blackdownpointingtriangle","blackleftpointingpointer","blackleftpointingtriangle","blacklenticularbracketleft","blacklenticularbracketleftvertical","blacklenticularbracketright","blacklenticularbracketrightvertical","blacklowerlefttriangle","blacklowerrighttriangle","blackrectangle","blackrightpointingpointer","blackrightpointingtriangle","blacksmallsquare","blacksmilingface","blacksquare","blackstar","blackupperlefttriangle","blackupperrighttriangle","blackuppointingsmalltriangle","blackuppointingtriangle","blank","blinebelow","bmonospace","bobaimaithai","bohiragana","bokatakana","bparen","bqsquare","braceex","braceleft","braceleftbt","braceleftmid","braceleftmonospace","braceleftsmall","bracelefttp","braceleftvertical","braceright","bracerightbt","bracerightmid","bracerightmonospace","bracerightsmall","bracerighttp","bracerightvertical","bracketleft","bracketleftbt","bracketleftex","bracketleftmonospace","bracketlefttp","bracketright","bracketrightbt","bracketrightex","bracketrightmonospace","bracketrighttp","breve","brevebelowcmb","brevecmb","breveinvertedbelowcmb","breveinvertedcmb","breveinverteddoublecmb","bridgebelowcmb","bridgeinvertedbelowcmb","brokenbar","bstroke","bsuperior","btopbar","buhiragana","bukatakana","bullet","bulletinverse","bulletoperator","bullseye","caarmenian","cabengali","cacute","cadeva","cagujarati","cagurmukhi","calsquare","candrabindubengali","candrabinducmb","candrabindudeva","candrabindugujarati","capslock","careof","caron","caronbelowcmb","caroncmb","carriagereturn","cbopomofo","ccaron","ccedilla","ccedillaacute","ccircle","ccircumflex","ccurl","cdot","cdotaccent","cdsquare","cedilla","cedillacmb","cent","centigrade","centinferior","centmonospace","centoldstyle","centsuperior","chaarmenian","chabengali","chadeva","chagujarati","chagurmukhi","chbopomofo","cheabkhasiancyrillic","checkmark","checyrillic","chedescenderabkhasiancyrillic","chedescendercyrillic","chedieresiscyrillic","cheharmenian","chekhakassiancyrillic","cheverticalstrokecyrillic","chi","chieuchacirclekorean","chieuchaparenkorean","chieuchcirclekorean","chieuchkorean","chieuchparenkorean","chochangthai","chochanthai","chochingthai","chochoethai","chook","cieucacirclekorean","cieucaparenkorean","cieuccirclekorean","cieuckorean","cieucparenkorean","cieucuparenkorean","circle","circlecopyrt","circlemultiply","circleot","circleplus","circlepostalmark","circlewithlefthalfblack","circlewithrighthalfblack","circumflex","circumflexbelowcmb","circumflexcmb","clickalveolar","clickdental","clicklateral","clickretroflex","club","clubsuitblack","clubsuitwhite","cmcubedsquare","cmonospace","cmsquaredsquare","coarmenian","colon","colonmonetary","colonmonospace","colonsign","colonsmall","colontriangularhalfmod","colontriangularmod","comma","commaabovecmb","commaaboverightcmb","commaaccent","commaarabic","commaarmenian","commainferior","commamonospace","commareversedabovecmb","commareversedmod","commasmall","commasuperior","commaturnedabovecmb","commaturnedmod","compass","congruent","contourintegral","control","controlACK","controlBEL","controlBS","controlCAN","controlCR","controlDC1","controlDC2","controlDC3","controlDC4","controlDEL","controlDLE","controlEM","controlENQ","controlEOT","controlESC","controlETB","controlETX","controlFF","controlFS","controlGS","controlHT","controlLF","controlNAK","controlNULL","controlRS","controlSI","controlSO","controlSOT","controlSTX","controlSUB","controlSYN","controlUS","controlVT","copyright","copyrightsans","copyrightserif","cornerbracketleft","cornerbracketlefthalfwidth","cornerbracketleftvertical","cornerbracketright","cornerbracketrighthalfwidth","cornerbracketrightvertical","corporationsquare","cosquare","coverkgsquare","cparen","cruzeiro","cstretched","curlyand","curlyor","currency","cyrBreve","cyrFlex","cyrbreve","cyrflex","daarmenian","dabengali","dadarabic","dadeva","dadfinalarabic","dadinitialarabic","dadmedialarabic","dagesh","dageshhebrew","dagger","daggerdbl","dagujarati","dagurmukhi","dahiragana","dakatakana","dalarabic","dalet","daletdagesh","daletdageshhebrew","dalethebrew","dalfinalarabic","dammaarabic","dammalowarabic","dammatanaltonearabic","dammatanarabic","danda","dargahebrew","dargalefthebrew","dasiapneumatacyrilliccmb","dblGrave","dblanglebracketleft","dblanglebracketleftvertical","dblanglebracketright","dblanglebracketrightvertical","dblarchinvertedbelowcmb","dblarrowleft","dblarrowright","dbldanda","dblgrave","dblgravecmb","dblintegral","dbllowline","dbllowlinecmb","dbloverlinecmb","dblprimemod","dblverticalbar","dblverticallineabovecmb","dbopomofo","dbsquare","dcaron","dcedilla","dcircle","dcircumflexbelow","dcroat","ddabengali","ddadeva","ddagujarati","ddagurmukhi","ddalarabic","ddalfinalarabic","dddhadeva","ddhabengali","ddhadeva","ddhagujarati","ddhagurmukhi","ddotaccent","ddotbelow","decimalseparatorarabic","decimalseparatorpersian","decyrillic","degree","dehihebrew","dehiragana","deicoptic","dekatakana","deleteleft","deleteright","deltaturned","denominatorminusonenumeratorbengali","dezh","dhabengali","dhadeva","dhagujarati","dhagurmukhi","dhook","dialytikatonos","dialytikatonoscmb","diamond","diamondsuitwhite","dieresis","dieresisacute","dieresisbelowcmb","dieresiscmb","dieresisgrave","dieresistonos","dihiragana","dikatakana","dittomark","divide","divides","divisionslash","djecyrillic","dkshade","dlinebelow","dlsquare","dmacron","dmonospace","dnblock","dochadathai","dodekthai","dohiragana","dokatakana","dollar","dollarinferior","dollarmonospace","dollaroldstyle","dollarsmall","dollarsuperior","dong","dorusquare","dotaccent","dotaccentcmb","dotbelowcmb","dotbelowcomb","dotkatakana","dotlessi","dotlessj","dotlessjstrokehook","dotmath","dottedcircle","doubleyodpatah","doubleyodpatahhebrew","downtackbelowcmb","downtackmod","dparen","dsuperior","dtail","dtopbar","duhiragana","dukatakana","dz","dzaltone","dzcaron","dzcurl","dzeabkhasiancyrillic","dzecyrillic","dzhecyrillic","eacute","earth","ebengali","ebopomofo","ebreve","ecandradeva","ecandragujarati","ecandravowelsigndeva","ecandravowelsigngujarati","ecaron","ecedillabreve","echarmenian","echyiwnarmenian","ecircle","ecircumflex","ecircumflexacute","ecircumflexbelow","ecircumflexdotbelow","ecircumflexgrave","ecircumflexhookabove","ecircumflextilde","ecyrillic","edblgrave","edeva","edieresis","edot","edotaccent","edotbelow","eegurmukhi","eematragurmukhi","efcyrillic","egrave","egujarati","eharmenian","ehbopomofo","ehiragana","ehookabove","eibopomofo","eight","eightarabic","eightbengali","eightcircle","eightcircleinversesansserif","eightdeva","eighteencircle","eighteenparen","eighteenperiod","eightgujarati","eightgurmukhi","eighthackarabic","eighthangzhou","eighthnotebeamed","eightideographicparen","eightinferior","eightmonospace","eightoldstyle","eightparen","eightperiod","eightpersian","eightroman","eightsuperior","eightthai","einvertedbreve","eiotifiedcyrillic","ekatakana","ekatakanahalfwidth","ekonkargurmukhi","ekorean","elcyrillic","elevencircle","elevenparen","elevenperiod","elevenroman","ellipsis","ellipsisvertical","emacron","emacronacute","emacrongrave","emcyrillic","emdash","emdashvertical","emonospace","emphasismarkarmenian","emptyset","enbopomofo","encyrillic","endash","endashvertical","endescendercyrillic","eng","engbopomofo","enghecyrillic","enhookcyrillic","enspace","eogonek","eokorean","eopen","eopenclosed","eopenreversed","eopenreversedclosed","eopenreversedhook","eparen","epsilontonos","equal","equalmonospace","equalsmall","equalsuperior","equivalence","erbopomofo","ercyrillic","ereversed","ereversedcyrillic","escyrillic","esdescendercyrillic","esh","eshcurl","eshortdeva","eshortvowelsigndeva","eshreversedloop","eshsquatreversed","esmallhiragana","esmallkatakana","esmallkatakanahalfwidth","estimated","esuperior","eta","etarmenian","etatonos","eth","etilde","etildebelow","etnahtafoukhhebrew","etnahtafoukhlefthebrew","etnahtahebrew","etnahtalefthebrew","eturned","eukorean","euro","evowelsignbengali","evowelsigndeva","evowelsigngujarati","exclam","exclamarmenian","exclamdbl","exclamdown","exclamdownsmall","exclammonospace","exclamsmall","existential","ezh","ezhcaron","ezhcurl","ezhreversed","ezhtail","fadeva","fagurmukhi","fahrenheit","fathaarabic","fathalowarabic","fathatanarabic","fbopomofo","fcircle","fdotaccent","feharabic","feharmenian","fehfinalarabic","fehinitialarabic","fehmedialarabic","feicoptic","female","ff","f_f","ffi","f_f_i","ffl","f_f_l","fi","f_i","fifteencircle","fifteenparen","fifteenperiod","figuredash","filledbox","filledrect","finalkaf","finalkafdagesh","finalkafdageshhebrew","finalkafhebrew","finalmem","finalmemhebrew","finalnun","finalnunhebrew","finalpe","finalpehebrew","finaltsadi","finaltsadihebrew","firsttonechinese","fisheye","fitacyrillic","five","fivearabic","fivebengali","fivecircle","fivecircleinversesansserif","fivedeva","fiveeighths","fivegujarati","fivegurmukhi","fivehackarabic","fivehangzhou","fiveideographicparen","fiveinferior","fivemonospace","fiveoldstyle","fiveparen","fiveperiod","fivepersian","fiveroman","fivesuperior","fivethai","fl","f_l","florin","fmonospace","fmsquare","fofanthai","fofathai","fongmanthai","forall","four","fourarabic","fourbengali","fourcircle","fourcircleinversesansserif","fourdeva","fourgujarati","fourgurmukhi","fourhackarabic","fourhangzhou","fourideographicparen","fourinferior","fourmonospace","fournumeratorbengali","fouroldstyle","fourparen","fourperiod","fourpersian","fourroman","foursuperior","fourteencircle","fourteenparen","fourteenperiod","fourthai","fourthtonechinese","fparen","fraction","franc","gabengali","gacute","gadeva","gafarabic","gaffinalarabic","gafinitialarabic","gafmedialarabic","gagujarati","gagurmukhi","gahiragana","gakatakana","gammalatinsmall","gammasuperior","gangiacoptic","gbopomofo","gbreve","gcaron","gcedilla","gcircle","gcircumflex","gcommaaccent","gdot","gdotaccent","gecyrillic","gehiragana","gekatakana","geometricallyequal","gereshaccenthebrew","gereshhebrew","gereshmuqdamhebrew","germandbls","gershayimaccenthebrew","gershayimhebrew","getamark","ghabengali","ghadarmenian","ghadeva","ghagujarati","ghagurmukhi","ghainarabic","ghainfinalarabic","ghaininitialarabic","ghainmedialarabic","ghemiddlehookcyrillic","ghestrokecyrillic","gheupturncyrillic","ghhadeva","ghhagurmukhi","ghook","ghzsquare","gihiragana","gikatakana","gimarmenian","gimel","gimeldagesh","gimeldageshhebrew","gimelhebrew","gjecyrillic","glottalinvertedstroke","glottalstop","glottalstopinverted","glottalstopmod","glottalstopreversed","glottalstopreversedmod","glottalstopreversedsuperior","glottalstopstroke","glottalstopstrokereversed","gmacron","gmonospace","gohiragana","gokatakana","gparen","gpasquare","gradient","grave","gravebelowcmb","gravecmb","gravecomb","gravedeva","gravelowmod","gravemonospace","gravetonecmb","greater","greaterequal","greaterequalorless","greatermonospace","greaterorequivalent","greaterorless","greateroverequal","greatersmall","gscript","gstroke","guhiragana","guillemotleft","guillemotright","guilsinglleft","guilsinglright","gukatakana","guramusquare","gysquare","haabkhasiancyrillic","haaltonearabic","habengali","hadescendercyrillic","hadeva","hagujarati","hagurmukhi","haharabic","hahfinalarabic","hahinitialarabic","hahiragana","hahmedialarabic","haitusquare","hakatakana","hakatakanahalfwidth","halantgurmukhi","hamzaarabic","hamzalowarabic","hangulfiller","hardsigncyrillic","harpoonleftbarbup","harpoonrightbarbup","hasquare","hatafpatah","hatafpatah16","hatafpatah23","hatafpatah2f","hatafpatahhebrew","hatafpatahnarrowhebrew","hatafpatahquarterhebrew","hatafpatahwidehebrew","hatafqamats","hatafqamats1b","hatafqamats28","hatafqamats34","hatafqamatshebrew","hatafqamatsnarrowhebrew","hatafqamatsquarterhebrew","hatafqamatswidehebrew","hatafsegol","hatafsegol17","hatafsegol24","hatafsegol30","hatafsegolhebrew","hatafsegolnarrowhebrew","hatafsegolquarterhebrew","hatafsegolwidehebrew","hbar","hbopomofo","hbrevebelow","hcedilla","hcircle","hcircumflex","hdieresis","hdotaccent","hdotbelow","he","heart","heartsuitblack","heartsuitwhite","hedagesh","hedageshhebrew","hehaltonearabic","heharabic","hehebrew","hehfinalaltonearabic","hehfinalalttwoarabic","hehfinalarabic","hehhamzaabovefinalarabic","hehhamzaaboveisolatedarabic","hehinitialaltonearabic","hehinitialarabic","hehiragana","hehmedialaltonearabic","hehmedialarabic","heiseierasquare","hekatakana","hekatakanahalfwidth","hekutaarusquare","henghook","herutusquare","het","hethebrew","hhook","hhooksuperior","hieuhacirclekorean","hieuhaparenkorean","hieuhcirclekorean","hieuhkorean","hieuhparenkorean","hihiragana","hikatakana","hikatakanahalfwidth","hiriq","hiriq14","hiriq21","hiriq2d","hiriqhebrew","hiriqnarrowhebrew","hiriqquarterhebrew","hiriqwidehebrew","hlinebelow","hmonospace","hoarmenian","hohipthai","hohiragana","hokatakana","hokatakanahalfwidth","holam","holam19","holam26","holam32","holamhebrew","holamnarrowhebrew","holamquarterhebrew","holamwidehebrew","honokhukthai","hookabovecomb","hookcmb","hookpalatalizedbelowcmb","hookretroflexbelowcmb","hoonsquare","horicoptic","horizontalbar","horncmb","hotsprings","house","hparen","hsuperior","hturned","huhiragana","huiitosquare","hukatakana","hukatakanahalfwidth","hungarumlaut","hungarumlautcmb","hv","hyphen","hypheninferior","hyphenmonospace","hyphensmall","hyphensuperior","hyphentwo","iacute","iacyrillic","ibengali","ibopomofo","ibreve","icaron","icircle","icircumflex","icyrillic","idblgrave","ideographearthcircle","ideographfirecircle","ideographicallianceparen","ideographiccallparen","ideographiccentrecircle","ideographicclose","ideographiccomma","ideographiccommaleft","ideographiccongratulationparen","ideographiccorrectcircle","ideographicearthparen","ideographicenterpriseparen","ideographicexcellentcircle","ideographicfestivalparen","ideographicfinancialcircle","ideographicfinancialparen","ideographicfireparen","ideographichaveparen","ideographichighcircle","ideographiciterationmark","ideographiclaborcircle","ideographiclaborparen","ideographicleftcircle","ideographiclowcircle","ideographicmedicinecircle","ideographicmetalparen","ideographicmoonparen","ideographicnameparen","ideographicperiod","ideographicprintcircle","ideographicreachparen","ideographicrepresentparen","ideographicresourceparen","ideographicrightcircle","ideographicsecretcircle","ideographicselfparen","ideographicsocietyparen","ideographicspace","ideographicspecialparen","ideographicstockparen","ideographicstudyparen","ideographicsunparen","ideographicsuperviseparen","ideographicwaterparen","ideographicwoodparen","ideographiczero","ideographmetalcircle","ideographmooncircle","ideographnamecircle","ideographsuncircle","ideographwatercircle","ideographwoodcircle","ideva","idieresis","idieresisacute","idieresiscyrillic","idotbelow","iebrevecyrillic","iecyrillic","ieungacirclekorean","ieungaparenkorean","ieungcirclekorean","ieungkorean","ieungparenkorean","igrave","igujarati","igurmukhi","ihiragana","ihookabove","iibengali","iicyrillic","iideva","iigujarati","iigurmukhi","iimatragurmukhi","iinvertedbreve","iishortcyrillic","iivowelsignbengali","iivowelsigndeva","iivowelsigngujarati","ij","ikatakana","ikatakanahalfwidth","ikorean","ilde","iluyhebrew","imacron","imacroncyrillic","imageorapproximatelyequal","imatragurmukhi","imonospace","infinity","iniarmenian","integral","integralbottom","integralbt","integralex","integraltop","integraltp","intersection","intisquare","invbullet","invcircle","invsmileface","iocyrillic","iogonek","iota","iotadieresis","iotadieresistonos","iotalatin","iotatonos","iparen","irigurmukhi","ismallhiragana","ismallkatakana","ismallkatakanahalfwidth","issharbengali","istroke","isuperior","iterationhiragana","iterationkatakana","itilde","itildebelow","iubopomofo","iucyrillic","ivowelsignbengali","ivowelsigndeva","ivowelsigngujarati","izhitsacyrillic","izhitsadblgravecyrillic","jaarmenian","jabengali","jadeva","jagujarati","jagurmukhi","jbopomofo","jcaron","jcircle","jcircumflex","jcrossedtail","jdotlessstroke","jecyrillic","jeemarabic","jeemfinalarabic","jeeminitialarabic","jeemmedialarabic","jeharabic","jehfinalarabic","jhabengali","jhadeva","jhagujarati","jhagurmukhi","jheharmenian","jis","jmonospace","jparen","jsuperior","kabashkircyrillic","kabengali","kacute","kacyrillic","kadescendercyrillic","kadeva","kaf","kafarabic","kafdagesh","kafdageshhebrew","kaffinalarabic","kafhebrew","kafinitialarabic","kafmedialarabic","kafrafehebrew","kagujarati","kagurmukhi","kahiragana","kahookcyrillic","kakatakana","kakatakanahalfwidth","kappa","kappasymbolgreek","kapyeounmieumkorean","kapyeounphieuphkorean","kapyeounpieupkorean","kapyeounssangpieupkorean","karoriisquare","kashidaautoarabic","kashidaautonosidebearingarabic","kasmallkatakana","kasquare","kasraarabic","kasratanarabic","kastrokecyrillic","katahiraprolongmarkhalfwidth","kaverticalstrokecyrillic","kbopomofo","kcalsquare","kcaron","kcedilla","kcircle","kcommaaccent","kdotbelow","keharmenian","kehiragana","kekatakana","kekatakanahalfwidth","kenarmenian","kesmallkatakana","kgreenlandic","khabengali","khacyrillic","khadeva","khagujarati","khagurmukhi","khaharabic","khahfinalarabic","khahinitialarabic","khahmedialarabic","kheicoptic","khhadeva","khhagurmukhi","khieukhacirclekorean","khieukhaparenkorean","khieukhcirclekorean","khieukhkorean","khieukhparenkorean","khokhaithai","khokhonthai","khokhuatthai","khokhwaithai","khomutthai","khook","khorakhangthai","khzsquare","kihiragana","kikatakana","kikatakanahalfwidth","kiroguramusquare","kiromeetorusquare","kirosquare","kiyeokacirclekorean","kiyeokaparenkorean","kiyeokcirclekorean","kiyeokkorean","kiyeokparenkorean","kiyeoksioskorean","kjecyrillic","klinebelow","klsquare","kmcubedsquare","kmonospace","kmsquaredsquare","kohiragana","kohmsquare","kokaithai","kokatakana","kokatakanahalfwidth","kooposquare","koppacyrillic","koreanstandardsymbol","koroniscmb","kparen","kpasquare","ksicyrillic","ktsquare","kturned","kuhiragana","kukatakana","kukatakanahalfwidth","kvsquare","kwsquare","labengali","lacute","ladeva","lagujarati","lagurmukhi","lakkhangyaothai","lamaleffinalarabic","lamalefhamzaabovefinalarabic","lamalefhamzaaboveisolatedarabic","lamalefhamzabelowfinalarabic","lamalefhamzabelowisolatedarabic","lamalefisolatedarabic","lamalefmaddaabovefinalarabic","lamalefmaddaaboveisolatedarabic","lamarabic","lambda","lambdastroke","lamed","lameddagesh","lameddageshhebrew","lamedhebrew","lamfinalarabic","lamhahinitialarabic","laminitialarabic","lamjeeminitialarabic","lamkhahinitialarabic","lamlamhehisolatedarabic","lammedialarabic","lammeemhahinitialarabic","lammeeminitialarabic","largecircle","lbar","lbelt","lbopomofo","lcaron","lcedilla","lcircle","lcircumflexbelow","lcommaaccent","ldot","ldotaccent","ldotbelow","ldotbelowmacron","leftangleabovecmb","lefttackbelowcmb","less","lessequal","lessequalorgreater","lessmonospace","lessorequivalent","lessorgreater","lessoverequal","lesssmall","lezh","lfblock","lhookretroflex","lira","liwnarmenian","lj","ljecyrillic","ll","lladeva","llagujarati","llinebelow","llladeva","llvocalicbengali","llvocalicdeva","llvocalicvowelsignbengali","llvocalicvowelsigndeva","lmiddletilde","lmonospace","lmsquare","lochulathai","logicaland","logicalnot","logicalnotreversed","logicalor","lolingthai","longs","lowlinecenterline","lowlinecmb","lowlinedashed","lozenge","lparen","lslash","lsquare","lsuperior","ltshade","luthai","lvocalicbengali","lvocalicdeva","lvocalicvowelsignbengali","lvocalicvowelsigndeva","lxsquare","mabengali","macron","macronbelowcmb","macroncmb","macronlowmod","macronmonospace","macute","madeva","magujarati","magurmukhi","mahapakhhebrew","mahapakhlefthebrew","mahiragana","maichattawalowleftthai","maichattawalowrightthai","maichattawathai","maichattawaupperleftthai","maieklowleftthai","maieklowrightthai","maiekthai","maiekupperleftthai","maihanakatleftthai","maihanakatthai","maitaikhuleftthai","maitaikhuthai","maitholowleftthai","maitholowrightthai","maithothai","maithoupperleftthai","maitrilowleftthai","maitrilowrightthai","maitrithai","maitriupperleftthai","maiyamokthai","makatakana","makatakanahalfwidth","male","mansyonsquare","maqafhebrew","mars","masoracirclehebrew","masquare","mbopomofo","mbsquare","mcircle","mcubedsquare","mdotaccent","mdotbelow","meemarabic","meemfinalarabic","meeminitialarabic","meemmedialarabic","meemmeeminitialarabic","meemmeemisolatedarabic","meetorusquare","mehiragana","meizierasquare","mekatakana","mekatakanahalfwidth","mem","memdagesh","memdageshhebrew","memhebrew","menarmenian","merkhahebrew","merkhakefulahebrew","merkhakefulalefthebrew","merkhalefthebrew","mhook","mhzsquare","middledotkatakanahalfwidth","middot","mieumacirclekorean","mieumaparenkorean","mieumcirclekorean","mieumkorean","mieumpansioskorean","mieumparenkorean","mieumpieupkorean","mieumsioskorean","mihiragana","mikatakana","mikatakanahalfwidth","minus","minusbelowcmb","minuscircle","minusmod","minusplus","minute","miribaarusquare","mirisquare","mlonglegturned","mlsquare","mmcubedsquare","mmonospace","mmsquaredsquare","mohiragana","mohmsquare","mokatakana","mokatakanahalfwidth","molsquare","momathai","moverssquare","moverssquaredsquare","mparen","mpasquare","mssquare","msuperior","mturned","mu","mu1","muasquare","muchgreater","muchless","mufsquare","mugreek","mugsquare","muhiragana","mukatakana","mukatakanahalfwidth","mulsquare","multiply","mumsquare","munahhebrew","munahlefthebrew","musicalnote","musicalnotedbl","musicflatsign","musicsharpsign","mussquare","muvsquare","muwsquare","mvmegasquare","mvsquare","mwmegasquare","mwsquare","nabengali","nabla","nacute","nadeva","nagujarati","nagurmukhi","nahiragana","nakatakana","nakatakanahalfwidth","napostrophe","nasquare","nbopomofo","nbspace","ncaron","ncedilla","ncircle","ncircumflexbelow","ncommaaccent","ndotaccent","ndotbelow","nehiragana","nekatakana","nekatakanahalfwidth","newsheqelsign","nfsquare","ngabengali","ngadeva","ngagujarati","ngagurmukhi","ngonguthai","nhiragana","nhookleft","nhookretroflex","nieunacirclekorean","nieunaparenkorean","nieuncieuckorean","nieuncirclekorean","nieunhieuhkorean","nieunkorean","nieunpansioskorean","nieunparenkorean","nieunsioskorean","nieuntikeutkorean","nihiragana","nikatakana","nikatakanahalfwidth","nikhahitleftthai","nikhahitthai","nine","ninearabic","ninebengali","ninecircle","ninecircleinversesansserif","ninedeva","ninegujarati","ninegurmukhi","ninehackarabic","ninehangzhou","nineideographicparen","nineinferior","ninemonospace","nineoldstyle","nineparen","nineperiod","ninepersian","nineroman","ninesuperior","nineteencircle","nineteenparen","nineteenperiod","ninethai","nj","njecyrillic","nkatakana","nkatakanahalfwidth","nlegrightlong","nlinebelow","nmonospace","nmsquare","nnabengali","nnadeva","nnagujarati","nnagurmukhi","nnnadeva","nohiragana","nokatakana","nokatakanahalfwidth","nonbreakingspace","nonenthai","nonuthai","noonarabic","noonfinalarabic","noonghunnaarabic","noonghunnafinalarabic","nooninitialarabic","noonjeeminitialarabic","noonjeemisolatedarabic","noonmedialarabic","noonmeeminitialarabic","noonmeemisolatedarabic","noonnoonfinalarabic","notcontains","notelement","notelementof","notequal","notgreater","notgreaternorequal","notgreaternorless","notidentical","notless","notlessnorequal","notparallel","notprecedes","notsubset","notsucceeds","notsuperset","nowarmenian","nparen","nssquare","nsuperior","ntilde","nu","nuhiragana","nukatakana","nukatakanahalfwidth","nuktabengali","nuktadeva","nuktagujarati","nuktagurmukhi","numbersign","numbersignmonospace","numbersignsmall","numeralsigngreek","numeralsignlowergreek","numero","nun","nundagesh","nundageshhebrew","nunhebrew","nvsquare","nwsquare","nyabengali","nyadeva","nyagujarati","nyagurmukhi","oacute","oangthai","obarred","obarredcyrillic","obarreddieresiscyrillic","obengali","obopomofo","obreve","ocandradeva","ocandragujarati","ocandravowelsigndeva","ocandravowelsigngujarati","ocaron","ocircle","ocircumflex","ocircumflexacute","ocircumflexdotbelow","ocircumflexgrave","ocircumflexhookabove","ocircumflextilde","ocyrillic","odblacute","odblgrave","odeva","odieresis","odieresiscyrillic","odotbelow","oe","oekorean","ogonek","ogonekcmb","ograve","ogujarati","oharmenian","ohiragana","ohookabove","ohorn","ohornacute","ohorndotbelow","ohorngrave","ohornhookabove","ohorntilde","ohungarumlaut","oi","oinvertedbreve","okatakana","okatakanahalfwidth","okorean","olehebrew","omacron","omacronacute","omacrongrave","omdeva","omega","omega1","omegacyrillic","omegalatinclosed","omegaroundcyrillic","omegatitlocyrillic","omegatonos","omgujarati","omicron","omicrontonos","omonospace","one","onearabic","onebengali","onecircle","onecircleinversesansserif","onedeva","onedotenleader","oneeighth","onefitted","onegujarati","onegurmukhi","onehackarabic","onehalf","onehangzhou","oneideographicparen","oneinferior","onemonospace","onenumeratorbengali","oneoldstyle","oneparen","oneperiod","onepersian","onequarter","oneroman","onesuperior","onethai","onethird","oogonek","oogonekmacron","oogurmukhi","oomatragurmukhi","oopen","oparen","openbullet","option","ordfeminine","ordmasculine","orthogonal","oshortdeva","oshortvowelsigndeva","oslash","oslashacute","osmallhiragana","osmallkatakana","osmallkatakanahalfwidth","ostrokeacute","osuperior","otcyrillic","otilde","otildeacute","otildedieresis","oubopomofo","overline","overlinecenterline","overlinecmb","overlinedashed","overlinedblwavy","overlinewavy","overscore","ovowelsignbengali","ovowelsigndeva","ovowelsigngujarati","paampssquare","paasentosquare","pabengali","pacute","padeva","pagedown","pageup","pagujarati","pagurmukhi","pahiragana","paiyannoithai","pakatakana","palatalizationcyrilliccmb","palochkacyrillic","pansioskorean","paragraph","parallel","parenleft","parenleftaltonearabic","parenleftbt","parenleftex","parenleftinferior","parenleftmonospace","parenleftsmall","parenleftsuperior","parenlefttp","parenleftvertical","parenright","parenrightaltonearabic","parenrightbt","parenrightex","parenrightinferior","parenrightmonospace","parenrightsmall","parenrightsuperior","parenrighttp","parenrightvertical","partialdiff","paseqhebrew","pashtahebrew","pasquare","patah","patah11","patah1d","patah2a","patahhebrew","patahnarrowhebrew","patahquarterhebrew","patahwidehebrew","pazerhebrew","pbopomofo","pcircle","pdotaccent","pe","pecyrillic","pedagesh","pedageshhebrew","peezisquare","pefinaldageshhebrew","peharabic","peharmenian","pehebrew","pehfinalarabic","pehinitialarabic","pehiragana","pehmedialarabic","pekatakana","pemiddlehookcyrillic","perafehebrew","percent","percentarabic","percentmonospace","percentsmall","period","periodarmenian","periodcentered","periodhalfwidth","periodinferior","periodmonospace","periodsmall","periodsuperior","perispomenigreekcmb","perpendicular","perthousand","peseta","pfsquare","phabengali","phadeva","phagujarati","phagurmukhi","phi","phi1","phieuphacirclekorean","phieuphaparenkorean","phieuphcirclekorean","phieuphkorean","phieuphparenkorean","philatin","phinthuthai","phisymbolgreek","phook","phophanthai","phophungthai","phosamphaothai","pi","pieupacirclekorean","pieupaparenkorean","pieupcieuckorean","pieupcirclekorean","pieupkiyeokkorean","pieupkorean","pieupparenkorean","pieupsioskiyeokkorean","pieupsioskorean","pieupsiostikeutkorean","pieupthieuthkorean","pieuptikeutkorean","pihiragana","pikatakana","pisymbolgreek","piwrarmenian","planckover2pi","planckover2pi1","plus","plusbelowcmb","pluscircle","plusminus","plusmod","plusmonospace","plussmall","plussuperior","pmonospace","pmsquare","pohiragana","pointingindexdownwhite","pointingindexleftwhite","pointingindexrightwhite","pointingindexupwhite","pokatakana","poplathai","postalmark","postalmarkface","pparen","precedes","prescription","primemod","primereversed","product","projective","prolongedkana","propellor","propersubset","propersuperset","proportion","proportional","psi","psicyrillic","psilipneumatacyrilliccmb","pssquare","puhiragana","pukatakana","pvsquare","pwsquare","qadeva","qadmahebrew","qafarabic","qaffinalarabic","qafinitialarabic","qafmedialarabic","qamats","qamats10","qamats1a","qamats1c","qamats27","qamats29","qamats33","qamatsde","qamatshebrew","qamatsnarrowhebrew","qamatsqatanhebrew","qamatsqatannarrowhebrew","qamatsqatanquarterhebrew","qamatsqatanwidehebrew","qamatsquarterhebrew","qamatswidehebrew","qarneyparahebrew","qbopomofo","qcircle","qhook","qmonospace","qof","qofdagesh","qofdageshhebrew","qofhebrew","qparen","quarternote","qubuts","qubuts18","qubuts25","qubuts31","qubutshebrew","qubutsnarrowhebrew","qubutsquarterhebrew","qubutswidehebrew","question","questionarabic","questionarmenian","questiondown","questiondownsmall","questiongreek","questionmonospace","questionsmall","quotedbl","quotedblbase","quotedblleft","quotedblmonospace","quotedblprime","quotedblprimereversed","quotedblright","quoteleft","quoteleftreversed","quotereversed","quoteright","quoterightn","quotesinglbase","quotesingle","quotesinglemonospace","raarmenian","rabengali","racute","radeva","radical","radicalex","radoverssquare","radoverssquaredsquare","radsquare","rafe","rafehebrew","ragujarati","ragurmukhi","rahiragana","rakatakana","rakatakanahalfwidth","ralowerdiagonalbengali","ramiddlediagonalbengali","ramshorn","ratio","rbopomofo","rcaron","rcedilla","rcircle","rcommaaccent","rdblgrave","rdotaccent","rdotbelow","rdotbelowmacron","referencemark","reflexsubset","reflexsuperset","registered","registersans","registerserif","reharabic","reharmenian","rehfinalarabic","rehiragana","rekatakana","rekatakanahalfwidth","resh","reshdageshhebrew","reshhebrew","reversedtilde","reviahebrew","reviamugrashhebrew","revlogicalnot","rfishhook","rfishhookreversed","rhabengali","rhadeva","rho","rhook","rhookturned","rhookturnedsuperior","rhosymbolgreek","rhotichookmod","rieulacirclekorean","rieulaparenkorean","rieulcirclekorean","rieulhieuhkorean","rieulkiyeokkorean","rieulkiyeoksioskorean","rieulkorean","rieulmieumkorean","rieulpansioskorean","rieulparenkorean","rieulphieuphkorean","rieulpieupkorean","rieulpieupsioskorean","rieulsioskorean","rieulthieuthkorean","rieultikeutkorean","rieulyeorinhieuhkorean","rightangle","righttackbelowcmb","righttriangle","rihiragana","rikatakana","rikatakanahalfwidth","ring","ringbelowcmb","ringcmb","ringhalfleft","ringhalfleftarmenian","ringhalfleftbelowcmb","ringhalfleftcentered","ringhalfright","ringhalfrightbelowcmb","ringhalfrightcentered","rinvertedbreve","rittorusquare","rlinebelow","rlongleg","rlonglegturned","rmonospace","rohiragana","rokatakana","rokatakanahalfwidth","roruathai","rparen","rrabengali","rradeva","rragurmukhi","rreharabic","rrehfinalarabic","rrvocalicbengali","rrvocalicdeva","rrvocalicgujarati","rrvocalicvowelsignbengali","rrvocalicvowelsigndeva","rrvocalicvowelsigngujarati","rsuperior","rtblock","rturned","rturnedsuperior","ruhiragana","rukatakana","rukatakanahalfwidth","rupeemarkbengali","rupeesignbengali","rupiah","ruthai","rvocalicbengali","rvocalicdeva","rvocalicgujarati","rvocalicvowelsignbengali","rvocalicvowelsigndeva","rvocalicvowelsigngujarati","sabengali","sacute","sacutedotaccent","sadarabic","sadeva","sadfinalarabic","sadinitialarabic","sadmedialarabic","sagujarati","sagurmukhi","sahiragana","sakatakana","sakatakanahalfwidth","sallallahoualayhewasallamarabic","samekh","samekhdagesh","samekhdageshhebrew","samekhhebrew","saraaathai","saraaethai","saraaimaimalaithai","saraaimaimuanthai","saraamthai","saraathai","saraethai","saraiileftthai","saraiithai","saraileftthai","saraithai","saraothai","saraueeleftthai","saraueethai","saraueleftthai","sarauethai","sarauthai","sarauuthai","sbopomofo","scaron","scarondotaccent","scedilla","schwa","schwacyrillic","schwadieresiscyrillic","schwahook","scircle","scircumflex","scommaaccent","sdotaccent","sdotbelow","sdotbelowdotaccent","seagullbelowcmb","secondtonechinese","section","seenarabic","seenfinalarabic","seeninitialarabic","seenmedialarabic","segol","segol13","segol1f","segol2c","segolhebrew","segolnarrowhebrew","segolquarterhebrew","segoltahebrew","segolwidehebrew","seharmenian","sehiragana","sekatakana","sekatakanahalfwidth","semicolon","semicolonarabic","semicolonmonospace","semicolonsmall","semivoicedmarkkana","semivoicedmarkkanahalfwidth","sentisquare","sentosquare","seven","sevenarabic","sevenbengali","sevencircle","sevencircleinversesansserif","sevendeva","seveneighths","sevengujarati","sevengurmukhi","sevenhackarabic","sevenhangzhou","sevenideographicparen","seveninferior","sevenmonospace","sevenoldstyle","sevenparen","sevenperiod","sevenpersian","sevenroman","sevensuperior","seventeencircle","seventeenparen","seventeenperiod","seventhai","sfthyphen","shaarmenian","shabengali","shacyrillic","shaddaarabic","shaddadammaarabic","shaddadammatanarabic","shaddafathaarabic","shaddakasraarabic","shaddakasratanarabic","shade","shadedark","shadelight","shademedium","shadeva","shagujarati","shagurmukhi","shalshelethebrew","shbopomofo","shchacyrillic","sheenarabic","sheenfinalarabic","sheeninitialarabic","sheenmedialarabic","sheicoptic","sheqel","sheqelhebrew","sheva","sheva115","sheva15","sheva22","sheva2e","shevahebrew","shevanarrowhebrew","shevaquarterhebrew","shevawidehebrew","shhacyrillic","shimacoptic","shin","shindagesh","shindageshhebrew","shindageshshindot","shindageshshindothebrew","shindageshsindot","shindageshsindothebrew","shindothebrew","shinhebrew","shinshindot","shinshindothebrew","shinsindot","shinsindothebrew","shook","sigma","sigma1","sigmafinal","sigmalunatesymbolgreek","sihiragana","sikatakana","sikatakanahalfwidth","siluqhebrew","siluqlefthebrew","similar","sindothebrew","siosacirclekorean","siosaparenkorean","sioscieuckorean","sioscirclekorean","sioskiyeokkorean","sioskorean","siosnieunkorean","siosparenkorean","siospieupkorean","siostikeutkorean","six","sixarabic","sixbengali","sixcircle","sixcircleinversesansserif","sixdeva","sixgujarati","sixgurmukhi","sixhackarabic","sixhangzhou","sixideographicparen","sixinferior","sixmonospace","sixoldstyle","sixparen","sixperiod","sixpersian","sixroman","sixsuperior","sixteencircle","sixteencurrencydenominatorbengali","sixteenparen","sixteenperiod","sixthai","slash","slashmonospace","slong","slongdotaccent","smileface","smonospace","sofpasuqhebrew","softhyphen","softsigncyrillic","sohiragana","sokatakana","sokatakanahalfwidth","soliduslongoverlaycmb","solidusshortoverlaycmb","sorusithai","sosalathai","sosothai","sosuathai","space","spacehackarabic","spade","spadesuitblack","spadesuitwhite","sparen","squarebelowcmb","squarecc","squarecm","squarediagonalcrosshatchfill","squarehorizontalfill","squarekg","squarekm","squarekmcapital","squareln","squarelog","squaremg","squaremil","squaremm","squaremsquared","squareorthogonalcrosshatchfill","squareupperlefttolowerrightfill","squareupperrighttolowerleftfill","squareverticalfill","squarewhitewithsmallblack","srsquare","ssabengali","ssadeva","ssagujarati","ssangcieuckorean","ssanghieuhkorean","ssangieungkorean","ssangkiyeokkorean","ssangnieunkorean","ssangpieupkorean","ssangsioskorean","ssangtikeutkorean","ssuperior","sterling","sterlingmonospace","strokelongoverlaycmb","strokeshortoverlaycmb","subset","subsetnotequal","subsetorequal","succeeds","suchthat","suhiragana","sukatakana","sukatakanahalfwidth","sukunarabic","summation","sun","superset","supersetnotequal","supersetorequal","svsquare","syouwaerasquare","tabengali","tackdown","tackleft","tadeva","tagujarati","tagurmukhi","taharabic","tahfinalarabic","tahinitialarabic","tahiragana","tahmedialarabic","taisyouerasquare","takatakana","takatakanahalfwidth","tatweelarabic","tau","tav","tavdages","tavdagesh","tavdageshhebrew","tavhebrew","tbar","tbopomofo","tcaron","tccurl","tcedilla","tcheharabic","tchehfinalarabic","tchehinitialarabic","tchehmedialarabic","tcircle","tcircumflexbelow","tcommaaccent","tdieresis","tdotaccent","tdotbelow","tecyrillic","tedescendercyrillic","teharabic","tehfinalarabic","tehhahinitialarabic","tehhahisolatedarabic","tehinitialarabic","tehiragana","tehjeeminitialarabic","tehjeemisolatedarabic","tehmarbutaarabic","tehmarbutafinalarabic","tehmedialarabic","tehmeeminitialarabic","tehmeemisolatedarabic","tehnoonfinalarabic","tekatakana","tekatakanahalfwidth","telephone","telephoneblack","telishagedolahebrew","telishaqetanahebrew","tencircle","tenideographicparen","tenparen","tenperiod","tenroman","tesh","tet","tetdagesh","tetdageshhebrew","tethebrew","tetsecyrillic","tevirhebrew","tevirlefthebrew","thabengali","thadeva","thagujarati","thagurmukhi","thalarabic","thalfinalarabic","thanthakhatlowleftthai","thanthakhatlowrightthai","thanthakhatthai","thanthakhatupperleftthai","theharabic","thehfinalarabic","thehinitialarabic","thehmedialarabic","thereexists","therefore","theta","theta1","thetasymbolgreek","thieuthacirclekorean","thieuthaparenkorean","thieuthcirclekorean","thieuthkorean","thieuthparenkorean","thirteencircle","thirteenparen","thirteenperiod","thonangmonthothai","thook","thophuthaothai","thorn","thothahanthai","thothanthai","thothongthai","thothungthai","thousandcyrillic","thousandsseparatorarabic","thousandsseparatorpersian","three","threearabic","threebengali","threecircle","threecircleinversesansserif","threedeva","threeeighths","threegujarati","threegurmukhi","threehackarabic","threehangzhou","threeideographicparen","threeinferior","threemonospace","threenumeratorbengali","threeoldstyle","threeparen","threeperiod","threepersian","threequarters","threequartersemdash","threeroman","threesuperior","threethai","thzsquare","tihiragana","tikatakana","tikatakanahalfwidth","tikeutacirclekorean","tikeutaparenkorean","tikeutcirclekorean","tikeutkorean","tikeutparenkorean","tilde","tildebelowcmb","tildecmb","tildecomb","tildedoublecmb","tildeoperator","tildeoverlaycmb","tildeverticalcmb","timescircle","tipehahebrew","tipehalefthebrew","tippigurmukhi","titlocyrilliccmb","tiwnarmenian","tlinebelow","tmonospace","toarmenian","tohiragana","tokatakana","tokatakanahalfwidth","tonebarextrahighmod","tonebarextralowmod","tonebarhighmod","tonebarlowmod","tonebarmidmod","tonefive","tonesix","tonetwo","tonos","tonsquare","topatakthai","tortoiseshellbracketleft","tortoiseshellbracketleftsmall","tortoiseshellbracketleftvertical","tortoiseshellbracketright","tortoiseshellbracketrightsmall","tortoiseshellbracketrightvertical","totaothai","tpalatalhook","tparen","trademark","trademarksans","trademarkserif","tretroflexhook","triagdn","triaglf","triagrt","triagup","ts","tsadi","tsadidagesh","tsadidageshhebrew","tsadihebrew","tsecyrillic","tsere","tsere12","tsere1e","tsere2b","tserehebrew","tserenarrowhebrew","tserequarterhebrew","tserewidehebrew","tshecyrillic","tsuperior","ttabengali","ttadeva","ttagujarati","ttagurmukhi","tteharabic","ttehfinalarabic","ttehinitialarabic","ttehmedialarabic","tthabengali","tthadeva","tthagujarati","tthagurmukhi","tturned","tuhiragana","tukatakana","tukatakanahalfwidth","tusmallhiragana","tusmallkatakana","tusmallkatakanahalfwidth","twelvecircle","twelveparen","twelveperiod","twelveroman","twentycircle","twentyhangzhou","twentyparen","twentyperiod","two","twoarabic","twobengali","twocircle","twocircleinversesansserif","twodeva","twodotenleader","twodotleader","twodotleadervertical","twogujarati","twogurmukhi","twohackarabic","twohangzhou","twoideographicparen","twoinferior","twomonospace","twonumeratorbengali","twooldstyle","twoparen","twoperiod","twopersian","tworoman","twostroke","twosuperior","twothai","twothirds","u","uacute","ubar","ubengali","ubopomofo","ubreve","ucaron","ucircle","ucircumflex","ucircumflexbelow","ucyrillic","udattadeva","udblacute","udblgrave","udeva","udieresis","udieresisacute","udieresisbelow","udieresiscaron","udieresiscyrillic","udieresisgrave","udieresismacron","udotbelow","ugrave","ugujarati","ugurmukhi","uhiragana","uhookabove","uhorn","uhornacute","uhorndotbelow","uhorngrave","uhornhookabove","uhorntilde","uhungarumlaut","uhungarumlautcyrillic","uinvertedbreve","ukatakana","ukatakanahalfwidth","ukcyrillic","ukorean","umacron","umacroncyrillic","umacrondieresis","umatragurmukhi","umonospace","underscore","underscoredbl","underscoremonospace","underscorevertical","underscorewavy","union","universal","uogonek","uparen","upblock","upperdothebrew","upsilon","upsilondieresis","upsilondieresistonos","upsilonlatin","upsilontonos","uptackbelowcmb","uptackmod","uragurmukhi","uring","ushortcyrillic","usmallhiragana","usmallkatakana","usmallkatakanahalfwidth","ustraightcyrillic","ustraightstrokecyrillic","utilde","utildeacute","utildebelow","uubengali","uudeva","uugujarati","uugurmukhi","uumatragurmukhi","uuvowelsignbengali","uuvowelsigndeva","uuvowelsigngujarati","uvowelsignbengali","uvowelsigndeva","uvowelsigngujarati","vadeva","vagujarati","vagurmukhi","vakatakana","vav","vavdagesh","vavdagesh65","vavdageshhebrew","vavhebrew","vavholam","vavholamhebrew","vavvavhebrew","vavyodhebrew","vcircle","vdotbelow","vecyrillic","veharabic","vehfinalarabic","vehinitialarabic","vehmedialarabic","vekatakana","venus","verticalbar","verticallineabovecmb","verticallinebelowcmb","verticallinelowmod","verticallinemod","vewarmenian","vhook","vikatakana","viramabengali","viramadeva","viramagujarati","visargabengali","visargadeva","visargagujarati","vmonospace","voarmenian","voicediterationhiragana","voicediterationkatakana","voicedmarkkana","voicedmarkkanahalfwidth","vokatakana","vparen","vtilde","vturned","vuhiragana","vukatakana","w","wacute","waekorean","wahiragana","wakatakana","wakatakanahalfwidth","wakorean","wasmallhiragana","wasmallkatakana","wattosquare","wavedash","wavyunderscorevertical","wawarabic","wawfinalarabic","wawhamzaabovearabic","wawhamzaabovefinalarabic","wbsquare","wcircle","wcircumflex","wdieresis","wdotaccent","wdotbelow","wehiragana","weierstrass","wekatakana","wekorean","weokorean","wgrave","whitebullet","whitecircle","whitecircleinverse","whitecornerbracketleft","whitecornerbracketleftvertical","whitecornerbracketright","whitecornerbracketrightvertical","whitediamond","whitediamondcontainingblacksmalldiamond","whitedownpointingsmalltriangle","whitedownpointingtriangle","whiteleftpointingsmalltriangle","whiteleftpointingtriangle","whitelenticularbracketleft","whitelenticularbracketright","whiterightpointingsmalltriangle","whiterightpointingtriangle","whitesmallsquare","whitesmilingface","whitesquare","whitestar","whitetelephone","whitetortoiseshellbracketleft","whitetortoiseshellbracketright","whiteuppointingsmalltriangle","whiteuppointingtriangle","wihiragana","wikatakana","wikorean","wmonospace","wohiragana","wokatakana","wokatakanahalfwidth","won","wonmonospace","wowaenthai","wparen","wring","wsuperior","wturned","wynn","xabovecmb","xbopomofo","xcircle","xdieresis","xdotaccent","xeharmenian","xi","xmonospace","xparen","xsuperior","yaadosquare","yabengali","yacute","yadeva","yaekorean","yagujarati","yagurmukhi","yahiragana","yakatakana","yakatakanahalfwidth","yakorean","yamakkanthai","yasmallhiragana","yasmallkatakana","yasmallkatakanahalfwidth","yatcyrillic","ycircle","ycircumflex","ydieresis","ydotaccent","ydotbelow","yeharabic","yehbarreearabic","yehbarreefinalarabic","yehfinalarabic","yehhamzaabovearabic","yehhamzaabovefinalarabic","yehhamzaaboveinitialarabic","yehhamzaabovemedialarabic","yehinitialarabic","yehmedialarabic","yehmeeminitialarabic","yehmeemisolatedarabic","yehnoonfinalarabic","yehthreedotsbelowarabic","yekorean","yen","yenmonospace","yeokorean","yeorinhieuhkorean","yerahbenyomohebrew","yerahbenyomolefthebrew","yericyrillic","yerudieresiscyrillic","yesieungkorean","yesieungpansioskorean","yesieungsioskorean","yetivhebrew","ygrave","yhook","yhookabove","yiarmenian","yicyrillic","yikorean","yinyang","yiwnarmenian","ymonospace","yod","yoddagesh","yoddageshhebrew","yodhebrew","yodyodhebrew","yodyodpatahhebrew","yohiragana","yoikorean","yokatakana","yokatakanahalfwidth","yokorean","yosmallhiragana","yosmallkatakana","yosmallkatakanahalfwidth","yotgreek","yoyaekorean","yoyakorean","yoyakthai","yoyingthai","yparen","ypogegrammeni","ypogegrammenigreekcmb","yr","yring","ysuperior","ytilde","yturned","yuhiragana","yuikorean","yukatakana","yukatakanahalfwidth","yukorean","yusbigcyrillic","yusbigiotifiedcyrillic","yuslittlecyrillic","yuslittleiotifiedcyrillic","yusmallhiragana","yusmallkatakana","yusmallkatakanahalfwidth","yuyekorean","yuyeokorean","yyabengali","yyadeva","zaarmenian","zacute","zadeva","zagurmukhi","zaharabic","zahfinalarabic","zahinitialarabic","zahiragana","zahmedialarabic","zainarabic","zainfinalarabic","zakatakana","zaqefgadolhebrew","zaqefqatanhebrew","zarqahebrew","zayin","zayindagesh","zayindageshhebrew","zayinhebrew","zbopomofo","zcaron","zcircle","zcircumflex","zcurl","zdot","zdotaccent","zdotbelow","zecyrillic","zedescendercyrillic","zedieresiscyrillic","zehiragana","zekatakana","zero","zeroarabic","zerobengali","zerodeva","zerogujarati","zerogurmukhi","zerohackarabic","zeroinferior","zeromonospace","zerooldstyle","zeropersian","zerosuperior","zerothai","zerowidthjoiner","zerowidthnonjoiner","zerowidthspace","zeta","zhbopomofo","zhearmenian","zhebrevecyrillic","zhecyrillic","zhedescendercyrillic","zhedieresiscyrillic","zihiragana","zikatakana","zinorhebrew","zlinebelow","zmonospace","zohiragana","zokatakana","zparen","zretroflexhook","zstroke","zuhiragana","zukatakana","angbracketleftbig","angbracketleftBig","angbracketleftbigg","angbracketleftBigg","angbracketrightBig","angbracketrightbig","angbracketrightBigg","angbracketrightbigg","arrowhookleft","arrowhookright","arrowlefttophalf","arrowleftbothalf","arrownortheast","arrownorthwest","arrowrighttophalf","arrowrightbothalf","arrowsoutheast","arrowsouthwest","backslashbig","backslashBig","backslashBigg","backslashbigg","bardbl","bracehtipdownleft","bracehtipdownright","bracehtipupleft","bracehtipupright","braceleftBig","braceleftbig","braceleftbigg","braceleftBigg","bracerightBig","bracerightbig","bracerightbigg","bracerightBigg","bracketleftbig","bracketleftBig","bracketleftbigg","bracketleftBigg","bracketrightBig","bracketrightbig","bracketrightbigg","bracketrightBigg","ceilingleftbig","ceilingleftBig","ceilingleftBigg","ceilingleftbigg","ceilingrightbig","ceilingrightBig","ceilingrightbigg","ceilingrightBigg","circledotdisplay","circledottext","circlemultiplydisplay","circlemultiplytext","circleplusdisplay","circleplustext","contintegraldisplay","contintegraltext","coproductdisplay","coproducttext","floorleftBig","floorleftbig","floorleftbigg","floorleftBigg","floorrightbig","floorrightBig","floorrightBigg","floorrightbigg","hatwide","hatwider","hatwidest","intercal","integraldisplay","integraltext","intersectiondisplay","intersectiontext","logicalanddisplay","logicalandtext","logicalordisplay","logicalortext","parenleftBig","parenleftbig","parenleftBigg","parenleftbigg","parenrightBig","parenrightbig","parenrightBigg","parenrightbigg","prime","productdisplay","producttext","radicalbig","radicalBig","radicalBigg","radicalbigg","radicalbt","radicaltp","radicalvertex","slashbig","slashBig","slashBigg","slashbigg","summationdisplay","summationtext","tildewide","tildewider","tildewidest","uniondisplay","unionmultidisplay","unionmultitext","unionsqdisplay","unionsqtext","uniontext","vextenddouble","vextendsingle","getDingbatsGlyphsUnicode","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","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","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","getSpecialPUASymbols","getUnicodeForGlyph","glyphsUnicodeMap","unicode","nameLen","hexStr","UnicodeRanges","getUnicodeRangeFor","lastPosition","SpecialCharRegExp","CategoryCache","SEAC_ANALYSIS_ENABLED","MacStandardGlyphOrdering","recoverGlyphName","type1FontGlyphMapping","builtInEncoding","glyphNames","charCodeToGlyphId","glyphId","isSymbolicFont","isInternalFont","baseEncodingName","differences","glyphName","standardGlyphName","normalizeFontName","getVerticalPresentationForm","getStdFontMap","Helvetica","Courier","ZapfDingbats","ArialNarrow","ArialBlack","Arial","ArialMT","ArialUnicodeMS","CourierNew","CourierNewPSMT","TimesNewRoman","TimesNewRomanPS","TimesNewRomanPSMT","getFontNameToFileMap","getNonStdFontMap","Calibri","CenturyGothic","ComicSansMS","GillSansMT","Impact","LucidaConsole","NuptialScript","SegoeUISymbol","getSerifFonts","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","getSymbolsFonts","Dingbats","Wingdings","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","getStandardFontName","fontName","isKnownFontName","ToUnicodeMap","cmap","amend","IdentityToUnicodeMap","firstChar","lastChar","CFFFont","compiler","loadedName","_createBuiltInEncoding","getCharset","getGlyphMapping","cidToGidMap","charsets","composite","invCidToGidMap","defaultEncoding","encodings","getUint32","getInt16","getInt8","getFloat214","getSubroutineBias","numSubrs","parseCmap","segCount","idDelta","idOffset","ids","groups","parseCff","glyphs","gsubrs","isCFFCIDFont","lookupCmap","compileGlyf","cmds","font","moveTo","lineTo","quadraticCurveTo","xa","ya","numberOfContours","arg1","arg2","scale01","scale10","subglyph","save","restore","endPtsOfContours","numberOfPoints","points","startPoint","endPoint","contour","compileCharString","charStringCode","bezierCurveTo","stems","xb","yb","subrCode","stackClean","subrsBias","achar","bchar","translate","glyphNameMap","gsubrsBias","Commands","transformStack","currentTransform","transf","getSVG","CompiledFont","compiledGlyphs","compiledCharCodeToGlyphId","getPathJs","compileEx","compileGlyph","compileGlyphImpl","hasBuiltPath","TrueTypeCompiled","Type2Compiled","cffInfo","FontRendererFactory","glyf","loca","indexToLocFormat","unitsPerEm","numTables","tag","isGlyphLocationsLong","itemSize","itemDecode","parseGlyfTable","getMetrics","getFontBasicMetrics","capHeight","xHeight","GlyfTable","glyfTable","locaTable","DataView","byteOffset","Glyph","getSize","reduce","totalSize","isLocationLong","setUint32","setUint16","locaIndex","factors","simple","composites","GlyphHeader","CompositeGlyph","SimpleGlyph","spos","factor","xMiddle","yMin","yMax","setInt16","Contour","xCoordinates","yCoordinates","contours","instructions","endPt","numberOfPt","instructionLength","flag","getUint8","allXCoordinates","pointFlags","endPtsOfContoursIndex","lastCoordinate","lastX","lastY","X_SHORT_VECTOR","Y_SHORT_VECTOR","setUint8","argument1","argument2","writeInt16","writeInt32","writeData","OpenTypeFileBuilder","sfnt","getSearchParams","entriesCount","entrySize","maxPower2","searchRange","rangeShift","toArray","tablesNames","tableName","tableOffsets","searchParams","checksum","addTable","COMMAND_MAP","Type1CharString","lsb","flexing","convert","encoded","wx","sbx","dy","executeCommand","asb","splice","sby","num2","num1","flexArgs","howManyArgs","command","keepStack","stackLength","isHexDigit","decrypt","discardNumber","decrypted","isSpecial","Type1Parser","encrypted","isBinary","digit1","digit2","decryptAscii","readNumberArray","getToken","token","readInt","readBoolean","prevChar","readCharStrings","lenIV","extractFontProgram","charstrings","privateData","program","blueArray","charString","charStringObject","extractFontHeader","encodingArg","findBlock","streamBytes","signature","startIndex","streamBytesLength","signatureLength","Type1Font","headerBlockLength","length1","eexecBlockLength","length2","pfbHeader","pfbHeaderPresent","headerBlock","suggestedLength","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","actualLength","getHeaderBlock","eexecBlock","eexecBytes","getEexecBlock","type2Charstrings","getType2Charstrings","getType2Subrs","wrap","getSeacs","charstringsLen","seacMap","type1Charstrings","type1Charstring","type1Subrs","type2Subrs","bbox","charsetArray","fields","field","subrIndex","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","adjustWidths","glyphsWidths","amendFallbackToUnicode","fallbackToUnicode","toUnicode","fonts_Glyph","originalCharCode","fontChar","accent","vmetric","operatorListId","isSpace","isInFont","category","cachedCategory","isWhitespace","isZeroWidthDiacritic","isInvisibleFormatMark","getCharUnicodeCategory","int16","writeSignedInt16","signedInt16","string16","safeString16","isTrueTypeCollectionFile","applyStandardFontGlyphMap","glyphMap","buildToFontChar","toFontChar","isMacNameRecord","language","isWinNameRecord","convertCidString","shouldThrow","adjustMapping","hasGlyph","newGlyphZeroId","newMap","toUnicodeExtraMap","usedGlyphIds","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","fontCharCode","createCmapTable","codeIndices","getRanges","bmpLength","trailingRangesCount","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","contiguous","format314","format31012","header31012","createOS2Table","override","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","typoAscent","typoDescent","winAscent","winDescent","fixedPitch","createPostTable","createPostscriptName","createNameTable","proto","stringsUnicode","strBufUnicode","platforms","namesRecordCount","nameTable","strOffset","strs","Font","psName","mimetype","disableFontFace","isType3Font","missingFile","_charsCache","_glyphCache","isSerifFont","isSimulatedFlags","baseName","serifFonts","namePart","isMonospace","subtype","systemFontInfo","matches","isInvalidPDFjsFont","fallbackName","guessFallback","css","lineHeight","cidEncoding","vmetrics","defaultVMetrics","fallbackToSystemFont","fileType","fileSubtype","isTrueTypeFile","isOpenTypeFile","isType1File","isCFFFile","getFontFileType","checkAndRepair","isOpenType","renderer","exportData","extraProperties","exportDataProperties","stdFontMap","nonStdFontMap","isStandardFont","isMappedToStandardFont","metrics","bold","italic","isNarrow","remeasure","hasIncludedToUnicodeMap","unicodeCharCode","VALID_TABLES","readTables","head","hhea","hmtx","maxp","post","readTableEntry","previousPosition","readOpenTypeHeader","ttf","entrySelector","sanitizeGlyph","sourceStart","sourceEnd","destStart","hintsValid","glyphProfile","sizeOfInstructions","contoursCount","flagsCount","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","xLength","yLength","xyLength","glyphDataLength","readNameTable","records","numRecords","stringsStart","record","TTOpsStackDeltas","sanitizeTTProgram","ttContext","funcId","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","inFDEF","ifLevel","inELSE","op","functionsStackDeltas","stackTop","functionsDefined","functionsUsed","newStackLength","content","foldTTTable","cffFile","ttcData","ttc","numFonts","offsetTable","ttcTag","majorVersion","minorVersion","dsigTag","dsigLength","dsigOffset","readTrueTypeCollectionHeader","fontNameParts","fallbackData","potentialHeader","potentialTables","nameEntry","readTrueTypeCollectionData","isTrueType","isComposite","fpgm","prep","scaleFactors","advanceWidth","numGlyphsOut","dupFirstEntry","maxFunctionDefs","maxSizeOfInstructions","cvt","checkInvalidFunctions","cvtData","sanitizeTTPrograms","headTable","caretOffset","numOfMetrics","numMissing","sanitizeMetrics","locaLength","numGlyphsPlusOne","sanitizeHead","missingGlyphs","glyphsInfo","itemEncode","locaDataSize","locaData","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","nextOffset","writeOffset","simpleGlyph","firstEntryLength","sanitizeGlyphLocations","metricsOverride","lineGap","propertiesObj","maxpNumGlyphs","glyphNameIndexes","customNames","stringLength","readPostScriptTable","isCidToGidMapEmpty","cmapTable","hasEncoding","platformId","encodingId","mappings","hasShortCmap","potentialTable","canBreak","useTable","correctlySorted","nextBytes","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","entryCount","idRangePos","segIndex","offsetIndex","offsetsCount","rangeOffset","nGroups","startCharCode","endCharCode","glyphCode","readCmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","forcePostTable","unicodeOrCharCode","mapping","glyphZeroId","newMapping","os2","selection","validateOS2Table","namePrototype","nameRecords","adjustTrueTypeToUnicode","builder","tableTag","adjustType1ToUnicode","newCharCodeToGlyphId","getCharCodes","charCodes","createCharCode","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","baseFontCharCode","accentFontCharCode","tan","cffWidths","_spaceWidth","possibleSpaceReplacements","glyphUnicode","_charToGlyph","widthCode","fromCodePoint","charsToGlyphs","chars","getCharPositions","positions","glyphCacheValues","encodeString","buffers","currentBuf","hasCurrentBufErrors","getCharCode","ErrorFont","Pattern","parseShading","shading","res","RadialAxialShading","MeshShading","DummyShading","BaseShading","getIR","shadingType","coordsLen","coordsArr","t0","t1","domainArr","extendStart","extendEnd","extendArr","r1","r2","distance","hypot","fnObj","createFromArray","step","colorStops","rgbColor","iBase","rgbBase","cssColorBase","iPrev","rgbPrev","maxSlopeR","maxSlopeG","maxSlopeB","minSlopeR","minSlopeG","minSlopeB","cssColor","background","SMALL_NUMBER","r0","MeshStreamReader","context","tmpCompsBuf","csNumComps","colorSpace","tmpCsCompsBuf","colorFn","hasData","align","readFlag","bitsPerFlag","readCoordinate","bitsPerCoordinate","yi","readComponents","ci","bCache","getB","lut","t_","buildB","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","TRIANGLE_DENSITY","bounds","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","splitYBy","figureCoords","figureColors","cl","cr","c0","c1","c2","c3","bRow","bCol","newColor","maxY","coordsPacked","xy","colorsPacked","getTilingPatternIR","operatorList","xstep","ystep","paintType","tilingType","CalibriBoldFactors","CalibriBoldMetrics","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriRegularFactors","CalibriRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaRegularFactors","HelveticaRegularMetrics","LiberationSansBoldWidths","LiberationSansBoldMapping","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","LiberationSansItalicWidths","LiberationSansItalicMapping","LiberationSansRegularWidths","LiberationSansRegularMapping","MyriadProBoldFactors","MyriadProBoldMetrics","MyriadProBoldItalicFactors","MyriadProBoldItalicMetrics","MyriadProItalicFactors","MyriadProItalicMetrics","MyriadProRegularFactors","MyriadProRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","getXFAFontMap","baseWidths","baseMapping","getXfaFontName","getXfaFontDict","rescaledBaseWidths","currentArray","newWidths","charUnicode","unicode1","unicode2","getXfaFontWidths","descriptor","systemInfo","PostScriptParser","nextToken","accept","expect","PostScriptTokenTypes","LBRACE","parseBlock","RBRACE","NUMBER","OPERATOR","parseCondition","conditionLocation","IF","jumpLocation","endOfTrue","IFELSE","PostScriptToken","opCache","getOperator","PostScriptLexer","BaseLocalCache","_onlyRefs","onlyRefs","_nameRefMap","_imageMap","_imageCache","LocalImageCache","LocalColorSpaceCache","LocalFunctionCache","LocalGStateCache","LocalTilingPatternCache","RegionalImageCache","GlobalImageCache","_refCache","byteSize","MIN_IMAGES_TO_CACHE","MAX_BYTE_SIZE","shouldCache","pageIndexSet","NUM_PAGES_THRESHOLD","addDecodeFailed","hasDecodeFailed","addByteSize","setData","onlyData","PDFFunctionFactory","cachedFunction","parsedFunction","PDFFunction","parseArray","fnRef","localFunction","_localFunctionCache","toNumberArray","getSampleArray","outputSize","bps","sampleMul","strBytes","strIdx","constructSampled","constructInterpolated","constructStiched","constructPostScript","fnArray","toMultiArray","interpolate","xmin","xmax","ymin","ymax","domain","inputSize","encode","samples","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","fns","clip","dmin","dmax","rmin","rmax","PostScriptCompiler","numOutputs","numInputs","evaluator","PostScriptEvaluator","cache","cache_available","cachedValue","execute","stackIndex","bound","isPDFFunction","fnDict","PostScriptStack","initialStack","MAX_STACK_SIZE","copy","roll","counter","operator","atan2","cos","log10","sin","AstNode","visit","AstArgument","visitArgument","AstLiteral","visitLiteral","AstBinaryOperation","visitBinaryOperation","AstMin","arg","visitMin","AstVariable","visitVariable","AstVariableDefinition","variable","visitVariableDefinition","ExpressionBuilderVisitor","parts","literal","operation","buildAddOperation","buildMulOperation","buildSubOperation","buildMinOperation","ast1","ast2","tmpVar","lastRegister","instruction","statementBuilder","expr","baseTypes","arabicTypes","isOdd","isEven","findUnequal","setValues","reverseValues","createBidiText","isLTR","bidi","startLevel","strLength","numBidi","charType","levels","sor","eor","lastType","before","after","level","highestLevel","lowestOddLevel","NORMAL","style","BOLD","ITALIC","BOLDITALIC","substitutionMap","local","ultimate","alias","fontAliases","getFamilyName","keywords","tok","generateFont","localFontPath","useFallback","usePath","append","extra","substitution","aliasAppend","getStyleToAppend","fallbackInfo","fallbackUltimate","getFontSubstitution","systemFontCache","idFactory","baseFontName","standardFontName","substitutionInfo","subst","mustAddBaseFont","getDocId","createFontId","ImageResizer","imgData","isMask","_imgData","_isMask","needsToBeResized","MAX_DIM","area","_hasMaxArea","MAX_AREA","_areGoodDims","_guessMax","canvasMaxAreaInBytes","canvas","ctx","getContext","fillRect","opacity","tolerance","defaultHeight","middle","createImage","_createImage","_encodeBMP","imagePromise","transfer","createImageBitmap","Blob","finally","minFactor","firstFactor","steps","newWidth","newHeight","prevWidth","prevHeight","drawImage","transferToImageBitmap","rgbaSize","maxHeight","remainder","willReadFrequently","putImageData","ImageData","bitPerPixel","colorTable","maskTable","compression","rowLen","newData","extraLen","view","headerLength","fileLength","bmpData","setInt32","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","update","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","addState","parentState","pattern","checkFn","iterateFn","processFn","InitialState","iCurr","argsArray","iFirstSave","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","imgRowSize","iFirstPIMXO","iTransform","transformArgs","isSameImage","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iPIMXO","images","maskParams","firstPIXOArg0","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","NullOptimizer","_optimize","flush","QueueOptimizer","lastProcessed","OperatorList","CHUNK_SIZE","intent","streamSink","_streamSink","optimizer","dependencies","_totalLength","_resolved","addOp","CHUNK_SIZE_ABOUT","addImageOps","optionalContent","hasMask","addDependency","dependency","addDependencies","addOpList","opList","_transfers","transfers","cached","separateAnnots","enqueue","decodeAndClamp","addend","coefficient","resizeImageMask","PDFImage","isInline","smask","jpxDecoderOptions","imageMask","matte","hasColorSpace","numComp","needsDecode","decodeCoefficients","decodeAddends","isIndexed","buildImage","smaskData","maskData","createRawMask","imgArray","imageIsFromDecodeStream","computedLength","createMask","isSingleOpaquePixel","createImageData","decodeBuffer","getComponents","bufferPos","rowComps","loop1End","loop2End","remainingBits","fillOpacity","rgbaBuf","alphaBuf","sw","sh","fillGrayBuffer","imageOffset","maskOffset","undoPreblend","matteRgb","matteR","matteG","matteB","mustBeResized","getImageBytes","createBitmap","imageLength","isHandled","internal","maybeUndoPreblend","canvasImgData","imageBytes","DefaultPartialEvaluatorOptions","freeze","maxImageSize","ignoreErrors","fontExtraProperties","useSystemFonts","cMapUrl","standardFontDataUrl","deferred","normalizeBlendMode","parsingArray","maybeBM","addLocallyCachedImageOps","TimeSlotManager","checked","CHECK_TIME_EVERY","endTime","TIME_SLOT_DURATION_MS","PartialEvaluator","handler","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","type3FontRefs","_regionalImageCache","_fetchBuiltInCMapBound","_pdfFunctionFactory","parsingType3Font","newOptions","newEvaluator","hasBlendModes","nonBlendModesSet","processed","nodes","graphicStates","graphicState","bm","xObjects","xObject","xResources","response","ok","statusText","sendWithPromise","fetchStandardFontData","buildFormXObject","xobj","task","initialState","groupOptions","parseMarkedContentProps","group","isolated","knockout","parseColorSpace","backdrop","getOperatorList","_sendImgData","cacheGlobally","buildPaintImageXObject","localImageCache","imageRef","bitStrideLength","cacheData","createObjId","dataLen","imageObj","localLength","handleSMask","stateManager","smaskContent","smaskOptions","transferObj","transferFn","transferMap","handleTransferFunction","tr","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","patternDict","localTilingPatternCache","tilingOpList","patternResources","operatorListIR","tilingPatternIR","handleSetFont","fontArgs","fontRef","fallbackFontDict","translated","loadFont","loadType3Data","type3Dependencies","TranslatedFont","evaluatorOptions","handleText","textRenderingMode","fillColorSpace","buildFontPaths","ensureStateFont","setGState","gState","localGStateCache","gStateRef","isSimpleGState","gStateObj","errorFont","fontRes","preEvaluatedFont","preEvaluateFont","hash","fontRefIsRef","fontID","aliasFontRef","translateFont","translatedFont","buildPath","parsingText","lastIndex","Infinity","opArgs","localShadingPatternCache","patternIR","handleColorN","patternName","rawPattern","localTilingPattern","typeNum","_parseVisibilityExpression","nestingCounter","currentResult","object","nestedResult","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","policy","EvalState","self","xobjs","StateManager","preprocessor","EvaluatorPreprocessor","timeSlotManager","closePendingRestoreOPS","argument","savedStatesDepth","promiseBody","all","ensureNotTerminated","stop","isValidName","localImage","resolveXObject","rejectXObject","globalImage","fontSize","combinedGlyphs","arrItem","strokeColorSpace","patternFillColorSpace","patternStrokeColorSpace","shadingRes","patternId","localGStateObj","resolveGState","rejectGState","extGState","getTextContent","includeMarkedContent","sink","seenStyles","viewBox","lang","markedContentData","disableNormalization","keepWhiteSpace","TextState","textContent","styles","textContentItem","initialized","totalHeight","prevTransform","textAdvanceScale","spaceInFlowMin","spaceInFlowMax","trackingSpaceMin","negativeSpaceMax","notASpace","hasEOL","twoLastChars","twoLastCharsPos","saveLastChar","nextPos","shouldAddWhitepsace","resetLastChars","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","pushWhitespace","getCurrentTextTransform","tsm","textHScale","textRise","isCharBBox","glyphHeight","ctm","textMatrix","ensureTextContentItem","fontSubstitution","fontSubstitutionLoadedName","trm","scaleLineX","textLineMatrix","scaleCtmX","updateAdvanceScale","scaleFactor","applyInverseRotation","compareWithLastPosition","glyphWidth","posX","posY","lastPosX","lastPosY","rotate","advanceY","advanceX","textOrientation","appendEOL","flushTextContentItem","addFakeSpaces","buildTextContentItem","extraSpacing","charSpacing","translateTextMatrix","scaledDim","wordSpacing","textChunk","text","normalize","bidiResult","runBidiTransform","enqueueChunk","batch","previousState","fontNameArg","fontSizeArg","leading","translateTextLineMatrix","carriageReturn","setTextMatrix","setTextLineMatrix","spaceFactor","elements","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","desiredSize","gStateFont","mcid","getPageObjId","extractDataStructures","cidToGidBytes","toUnicodePromise","readToUnicode","cidSystemInfo","registry","ordering","supplement","diffEncoding","nonEmbeddedFont","isSymbolsFontName","isNonsymbolicFont","builtToUnicode","buildToUnicode","readCidToGidMap","_simpleFontToUnicode","forceGlyphs","codeStr","ucs2CMapName","ucs2CMap","ucs2","cmapObj","glyphsData","glyphID","extractWidths","glyphsVMetrics","dw","dw2","missingWidth","getBaseFontMetrics","buildCharCodeToWidth","firstWidth","fontNameWoStyle","monospace","lookupName","Metrics","glyphWidths","widthsByGlyphName","baseDict","df","diffLength","diffBuf","diffEntry","uint8array","widthsBuf","compositeWidths","subWidthsBuf","newProperties","baseFont","fontNameStr","baseFontStr","fontFile","length3","glyphScaleFactors","subtypeEntry","_evaluatorOptions","type3Loaded","sent","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","fontBBoxSize","glyphStream","_removeType3ColorOperators","dummyOperatorList","_bbox","charBBox","charBBoxSize","gStateKey","stateStack","old","_fillColorSpace","_strokeColorSpace","opMap","ri","gs","cm","re","BT","ET","Tc","Tw","Tz","TL","Tf","Tr","Ts","Td","TD","Tm","Tj","TJ","d0","d1","CS","SC","SCN","sc","scn","RG","rg","BI","ID","EI","Do","MP","BMC","BDC","EMC","BX","EX","BM","BD","true","fa","fal","fals","false","nul","null","nonProcessedArgs","_isPathOp","_numInvalidPathOPS","opSpec","argsLength","partialMsg","MAX_INVALID_PATH_OPS","preprocessCommand","DefaultAppearanceEvaluator","fontColor","parseDefaultAppearance","AppearanceStreamEvaluator","breakLoop","_localColorSpaceCache","getPdfColor","isFill","FakeUnicodeFont","ctxMeasure","_fontNameId","fontDescriptorRef","_fontDescriptorRef","fontDescriptor","getNewPersistentRef","descendantFontRef","descendantFont","currentWidths","baseFontRef","_createContext","createFontResources","measureText","getFirstPositionInfo","createAppearance","bgColor","strokeAlpha","lineWidth","hscale","vscale","lineDescent","newFontSize","vShift","appearance","appearanceStreamDict","ap","NameOrNumberTree","root","_type","getAll","kids","kid","kidsOrEntries","loopCount","limits","currentKey","NameTree","NumberTree","clearGlobalCaches","pickPlatformItem","FileSpec","skipContent","fs","_contentRef","fileObj","description","desc","serializable","rawFilename","XMLParserBase","_resolveEntities","onResolveEntity","_parseContent","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","onEndElement","onPi","onComment","onCdata","q2","complexDoctype","doctypeContent","onDoctype","isClosed","onBeginElement","onText","SimpleDOMNode","nodeName","nodeValue","firstChild","childNodes","nextSibling","parentNode","child","hasChildNodes","searchNode","paths","siblingPos","dump","attribute","SimpleXMLParser","hasAttributes","lowerCaseName","_currentFragment","_stack","_errorCode","_hasAttributes","_lowerCaseName","parseFromString","documentElement","isWhitespaceString","lastElement","childNode","MetadataParser","_repair","xmlDocument","_metadataMap","_data","d2","d3","charBuf","_getSequence","_parseArray","seqNode","trim","rdf","parsedData","rawData","StructTreeRoot","rootDict","rootRef","roleMap","structParentIds","init","readRoleMap","pageRef","addAnnotationIdToPage","roleMapDict","canCreateStructureTree","catalogRef","pdfManager","nextKey","hasNothingToUpdate","getPage","accessibilityData","parentTreeId","createStructureTree","changes","catalog","cloneDict","structTreeRootRef","getNewTemporaryRef","structTreeRoot","parentTreeRef","parentTree","nums","canUpdateStructTree","numberTree","pageDict","structParent","structTreeParent","updateStructureTree","numsRef","newNextKey","objr","structTreePageObjs","page","isPageRef","objs","StructTreePage","collectObjects","objRef","tagDict","tagRef","newTagRef","fallbackKids","objDict","expanded","actualText","idToElements","structTreeParentId","elems","parentArray","updateElement","pageKid","kidRef","parentRef","cachedParentDict","parentKidsRaw","cachedParentKids","parentKidsRef","StructElementNode","parseKids","role","nameObj","pageObjId","parseKid","StructElement","kidDict","refObjId","elemId","addNode","addTopLevelNode","nodeToSerializable","kidElement","isValidExplicitDest","zoom","argsLen","allowNull","fetchDest","fetchRemoteDest","JSON","stringify","Catalog","_catDict","getCatalogObj","toplevelPagesDict","_actualNumPages","pageKidsCountCache","pageIndexCache","pageDictCache","needsRendering","collection","acroForm","acroFormRef","metadata","streamRef","encrypt","encryptMetadata","markInfo","_readMarkInfo","Marked","UserProperties","Suspects","structTree","_readStructTreeRoot","rawObj","pagesObj","documentOutline","_readDocumentOutline","blackColor","outlineDict","parseDestDictionary","destDict","resultObj","docBaseUrl","docAttachments","attachments","outlineItem","attachment","unsafeUrl","setOCGState","permissions","_readPermissions","trailer","optionalContentConfig","config","defaultConfig","groupsData","groupRefCache","groupRef","usage","print","rbGroups","usageObj","printState","viewState","parseOnOff","refs","onParsed","parseOrder","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","MAX_NESTED_LEVELS","nestedName","rbGroup","parsedRbGroup","parseRBGroups","creator","baseState","setActualNumPages","hasActualNumPages","_pagesCount","destinations","_readDests","dests","getDestination","allDest","pageLabels","_readPageLabels","prefix","currentLabel","labelDict","st","LIMIT","baseCharCode","letterIndex","pageLayout","pageMode","viewerPreferences","prefs","prefValue","openAction","nameTree","xfaImages","_collectJavaScript","javaScript","appendIfJavaScriptDict","jsDict","jsActions","fontFallback","translatedFonts","manuallyTriggered","getPageDict","nodesToVisit","visitedNodes","pagesRef","currentPageIndex","currentNode","lastKid","getAllPageDicts","posInKids","addPageError","queueItem","kidObj","getPageIndex","cachedPageIndex","kidPromises","pagesBeforeRef","uri","href","actionType","actionName","include","resetForm","urlDict","remoteDest","target","relationship","attachmentDest","namedAction","preserveRB","stateArr","jsAction","jsURL","addChildren","rawValue","ObjectLoader","refSet","load","_walk","nodesToRevisit","pendingRequests","foundMissingData","$acceptWhitespace","$addHTML","$appendChild","$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","$globalData","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nodeName","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$text","$toPages","$toHTML","$toString","$toStyle","$uid","$buildXFAObject","NamespaceIds","ns","connectionSet","datasets","form","localeSet","pdf","sourceSet","stylesheet","xdc","xdp","xfdf","xhtml","xmpmeta","dimConverters","pt","mm","in","px","measurementPattern","stripQuotes","getInteger","defaultValue","validate","getFloat","getKeyword","getStringOption","getMeasurement","def","valueStr","unit","conv","getRatio","den","getRelevant","excluded","viewname","HTMLResult","FAILURE","EMPTY","success","html","breakNode","isBreak","FontFinder","pdfFonts","fonts","defaultFont","reallyMissingFonts","pdfFont","addPdfFont","regular","bolditalic","myriad","missing","endsWith","getDefault","find","maybe","family","selectFont","xfaFont","typeface","posture","FontInfo","margin","fontFinder","paraMargin","top","bottom","right","letterSpacing","FontSelector","defaultXfaFont","defaultParaMargin","defaultLineHeight","pushData","lastFont","fontInfo","popFont","topFont","TextMeasure","fontSelector","extraHeight","addPara","addString","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","compute","lastSpacePos","lastSpaceWidth","currentLineWidth","currentLineHeight","isBroken","isFirstLine","isEOL","namePattern","indexPattern","shortcuts","current","host","dataWindow","event","somCache","WeakMap","parseExpression","dotDotAllowed","noExpr","cacheName","formCalc","container","useCache","isQualified","isXFAObject","isXFAObjectArray","isFinite","flat","createDataNode","some","createNodes","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","uid","NS_DATASETS","XFAObject","nsId","hasChildren","XmlObject","XFAObjectArray","para","paraStack","clean","getPrototypeOf","getOwnPropertyNames","dumped","availableSpace","failingNode","generator","protoAttributes","allAttr","setAttr","ancestors","use","usehref","somExpression","protoProto","unsetAttrName","protoValue","$symbol","getOwnPropertySymbols","clonedChild","allTransparent","XFAAttribute","dataNode","xfa","tagName","utf8TagName","utf8Name","skipConsumed","hasNS","$ns","$name","ContentObject","OptionObject","StringObject","IntegerObject","validator","Option01","Option10","measureToString","converters","anchorType","dimensions","colSpan","columnWidths","currentColumn","transformOrigin","presence","visibility","display","hAlign","textAlign","alignSelf","setMinMaxDimensions","minW","minWidth","maxW","minH","minHeight","layoutText","measure","layoutNode","marginH","marginV","leftInset","rightInset","topInset","bottomInset","spaceAbove","spaceBelow","marginLeft","marginRight","exData","contentType","computeBbox","fixDimensions","layoutClass","toStyle","newStyle","createWrapper","wrapper","class","border","insets","insetsH","insetsW","hand","classNames","isPrintOnly","fixTextIndent","indent","textIndent","padding","setAccess","access","relevant","getCurrentPara","setPara","nodeStyle","valueStyle","flexDirection","vAlign","justifyContent","paraStyle","setFontFamily","fixURL","createLine","flushHTML","htmlFromFailing","addHTML","attempt","numberInLine","getAvailableSpace","checkDimensions","firstUnsplittable","centerX","centerY","getTransformedBBox","noLayoutFailure","currentContentArea","TEMPLATE_NS_ID","SVG_NS","HEADING_PATTERN","MIMES","IMAGES_HEADERS","getBorderDims","borderExtra","hasMargin","_setValue","templateNode","Value","getContainedChildren","SubformSet","isRequired","nullTest","setTabIndex","traversal","applyAssist","assist","assistTitle","ariaRole","ariaLevel","ariaLabel","speak","toolTip","valueToHtml","setFirstUnsplittable","unsetFirstUnsplittable","handleBreak","targetType","currentPageArea","PageArea","startNew","ContentArea","pageArea","nextPageArea","contentAreas","contentArea","indexForCurrent","indexForTarget","handleOverflow","extraNode","saved","savedMethod","AppearanceFilter","Arc","circular","startAngle","sweepAngle","edge","Edge","edgeStyle","strokeWidth","thickness","stroke","xmlns","overflow","cx","cy","rx","ry","largeArc","vectorEffect","preserveAspectRatio","svg","Area","extras","draw","exObject","exclGroup","subform","subformSet","xfaName","Assist","Barcode","charEncoding","dataColumnCount","dataPrep","dataRowCount","endChar","errorCorrectionLevel","moduleHeight","moduleWidth","printCheckDigit","rowColumnRatio","startChar","textLocation","truncate","upsMode","wideNarrowRatio","Bind","picture","BindItems","connection","labelRef","valueRef","Bookend","leader","BooleanElement","Border","break","corner","edges","defaultEdge","edgeStyles","radius","cornerStyles","borderRadius","borderStyle","borderWidth","borderColor","Break","afterTarget","beforeTarget","bookendLeader","bookendTrailer","overflowLeader","overflowTarget","overflowTrailer","BreakAfter","script","BreakBefore","Button","highlight","grandpa","htmlButton","activity","Calculate","Caption","placement","reserve","savedReserve","Certificate","Certificates","credentialServerPolicy","urlPolicy","encryption","issuers","keyUsage","oids","signing","subjectDNs","CheckButton","mark","shape","className","groupId","exportedValue","fieldId","dataId","ExclGroup","xfaOn","xfaOff","required","ChoiceList","commitOn","open","textEntry","optionStyle","displayedIndex","saveIndex","displayed","selected","hidden","selectAttributes","multiple","Color","cSpace","getColor","Comb","numberOfCells","Connect","Corner","inverted","DateElement","DateTime","DateTimeEdit","hScrollPolicy","picker","comb","Decimal","fracDigits","leadDigits","DefaultUi","Desc","boolean","dateTime","decimal","float","integer","time","DigestMethod","DigestMethods","digestMethod","Draw","locale","caption","keep","ui","setProperty","savedW","savedH","cap","linecap","Encoding","Encodings","Encrypt","certificate","EncryptData","manifest","Encryption","EncryptionMethod","EncryptionMethods","encryptionMethod","Event","listen","encryptData","signData","submit","ExData","maxLength","rid","transferEncoding","ExObject","archive","classId","codeBase","codeType","accessKey","calculate","connect","_isSplittable","isSplittable","isLrTb","maxRun","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","Execute","executeType","runAt","Extras","Field","bindItems","Ui","TextEdit","textEdit","checkButton","choiceList","borderDims","uiW","uiH","real","lineNoGap","fonts_getMetrics","tabindex","aElement","button","imageEdit","htmlValue","maxChars","numericEdit","captionHeight","inputHeight","Fill","linear","radial","solid","stipple","ggrandpa","propName","altPropName","backgroundColor","Rectangle","addRevocationInfo","appearanceFilter","certificates","digestMethods","encryptionMethods","lockDocument","mdp","reasons","timeStamp","Float","template_Font","baselineShift","fontHorizontalScale","fontVerticalScale","kerningMode","lineThrough","lineThroughPeriod","overlinePeriod","underline","underlinePeriod","usedTypefaces","backgroundClip","verticalAlign","fontKerning","textDecoration","textDecorationStyle","fontStyle","Format","Handler","Hyphenation","excludeAllCaps","excludeInitialCap","hyphenate","pushCharacterCount","remainCharacterCount","wordCharacterCount","Image","aspect","fromBase64","blob","objectFit","createObjectURL","ImageEdit","Integer","Issuers","Items","Keep","intact","KeyUsage","crlSign","dataEncipherment","decipherOnly","digitalSignature","encipherOnly","keyAgreement","keyCertSign","keyEncipherment","nonRepudiation","Line","slope","Linear","startColor","LockDocument","Manifest","Margin","Mdp","signatureType","Medium","imagingBBox","getBBox","long","orientation","short","stock","trayIn","trayOut","Message","NumericEdit","Occur","initial","originalMin","PageSet","Template","Oid","Oids","oid","Overflow","addLeader","addTrailer","blankOrNotBlank","initialNumber","numbered","oddOrEven","pagePosition","medium","occur","numberOfUse","relation","duplexImposition","pageSet","pageSetIndex","pageNumber","parity","Para","orphans","preserve","radixOffset","tabDefault","tabStops","widows","hyphenation","paddingLeft","paddingRight","paddingTop","paddingBottom","tabSize","hyphenatation","PasswordEdit","passwordChar","template_Pattern","endColor","Picture","Proto","barcode","bookend","breakAfter","breakBefore","dateTimeEdit","defaultUi","passwordEdit","rectangle","subjectDN","traverse","variables","Radial","Reason","Reasons","cornerStyle","RefElement","Script","SetProperty","SignData","Signature","Signing","Solid","Speak","disable","priority","Stipple","rate","Subform","allowMacro","mergeMode","restoreState","scope","afterBreakAfter","savedNoLayoutFailure","overflowExtra","overflowNode","SubjectDN","delimiter","kv","SubjectDNs","Submit","embedPDF","textEncoding","xdpContent","baseProfile","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","targetPageArea","hasSomething","hasSomethingCounter","htmlContentAreas","Text","acc","allowRichText","multiLine","vScrollPolicy","Time","TimeStamp","server","ToolTip","Traversal","Traverse","Validate","formatTest","scriptTest","valueName","Variables","TemplateNamespace","attrs","bind_NS_DATASETS","createText","Binder","emptyMerge","_isConsumeData","_mergeMode","_isMatchTemplate","_bindElement","_bindValue","formNode","_findDataByNameToConsume","isValue","global","_setProperties","targetNodes","targetNode","targetParent","Reflect","construct","_bindItems","labels","labelNodes","labelNode","valueNodes","valueNode","label","_bindOccurrences","baseClone","_createOccurrences","currentNumber","nodeClone","_getOccurInfo","_setAndBind","uselessNodes","dataChildren","dataChild","DataHandler","dataset","serialize","storage","storageEntry","CONFIG_NS_ID","Acrobat","acrobat7","autoSave","common","validateApprovalSignatures","submitUrl","Acrobat7","dynamicRender","ADBE_JSConsole","ADBE_JSDebugger","AddSilentPrint","AddViewerPreferences","AdjustData","AdobeExtensionLevel","Agent","AlwaysEmbed","Amd","config_Area","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","window","xsl","excludeNS","Debug","DefaultTypeface","writingScript","Destination","DocumentAssembly","Driver","DuplexOption","DynamicRender","Embed","config_Encrypt","config_Encryption","encryptionLevel","EncryptionLevel","Enforce","Equate","force","to","EquateRange","_unicodeRange","unicodeRange","unicodeRegex","Exclude","ExcludeNS","FlipLabel","config_FontInfo","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","config_Message","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","interactive","linearized","pdfa","producer","renderPolicy","scriptModel","silentPrint","submitFormat","tagged","Pdfa","amd","conformance","includeXDPContent","Permissions","accessibleContent","change","contentCopy","documentAssembly","formFieldFilling","modifyAnnots","plaintextMetadata","printHighQuality","PickTrayByPDFSize","config_Picture","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","config_Script","currentPage","exclude","runScripts","ScriptModel","Severity","SilentPrint","addSilentPrint","printerName","Staple","StartNode","StartPage","SubmitFormat","SubmitUrl","SubsetBelow","SuppressBanner","Tagged","config_Template","startPage","Threshold","To","TemplateCache","maxEntries","Trace","Transform","groupParent","ifEmpty","nameAttr","rename","whitespace","Uri","config_Validate","ValidateApprovalSignatures","ValidationMessaging","Version","VersionControl","outputBelow","sourceAbove","sourceBelow","ViewerPreferences","addViewerPreferences","duplexOption","enforce","numberOfCopies","pageRange","pickTrayByPDFSize","printScaling","WebClient","Whitespace","Window","pair","Xdc","Xdp","packets","Xsl","debug","Zpl","ConfigNamespace","compress","CONNECTION_SET_NS_ID","ConnectionSet","wsdlConnection","xmlConnection","xsdConnection","EffectiveInputPolicy","EffectiveOutputPolicy","Operation","RootElement","SoapAction","SoapAddress","connection_set_Uri","WsdlAddress","WsdlConnection","dataDescription","effectiveInputPolicy","effectiveOutputPolicy","soapAction","soapAddress","wsdlAddress","XmlConnection","XsdConnection","rootElement","ConnectionSetNamespace","DATASETS_NS_ID","datasets_Data","Datasets","DatasetsNamespace","LOCALE_SET_NS_ID","CalendarSymbols","dayNames","eraNames","meridiemNames","monthNames","CurrencySymbol","CurrencySymbols","currencySymbol","DatePattern","DatePatterns","datePattern","DateTimeSymbols","Day","DayNames","abbr","day","Era","EraNames","era","locale_set_Locale","calendarSymbols","currencySymbols","datePatterns","dateTimeSymbols","numberPatterns","numberSymbols","timePatterns","typeFaces","locale_set_LocaleSet","Meridiem","MeridiemNames","meridiem","Month","MonthNames","month","NumberPattern","NumberPatterns","numberPattern","NumberSymbol","NumberSymbols","numberSymbol","TimePattern","TimePatterns","timePattern","TypeFace","TypeFaces","typeFace","LocaleSetNamespace","SIGNATURE_NS_ID","signature_Signature","SignatureNamespace","STYLESHEET_NS_ID","Stylesheet","StylesheetNamespace","XDP_NS_ID","xdp_Xdp","uuid","XdpNamespace","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","mapStyle","styleStr","richText","newValue","SUB_SUPER_SCRIPT_FACTOR","VERTICAL_FACTOR","NoWhites","XhtmlObject","mustPop","pushFont","Body","Br","Html","Li","Ol","Span","Sub","Sup","Ul","XhtmlNamespace","body","br","li","ol","span","sub","sup","ul","NamespaceSetUp","UnknownNamespace","namespaceId","Root","Empty","Builder","rootNameSpace","_namespaceStack","_nsAgnosticLevel","_namespacePrefixes","_namespaces","_nextNsId","_currentNamespace","buildRoot","build","nsPrefix","namespace","prefixes","hasNamespaceDef","_searchNamespace","_addNamespacePrefix","dataTemplate","nsAttrs","xfaAttrs","_getNamespaceToUse","namespaceToUse","hasNamespace","nsAgnostic","isNsAgnostic","nsName","prefixStack","XFAParser","_builder","_globalData","_ids","_current","_whiteRegex","_nbsps","_richText","_mkAttributes","attributeObj","_getNameAndPrefix","attributesObj","XFAFactory","_createDocument","binder","dataHandler","isValid","_createPagesHelper","nextIteration","_createPages","dims","getBoundingBox","getNumPages","setImages","setFonts","missingFonts","appendFonts","getPages","serializeData","getRichTextAsHtml","rc","newRoot","attr","AnnotationFactory","createGlobals","ensureCatalog","ensureDoc","xfaDatasets","annotationGlobals","collectFields","orphanFields","_getPageIndex","ensure","_create","parameters","needAppearances","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","annotRef","generateImages","imagePromises","bitmapId","saveNewAnnotations","promises","annotation","deleted","annotationType","createNewAnnotation","quadPoints","smaskStream","smaskRef","printNewAnnotations","createNewPrintAnnotation","getRgbColor","defaultColor","getPdfColorArray","getQuadPoints","newQuadPoints","x4","y4","getTransformMatrix","setTitle","setContents","setModificationDate","setFlags","setRectangle","setColor","setBorderStyle","setAppearance","setOptionalContent","MK","setBorderAndBackgroundColors","setRotation","_streams","isLocked","isContentLocked","annotationFlags","contentsObj","_contents","hasAppearance","modificationDate","hasOwnCanvas","noRotate","noHTML","isEditable","kidIds","fieldName","_constructFieldName","it","_isOffscreenCanvasSupported","_fallbackFontDict","_needAppearances","_hasFlag","_buildFlags","noView","noPrint","_isViewable","_isPrintable","mustBeViewed","_renderForms","viewable","mustBePrinted","printable","mustBeViewedWhenEditing","isEditing","modifiedIds","_parseStringHelper","setDefaultAppearance","defaultAppearance","_defaultAppearance","defaultAppearanceData","_title","contents","hasFlag","setLineEndings","lineEndings","mk","AnnotationBorderStyle","dictType","setWidth","setStyle","setDashArray","setHorizontalCornerRadius","setVerticalCornerRadius","appearanceStates","normalAppearanceState","oc","loadResources","isUsingOwnCanvas","separateForm","separateCanvas","appearanceDict","hasTextContent","extractTextContent","firstPosition","trimEnd","textPosition","_transformPoint","getFieldObject","strokeColor","fillColor","loopDict","rawWidth","dashArray","horizontalCornerRadius","verticalCornerRadius","forceStyle","allZeros","MarkupAnnotation","rawIRT","inReplyTo","rt","replyType","popupRef","titleObj","setCreationDate","creationDate","_setDefaultAppearance","blendMode","fillAlpha","pointsCallback","MAX_VALUE","MIN_VALUE","pointsArray","mX","MX","mY","MY","formDict","appearanceStream","gsDict","stateDict","annotationRef","createNewAppearanceStream","annotationDict","apRef","createNewDict","newAnnotation","refToReplace","fieldValue","_decodeFormValue","defaultFieldValue","_hasValueFromXFA","getValue","alternativeText","localResources","acroFormResources","appearanceResources","_fieldResources","mergedResources","fieldFlags","readOnly","hasFieldFlag","formValue","renderForms","getBorderAndBackgroundAppearances","_hasText","_getAppearance","_getMKDict","amendSavedDict","setValue","firstDict","getParentToUpdate","newParentDict","originalDict","maybeMK","newRef","AP","_getSaveFieldResources","rotationMatrix","formattedValue","combo","exportValue","displayValue","lineCount","_getFontData","encodedLines","encodingError","encodedString","fakeUnicodeFont","newFont","oldFont","savedDefaultAppearance","_computeFontSize","defaultVPadding","alignment","textAlignment","_getMultilineAppearance","_getCombAppearance","bottomPadding","_renderText","appearanceData","_getTextWidth","numberOfLines","roundWithTwoDigits","textWidth","cachedLines","isTooBig","fsize","_splitLine","createDefaultAppearance","prevInfo","hPadding","vPadding","shiftStr","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","doNotScroll","combWidth","renderedComb","renderedText","lastSpacePosInStringStart","lastSpacePosInStringEnd","startChunk","allText","regex","_m","multiline","password","charLimit","editable","checkedAppearance","uncheckedAppearance","checkBox","radioButton","pushButton","isTooltipOnly","_processCheckBox","_processRadioButton","_processPushButton","buttonValue","savedAppearance","savedMatrix","_saveCheckbox","_saveRadioButton","_getDefaultCheckedAppearance","customAppearance","normalAppearance","asValue","yes","exportValues","otherYes","fieldParent","fieldParentValue","indices","hasIndices","isOptionArray","multiSelect","numItems","multipleSelection","valueIndices","numberOfVisibleLines","firstIndex","minIndex","maxIndex","vpadding","stateModel","parentItem","parentRect","parentFlags","_hasAppearance","parseAppearanceStream","oldAnnotation","user","freetext","da","helv","lineAscent","firstPoint","clipBox","lineCoordinates","interiorColor","borderAdjust","controlPointsDistance","xMid","yMid","xOffset","yOffset","vertices","rawVertices","inkLists","rawInkLists","inkList","outlines","ink","createNewAppearanceStreamForHighlight","appearanceBuffer","outline","c1x","c1y","c2x","c2y","xEnd","buf32","hasAlpha","fillStyle","jpegBufferPromise","convertToBlob","quality","xobjectName","imageName","alphaBuffer","stamp","xobject","DecryptStream","nextChunk","hasMoreData","ARCFourCipher","keyLength","encryptBlock","decryptBlock","calculateMD5","h0","h3","paddedLength","padded","rotateArg","Word64","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","not","lowAdd","highAdd","copyTo","calculateSHA256","rotr","maj","sigmaPrime","littleSigma","h4","h5","h6","h7","calculateSHA512","littleSigmaPrime","mode384","NullCipher","AESBaseCipher","_s","_inv_s","_mix","_mixCol","bufferPosition","_expandKey","cipherKey","_decrypt","_keySize","_cyclesOfRepetition","s0","_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","_hash","combinedLength","combinedArray","CipherTransform","stringCipherConstructor","streamCipherConstructor","StringCipherConstructor","StreamCipherConstructor","encryptString","pad","crypto","getRandomValues","random","CipherTransformFactory","revision","uBytes","perms","passwordLength","pdfAlgorithm","fileId","hashDataSize","keyLengthInBytes","encryptionKey","checkData","derivedKey","isAes","cf","cryptFilter","cfm","algorithm","cfDict","streamCryptoName","handlerDict","ownerBytes","fileIdBytes","passwordBytes","decodedPassword","stmf","strf","eff","createCipherTransform","cipherConstructor","decodeString","DatasetXMLParser","DatasetReader","XRef","_xrefStms","_cacheMap","_pendingRefs","_newPersistentRefNum","_newTemporaryRefNum","_persistentRefsCache","resetNewTemporaryRef","setStartXRef","startXRef","startXRefQueue","trailerDict","indexObjects","readXRef","processXRefTable","tableState","entryNum","streamPos","parserBuf1","parserBuf2","readXRefTable","firstEntryNum","free","uncompressed","processXRefStream","byteWidths","streamState","entryRanges","readXRefStream","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","typeByte","offsetByte","generationByte","readToken","skipUntil","skipped","gEndobjRegExp","gStartxrefRegExp","objRegExp","trailerBytes","startxrefBytes","xrefBytes","bufferStr","trailers","xrefStms","contentLength","updateEntries","xrefTagOffset","xrefStm","trailerDicts","trailerError","isEncrypted","_generationFallback","validPagesDict","pagesDict","pagesCount","startXRefParsedCache","lastXRefStreamPos","getEntry","xrefEntry","fetchUncompressed","fetchCompressed","tableOffset","LETTER_SIZE_MEDIABOX","Page","globalIdFactory","xfaFactory","resourcesPromise","idCounters","_localIdFactory","_getInheritableProperty","_getBoundingBox","xfaData","box","mediaBox","cropBox","userUnit","_onSubStreamError","getContentStream","deletedAnnotations","existingAnnotations","partialEvaluator","annotationsArray","deletedRef","_parsedAnnotations","contentStreamPromise","newAnnotsByPage","newAnnots","newAnnotationsPromise","annotationGlobalsPromise","missingBitmaps","annotationWithBitmaps","pageListPromise","contentStream","transparency","pageOpList","newAnnotations","findIndex","intentAny","intentDisplay","intentPrint","opListPromises","opLists","langPromise","getStructTree","_parseStructTree","getAnnotationsData","annotationsData","textContentPromises","isVisible","annots","fieldObjects","annotationPromises","sortedAnnotations","popupAnnotations","widgetAnnotations","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","backwards","signatureEnd","PDFDocument","_pagePromises","_version","_globalIdFactory","docId","linearization","startXRefLength","checkHeader","parseStartXRef","_hasOnlyDocumentSignatures","recursionDepth","isSignature","isInvisible","_xfaStreams","enableXfa","formInfo","hasXfa","hasAcroForm","isPureXfa","htmlForXfa","loadXfaImages","xfaImagesDict","objectLoader","loadXfaFonts","serializeXfaData","hasFields","hasSignatures","hasOnlyDocumentSignatures","documentInfo","docInfo","PDFFormatVersion","Language","EncryptFilterName","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","IsSignaturesPresent","infoDict","customValue","Custom","fingerprints","EMPTY_FINGERPRINT","hashOriginal","hashModified","_getLinearizationPage","cachedPromise","checkFirstPage","checkLastPage","pagesTree","reasonAll","fieldRef","visitedRefs","partName","allFields","fieldPromises","allPromises","hasJSActions","_parseHasJSActions","catalogJsActions","fieldObject","calculationOrderIds","calculationOrder","BasePdfManager","_docBaseUrl","parseDocBaseUrl","_docId","_password","pdfDocument","ensureXRef","requestLoadedStream","sendProgressiveData","updatePassword","terminate","LocalPdfManager","_loadedStreamPromise","NetworkPdfManager","streamManager","onFn","wrapReason","MessageHandler","AbortController","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","addEventListener","signal","postMessage","ah","sendWithStream","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","pull","pullCapability","cancel","cancelCapability","isCancelled","lastDesiredSize","sinkCapability","onPull","onCancel","streamController","dataReason","allSettled","destroy","writeObject","writeDict","writeStream","writeArray","writeValue","isFilterZeroFlateDecode","CompressionStream","Response","newFilter","newParams","writeInt","writeString","getIndexes","newRefs","indexes","computeIDs","baseOffset","xrefInfo","fileIds","md5","filesize","md5Buffer","md5BufferLen","computeMD5","incrementalUpdate","originalData","xfaDatasetsRef","hasXfaDatasetsEntry","useXrefStream","newXfa","updateAcroform","xml","nodePath","writeXFADataForAcroform","xfaDataStream","updateXFA","refForXrefTable","infoRef","encryptRef","getTrailerDict","writeChanges","xrefTableData","maxOffset","maxGen","sizes","structSize","objOffset","getXRefStreamTable","indexesPosition","getXRefTable","PDFWorkerStream","_msgHandler","_contentLength","_fullRequestReader","_rangeRequestReaders","getFullReader","PDFWorkerStreamReader","PDFWorkerStreamRangeReader","_isRangeSupported","_isStreamingSupported","readableStream","_reader","getReader","_headersReady","isRangeSupported","headersReady","WorkerTask","terminated","_capability","finished","finish","initializeFromPort","setup","port","testMessageProcessed","createDocumentHandler","docParams","cancelXHRs","WorkerTasks","apiVersion","workerVersion","enumerableProperties","workerHandlerName","startWorkerTask","finishWorkerTask","loadDocument","refStr","globalPromises","_structTreeRoot","newAnnotationPromises","newXrefInfo","infoObj","operatorListInfo","waitOn","cleanupPromise","onSuccess","doc","pdfInfo","onFailure","pdfManagerReady","pdfManagerArgs","pdfStream","fullRequest","pdfManagerCapability","newPdfManager","cachedChunks","pdfFile","getPdfManager","setupDoc"],"sourceRoot":""}